From f2da86cbc04381768dd42dc6af8aa4f947f97ff0 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 3 Oct 2022 23:20:37 -0400 Subject: [PATCH 001/146] add Directory service skeleton --- services/Directory.ts | 27 +++++++++++++++++++++++++++ services/index.ts | 1 + 2 files changed, 28 insertions(+) create mode 100644 services/Directory.ts diff --git a/services/Directory.ts b/services/Directory.ts new file mode 100644 index 0000000..629f461 --- /dev/null +++ b/services/Directory.ts @@ -0,0 +1,27 @@ +import { strict as assert } from 'assert'; +import { ReadContext } from '../utils/ReadContext'; +import { WriteContext } from '../utils/WriteContext'; +import { Service } from './Service'; +import type { ServiceMessage } from '../types'; +import { Logger } from '../LogEmitter'; + + + +export interface DirectoryData { + +} + +export class Directory extends Service { + async init() { + + } + + protected parseData(p_ctx: ReadContext): ServiceMessage { + + return + } + + protected messageHandler(_: ServiceMessage): void { + + } +} diff --git a/services/index.ts b/services/index.ts index d54d535..4858ecb 100644 --- a/services/index.ts +++ b/services/index.ts @@ -1,3 +1,4 @@ export * from './FileTransfer'; export * from './Service'; export * from './StateMap'; +export * from './Directory'; From 3368a627f5b28b7cf1706daec0c8b9a04a5a2104 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Oct 2022 16:15:09 -0400 Subject: [PATCH 002/146] Receive response on DirectorySvc --- StageLinq/index.ts | 7 +- network/NetworkDevice.ts | 36 ++++++++++ network/StageLinqDevices.ts | 70 +++++++++++++++--- network/announce.ts | 3 +- services/Directory.ts | 138 ++++++++++++++++++++++++++++++++++-- services/Service.ts | 107 +++++++++++++++++++++++++--- types/tokens.ts | 6 +- utils/tcp.ts | 50 ++++++++++++- 8 files changed, 387 insertions(+), 30 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6673a6c..55203b4 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -32,10 +32,15 @@ export class StageLinq extends EventEmitter { */ async connect() { this.listener = new StageLinqListener(); + const address = await this.devices.initialize(); const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); + + msg.port = address.port; await announce(msg); + Logger.warn(msg); this.listener.listenForDevices(async (connectionInfo) => { - await this.devices.handleDevice(connectionInfo); + //await this.devices.handleDevice(connectionInfo); + //Logger.warn(connectionInfo); }); } diff --git a/network/NetworkDevice.ts b/network/NetworkDevice.ts index a672d4b..2d615d9 100644 --- a/network/NetworkDevice.ts +++ b/network/NetworkDevice.ts @@ -8,15 +8,19 @@ import * as FileType from 'file-type'; import * as fs from 'fs'; import * as services from '../services'; import * as tcp from '../utils/tcp'; +import { Server, Socket, AddressInfo } from 'net'; +import { PromiseSocket } from 'promise-socket'; import Database = require('better-sqlite3'); + interface SourceAndTrackPath { source: string; trackPath: string; } export class NetworkDevice { + public listenPort:number = 0; private connection: tcp.Connection = null; //private source: string = null; private serviceRequestAllowed = false; @@ -39,6 +43,8 @@ export class NetworkDevice { constructor(info: ConnectionInfo) { this.connectionInfo = info; + this.listen(); + } private get address() { @@ -52,6 +58,36 @@ export class NetworkDevice { /////////////////////////////////////////////////////////////////////////// // Connect / Disconnect + async listen(): Promise { + const server = new Server + server.listen(); + + server.on('listening',() => { + const { port } = server.address() as AddressInfo; + this.listenPort = port; + Logger.warn(`server listening on port ${port}`); + }) + + server.on('error', err =>{ + //throw new error err + throw new Error(`Server Error ${err}`); + }); + server.on('connection', socket =>{ + const promiseSocket = new PromiseSocket(socket); + //promiseSocket. + this.connection = promiseSocket; + socket.on('data', (p_message: Buffer) => { + this.messageHandler(p_message); + + }); + }); + + //const { port } = server.address() as AddressInfo; + //this.listenPort = port; + + + } + async connect(): Promise { const info = this.connectionInfo; Logger.debug(`Attempting to connect to ${info.address}:${info.port}`) diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 4d38847..f69931f 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -3,9 +3,13 @@ import { EventEmitter } from 'events'; import { NetworkDevice } from '.'; import { Player } from '../devices/Player'; import { sleep } from '../utils'; -import { FileTransfer, StateData, StateMap } from '../services'; +import { Directory, FileTransfer, StateData, StateMap } from '../services'; import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; +import * as services from '../services'; +import { throws } from 'assert'; +import { dir } from 'console'; +import { AddressInfo } from 'net'; enum ConnectionStatus { CONNECTING, CONNECTED, FAILED }; @@ -34,21 +38,22 @@ export declare interface StageLinqDevices { * StageLinq network. */ export class StageLinqDevices extends EventEmitter { - + public directoryPort: number = 0; + private services: Record> = {}; private _databases: Databases; private devices: Map = new Map(); private discoveryStatus: Map = new Map(); private options: StageLinqOptions; private deviceWatchTimeout: NodeJS.Timeout | null = null; - private stateMapCallback: { connectionInfo: ConnectionInfo, networkDevice: NetworkDevice }[] = []; + //private stateMapCallback: { connectionInfo: ConnectionInfo, networkDevice: NetworkDevice }[] = []; constructor(options: StageLinqOptions) { super(); this.options = options; this._databases = new Databases(); - this.waitForAllDevices = this.waitForAllDevices.bind(this); - this.waitForAllDevices(); + // this.waitForAllDevices = this.waitForAllDevices.bind(this); + //this.waitForAllDevices(); } /** @@ -56,6 +61,52 @@ export class StageLinqDevices extends EventEmitter { * * @param connectionInfo Connection info. */ + + async initialize(): Promise { + const directory = new Directory()//await this.startServiceListener(Directory); + const serverInfo = await directory.listen() + await sleep(500); + return serverInfo + this.services[directory.name] = directory + //this.services + Logger.warn(this.services); + /*await this.startServiceListener(Directory); + this.services['Directory'].on('listening', (serverInfo) =>{ + this.directoryPort = serverInfo.port + return + }); + */ + } + + // Factory function + async startServiceListener>(ctor: { + new (): T; + }): Promise { + //assert(this.connection); + // FIXME: find out why we need these waits before connecting to a service + await sleep(500); + + const serviceName = ctor.name; + + //if (this.services[serviceName]) { + // return this.services[serviceName] as T; + //} + + //assert(this.servicePorts.hasOwnProperty(serviceName)); + //assert(this.servicePorts[serviceName] > 0); + //const port = this.servicePorts[serviceName]; + + const service = new ctor(); + + await service.listen(); + //service.on('listening', (serverInfo) =>{ + // this.directoryPort = serverInfo.port; + this.services[serviceName] = service; + //}); + return service; + + } + async handleDevice(connectionInfo: ConnectionInfo) { Logger.silly(this.showDiscoveryStatus(connectionInfo)); @@ -66,7 +117,9 @@ export class StageLinqDevices extends EventEmitter { || this.isFailed(connectionInfo) || this.isIgnored(connectionInfo)) return; - this.connectToDevice(connectionInfo); + //this.connectToDevice(connectionInfo); + const networkDevice = new NetworkDevice(connectionInfo); + networkDevice.listen(); } /** @@ -113,6 +166,7 @@ export class StageLinqDevices extends EventEmitter { * have their databases loaded before initializing the StateMap. * */ + /* private waitForAllDevices() { Logger.log('Start watching for devices ...'); this.deviceWatchTimeout = setInterval(async () => { @@ -136,7 +190,7 @@ export class StageLinqDevices extends EventEmitter { } }, WAIT_FOR_DEVICES_TIMEOUT_MS); } - +*/ /** * Attempt to connect to a device. Retry if necessary. * @@ -174,7 +228,7 @@ export class StageLinqDevices extends EventEmitter { // ConnectionStatus.CONNECTED // Append to the list of states we need to setup later. - this.stateMapCallback.push({ connectionInfo, networkDevice }); + //this.stateMapCallback.push({ connectionInfo, networkDevice }); // Mark this device as connected. this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.CONNECTED); diff --git a/network/announce.ts b/network/announce.ts index ac88131..5d6abcd 100644 --- a/network/announce.ts +++ b/network/announce.ts @@ -116,12 +116,13 @@ export interface DiscoveryMessageOptions { version: string; source: string; token: Uint8Array; + port?: number }; export function createDiscoveryMessage(action: string, discoveryMessageOptions: DiscoveryMessageOptions) { const msg: DiscoveryMessage = { action: action, - port: 0, + port: discoveryMessageOptions.port || 0, software: { name: discoveryMessageOptions.name, version: discoveryMessageOptions.version diff --git a/services/Directory.ts b/services/Directory.ts index 629f461..c46f93e 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -2,26 +2,150 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -import type { ServiceMessage } from '../types'; +import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens } from '../types'; import { Logger } from '../LogEmitter'; +import { sleep } from '../utils/sleep'; +import { Socket, AddressInfo } from 'net'; export interface DirectoryData { - + deviceId: string; + servicePorts: ServicePorts; + } export class Directory extends Service { + public timeAlive: number; + public servicePorts: ServicePorts; + public serviceRequestAllowed: boolean = false; + async init() { } - protected parseData(p_ctx: ReadContext): ServiceMessage { - - return + protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + + + let servicePorts: ServicePorts = {}; + let token: string = null; + while (ctx.isEOF() === false) { + const id = ctx.readUInt32(); + //const deviceToken = ctx.read(16).toString('hex'); + if (!token){ + token = ctx.read(16).toString(); + this.connections.set(token.toString(),socket) + } else { + ctx.seek(16); + } + //ctx.seek(16); + console.log(MessageId[id]) + switch (id) { + case MessageId.TimeStamp: + ctx.seek(16); + // const secondToken = ctx.read(16); // should be 00.. + // we _shouldn't_ be receiving anything but blank tokens in the 2nd field + // assert(secondToken.every((x) => x === 0)); + + // Time Alive is in nanoseconds; convert back to seconds + this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); + // this.sendTimeStampMsg(deviceToken, Tokens.SoundSwitch); + break; + case MessageId.ServicesAnnouncement: + const service = ctx.readNetworkStringUTF16(); + const port = ctx.readUInt16(); + servicePorts[service] = port; + this.servicePorts[service] = port; + break; + case MessageId.ServicesRequest: + const serviceRequest = ctx.readRemaining(); + console.log(token) + //this.sendServiceRequest(socket); + this.sendServiceAnnouncement(socket); + this.sendServiceRequest(socket); + + + //this.serviceRequestAllowed = true; + //try { + // this.requestAllServicePorts(socket); + //} catch (err) { + // console.error(err) + // } + + break; + default: + assert.fail(`NetworkDevice Unhandled message id '${id}'`); + } + } + const directoryMessage: DirectoryData = { + deviceId: token, + servicePorts: servicePorts, + } + const directoryData = { + id: 69, + message: directoryMessage + } + return directoryData + } + + protected messageHandler(directoryMsg: ServiceMessage): void { + //const ctx = new ReadContext(p_message.buffer, false); + console.log(directoryMsg.message); + } + + private async sendServiceAnnouncement(socket: Socket): Promise { + await sleep(250); + const ctx = new WriteContext(); + ctx.writeUInt32(MessageId.ServicesAnnouncement); + ctx.write(Tokens.Listen); + ctx.writeNetworkStringUTF16('DirectoryService'); + ctx.writeUInt16(this.serverInfo.port); + await socket.write(ctx.getBuffer()); + console.log(`sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`) +} + + + private async sendServiceRequest(socket: Socket): Promise { + await sleep(1500); + const ctx = new WriteContext(); + ctx.writeUInt32(MessageId.ServicesRequest); + ctx.write(Tokens.Listen); + await socket.write(ctx.getBuffer()); + console.log(`sent ServiceRequest to ${socket.remoteAddress}:${socket.remotePort}`) } - protected messageHandler(_: ServiceMessage): void { - + private async requestAllServicePorts(socket: Socket): Promise { + //assert(this.connection); + + return new Promise(async (resolve, reject) => { + setTimeout(() => { + reject(new Error(`Failed to requestServices for ` )); + }, LISTEN_TIMEOUT); + + // Wait for serviceRequestAllowed + + // FIXME: Refactor into message writer helper class + const ctx = new WriteContext(); + ctx.writeUInt32(MessageId.ServicesRequest); + ctx.write(Tokens.Listen); + const written = await socket.write(ctx.getBuffer()); + //assert(written === ctx.tell()); + + while (true) { + // FIXME: How to determine when all services have been announced? + if (Object.keys(this.servicePorts).length > 3) { + Logger.debug(`Discovered the following services on `); + for (const [name, port] of Object.entries(this.servicePorts)) { + Logger.debug(`\tport: ${port} => ${name}`); + } + resolve(); + break; + } + await sleep(250); + } + }); } + } + + diff --git a/services/Service.ts b/services/Service.ts index 18c101c..abde9fe 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -7,23 +7,110 @@ import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import * as tcp from '../utils/tcp'; -import type { ServiceMessage } from '../types'; +import {Server, Socket, AddressInfo} from 'net'; +import * as net from 'net'; +import type { ServiceMessage, IpAddress } from '../types'; + +export declare interface ServiceDevice { + on(event: 'listening', listener: (address: AddressInfo) => void): this; + on(event: 'connected', listener: (socket: Socket) => void): this; + //on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; + //on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; + //on(event: 'message', listener: (connectionInfo: ConnectionInfo, message: ServiceMessage) => void): this; + //on(event: 'ready', listener: () => void): this; + } export abstract class Service extends EventEmitter { private address: string; private port: number; public readonly name: string; + public serverInfo: AddressInfo; + public serverStatus: string; + public connections: Map = new Map(); protected controller: NetworkDevice; - protected connection: tcp.Connection = null; + //protected connection: tcp.Connection = null; + protected connection: Socket = null; - constructor(p_address: string, p_port: number, p_controller: NetworkDevice) { + constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { super(); - this.address = p_address; - this.port = p_port; + this.address = p_address || null; + this.port = p_port || null; this.name = this.constructor.name; - this.controller = p_controller; + this.controller = p_controller || null; } + async createServer(serviceName: string): Promise { + return await new Promise((resolve, reject) => { + let queue: Buffer = null; + const server = net.createServer((socket) => { + socket.on('error', (err) => { + reject(err); + }); + socket.on('data', async p_data => { + //console.log(`Received data on ${serviceName}!!`) + let buffer: Buffer = null; + if (queue && queue.length > 0) { + buffer = Buffer.concat([queue, p_data]); + } else { + buffer = p_data; + } + + // FIXME: Clean up this arraybuffer confusion mess + const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + const ctx = new ReadContext(arrayBuffer, false); + queue = null; + //const ctx = new ReadContext(data, false); + this.parseData(ctx, socket) + }); + + }).listen(0, '0.0.0.0', () => { + this.serverInfo = server.address() as net.AddressInfo; + //console.log(address,port); + console.log(`opened ${serviceName} server on ${this.serverInfo.port}`); + //this.subConnection[serviceName] = { + // socket: server, + // port: port + //} + resolve(server); + }); + }); + } + + async listen(): Promise { + const server = await this.createServer('test') + return server.address() as net.AddressInfo; + + + /* + const server = new Server + let queue: Buffer = null; + server.listen(); + server.on('error', (err) =>{ + //throw new error err + throw new Error(`Server Error ${err}`); + }); + server.on('listen', () => { + this.serverStatus = 'listening' + this.serverInfo = server.address() as AddressInfo; + this.emit('listening', this.serverInfo); + }); + server.on('connection', (socket: Socket) => { + //resolve(socket) + this.connection = socket; + this.serverStatus = 'Connected'; + this.emit('connected', this.connection); + }); + server.on('data', (p_data: Buffer) =>{ + const ctx = new ReadContext(p_data, false); + this.parseData(ctx); + }); + + */ + + } + + +/* async connect(): Promise { assert(!this.connection); this.connection = await tcp.connect(this.address, this.port); @@ -78,14 +165,14 @@ export abstract class Service extends EventEmitter { ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.SoundSwitch); ctx.writeNetworkStringUTF16(this.name); - ctx.writeUInt16(this.connection.socket.localPort); // FIXME: In the Go code this is the local TCP port, but 0 or any other 16 bit value seems to work fine as well + ctx.writeUInt16(this.connection.localPort); // FIXME: In the Go code this is the local TCP port, but 0 or any other 16 bit value seems to work fine as well await this.write(ctx); await this.init(); Logger.debug(`Connected to service '${this.name}' at port ${this.port}`); } - +*/ disconnect() { assert(this.connection); try { @@ -119,7 +206,7 @@ export abstract class Service extends EventEmitter { // Logger.info("SEND"); //hex(buf); const written = await this.connection.write(buf); - assert(written === buf.byteLength); + //assert(written === buf.byteLength); return written; } @@ -138,7 +225,7 @@ export abstract class Service extends EventEmitter { assert.fail('Implement this'); } - protected abstract parseData(p_ctx: ReadContext): ServiceMessage; + protected abstract parseData(p_ctx: ReadContext, socket?: Socket): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; } diff --git a/types/tokens.ts b/types/tokens.ts index 393ece9..102bb5d 100644 --- a/types/tokens.ts +++ b/types/tokens.ts @@ -1,10 +1,12 @@ import { DiscoveryMessageOptions } from '../network'; +//export const CLIENT_TOKEN = new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]); export const Tokens = { SoundSwitch: new Uint8Array([82, 253, 252, 7, 33, 130, 101, 79, 22, 63, 95, 15, 154, 98, 29, 114]), Sc6000_1: new Uint8Array([ 130, 139, 235, 2, 218, 31, 78, 104, 166, 175, 176, 177, 103, 234, 240, 162 ]), Sc6000_2: new Uint8Array([ 38, 210, 56, 103, 28, 214, 78, 63, 128, 161, 17, 130, 106, 196, 17, 32 ]), - Resolume: new Uint8Array([ 136, 250, 32, 153, 172, 122, 79, 63, 188, 22, 169, 149, 219, 218, 42, 66 ]) + Resolume: new Uint8Array([ 136, 250, 32, 153, 172, 122, 79, 63, 188, 22, 169, 149, 219, 218, 42, 66 ]), + Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) } export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { @@ -12,7 +14,7 @@ export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { name: 'nowplaying', version: '2.2.0', source: 'np2', - token: Tokens.SoundSwitch + token: Tokens.Listen }, Sc6000_1: { diff --git a/utils/tcp.ts b/utils/tcp.ts index 635862a..e9b3fda 100644 --- a/utils/tcp.ts +++ b/utils/tcp.ts @@ -1,4 +1,5 @@ -import { Socket as TCPSocket } from 'net'; +import { Socket as TCPSocket} from 'net'; +import * as net from 'net'; import { PromiseSocket } from 'promise-socket'; import { CONNECT_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; @@ -15,3 +16,50 @@ export async function connect(p_ip: string, p_port: number): Promise Logger.debug(`TCP connection to '${p_ip}:${p_port}' local port: ${promiseSocket.socket.localPort}`); return promiseSocket; } + + + export async function createServer(p_name: string): Promise { + return await new Promise((resolve, reject) => { + const server = new net.Server; + server.listen(); + server.on('error', err =>{ + reject(err) + //throw new Error(`Server Error ${err}`); + }) + server.on('connection', socket =>{ + resolve(socket) + }) + }); + } + +/* + export async function createServer(p_name: string): Promise { + return await new Promise((resolve, reject) => { + const server = new TCPServer(); + server.((socket) => { + socket.on('error', (err) => { + reject(err); + }); + socket.on('data', async data => { + //console.log(`Received data on ${serviceName}!!`) + const ctx = new ReadContext(data.buffer, false); + const id = ctx.readUInt32(); + //ctx.rewind(); + const buff = ctx.readRemaining(); + + console.log(serviceName, MessageId[id], buff) + //this.newMessageHandler(data, serviceName); + }); + + }).listen(0, '0.0.0.0', () => { + const { address, port } = server.address() as net.AddressInfo; + + this.subConnection[serviceName] = { + socket: server, + port: port + } + resolve(server); + }); + }); + } +*/ \ No newline at end of file From 576c60e0ca8660a995cfe86a2d215895c2f67f5b Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Oct 2022 15:26:10 -0400 Subject: [PATCH 003/146] working listen mode --- .gitignore | 1 + StageLinq/index.ts | 9 ++- network/StageLinqDevices.ts | 50 +++++++++++--- services/Directory.ts | 82 ++++++++++++++++------ services/Service.ts | 21 ++++-- services/StateMap.ts | 126 +++++++++++++++++++++------------- services/TimeSync.ts | 131 ++++++++++++++++++++++++++++++++++++ services/index.ts | 1 + types/tokens.ts | 5 ++ 9 files changed, 340 insertions(+), 86 deletions(-) create mode 100644 services/TimeSync.ts diff --git a/.gitignore b/.gitignore index 93c9c0c..6f350bb 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,4 @@ typings/ # TernJS port file .tern-port +scratch.ts diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 55203b4..4da7ec6 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -3,6 +3,7 @@ import { EventEmitter } from 'events'; import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; import { Action, ActingAsDevice, StageLinqOptions } from '../types'; +import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -37,11 +38,13 @@ export class StageLinq extends EventEmitter { msg.port = address.port; await announce(msg); - Logger.warn(msg); - this.listener.listenForDevices(async (connectionInfo) => { + //Logger.warn(msg); + //this.listener.listenForDevices(async (connectionInfo) => { //await this.devices.handleDevice(connectionInfo); //Logger.warn(connectionInfo); - }); + //}); + await sleep(1500); + //await this.devices. } /** diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index f69931f..3faeef0 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'events'; import { NetworkDevice } from '.'; import { Player } from '../devices/Player'; import { sleep } from '../utils'; -import { Directory, FileTransfer, StateData, StateMap } from '../services'; +import { Directory, FileTransfer, StateData, StateMap, TimeSynchronization } from '../services'; import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; @@ -18,6 +18,11 @@ interface StageLinqDevice { fileTransferService: FileTransfer; }; +export interface ServiceInitMessage { + parent: InstanceType; + services?: Map; +} + // This time needs to be just long enough for discovery messages from all to // come through. const WAIT_FOR_DEVICES_TIMEOUT_MS = 3000; @@ -42,6 +47,7 @@ export class StageLinqDevices extends EventEmitter { private services: Record> = {}; private _databases: Databases; private devices: Map = new Map(); + private services2: Map> = new Map(); private discoveryStatus: Map = new Map(); private options: StageLinqOptions; @@ -63,13 +69,31 @@ export class StageLinqDevices extends EventEmitter { */ async initialize(): Promise { - const directory = new Directory()//await this.startServiceListener(Directory); - const serverInfo = await directory.listen() + let initMsg: ServiceInitMessage = { + parent: this, + } + + initMsg.services = new Map(); + //const timeSync = new TimeSynchronization(initMsg); + //const timeSyncInfo = await timeSync.listen(); + //initMsg.services.set('TimeSynchronization', timeSyncInfo.port); + + const stateMap = new StateMap(initMsg); + const stateMapInfo = await stateMap.listen(); + initMsg.services.set('StateMap', stateMapInfo.port); + + const directory = new Directory(initMsg);//await this.startServiceListener(Directory); + const serverInfo = await directory.listen(); + initMsg.services.set('DirectoryService', serverInfo.port); + await sleep(500); - return serverInfo - this.services[directory.name] = directory + + this.services2.set("StateMap", stateMap); + this.services2.set("DirectoryService", directory); + //this.services[timeSync.name] = timeSync //this.services - Logger.warn(this.services); + //Logger.warn(this.services); + return serverInfo /*await this.startServiceListener(Directory); this.services['Directory'].on('listening', (serverInfo) =>{ this.directoryPort = serverInfo.port @@ -125,10 +149,16 @@ export class StageLinqDevices extends EventEmitter { /** * Disconnect from all connected devices */ - disconnectAll() { - for (const device of this.devices.values()) { - device.networkDevice.disconnect(); - } + async disconnectAll() { + //for (const device of this.devices.values()) { + // device.networkDevice.disconnect(); + //} + console.warn('closing servers') + let StateMap = this.services2.get('StateMap'); + let Directory = this.services2.get('DirectoryService'); + await StateMap.server.close(); + await Directory.server.close(); + } get databases() { diff --git a/services/Directory.ts b/services/Directory.ts index c46f93e..8a6180d 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -2,6 +2,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; +import { ServiceInitMessage } from '../network'; import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens } from '../types'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils/sleep'; @@ -19,27 +20,35 @@ export class Directory extends Service { public timeAlive: number; public servicePorts: ServicePorts; public serviceRequestAllowed: boolean = false; + public services: Map; + constructor(p_initMsg:ServiceInitMessage) { + super(p_initMsg); + this.services = p_initMsg.services; + } + async init() { } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - + let deviceId: string = ""; let servicePorts: ServicePorts = {}; - let token: string = null; + //let token: string = null; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); - //const deviceToken = ctx.read(16).toString('hex'); - if (!token){ - token = ctx.read(16).toString(); - this.connections.set(token.toString(),socket) - } else { - ctx.seek(16); - } + const tokenArray = ctx.read(16); + deviceId = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(tokenArray).toString('hex')).splice(1).join('-'); + //if (!token){ + // token = ctx.read(16).toString(); + this.connections.set(deviceId, socket) + //} else { + // ctx.seek(16); + //} //ctx.seek(16); - console.log(MessageId[id]) + //console.log(MessageId[id]) switch (id) { case MessageId.TimeStamp: ctx.seek(16); @@ -54,15 +63,16 @@ export class Directory extends Service { case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); const port = ctx.readUInt16(); + console.log('received ',service,port) servicePorts[service] = port; this.servicePorts[service] = port; break; case MessageId.ServicesRequest: const serviceRequest = ctx.readRemaining(); - console.log(token) + console.log(deviceId,id,serviceRequest); //this.sendServiceRequest(socket); this.sendServiceAnnouncement(socket); - this.sendServiceRequest(socket); + //this.sendServiceRequest(socket); //this.serviceRequestAllowed = true; @@ -78,7 +88,7 @@ export class Directory extends Service { } } const directoryMessage: DirectoryData = { - deviceId: token, + deviceId: deviceId, servicePorts: servicePorts, } const directoryData = { @@ -90,22 +100,54 @@ export class Directory extends Service { protected messageHandler(directoryMsg: ServiceMessage): void { //const ctx = new ReadContext(p_message.buffer, false); - console.log(directoryMsg.message); + //console.log(directoryMsg.message); } - private async sendServiceAnnouncement(socket: Socket): Promise { + + //socket.write(wtx3.getBuffer()); + + private async sendTimeStampReply(socket: Socket): Promise { + await sleep(250); + //const ctx = new WriteContext(); + + + const wtx3 = new WriteContext(); + wtx3.writeUInt32(MessageId.TimeStamp); + wtx3.write(Tokens.Listen); + wtx3.write(new Uint8Array(16)); + wtx3.writeUInt64(BigInt(new Date().getTime()-this.timeConnected)); + + + //ctx.writeUInt32(MessageId.ServicesAnnouncement); + //ctx.write(Tokens.Listen); + //ctx.writeNetworkStringUTF16('DirectoryService'); + //ctx.writeUInt16(this.serverInfo.port); + // await socket.write(wtx3.getBuffer()); + //console.log(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) +} + + private async sendServiceAnnouncement(socket?: Socket): Promise { + let svc = this.services.entries(); + //console.warn(svc); await sleep(250); const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesAnnouncement); + ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - ctx.writeNetworkStringUTF16('DirectoryService'); - ctx.writeUInt16(this.serverInfo.port); + for (let i=0; i { + private async sendServiceRequest(socket?: Socket): Promise { await sleep(1500); const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); diff --git a/services/Service.ts b/services/Service.ts index abde9fe..d41cbea 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -3,6 +3,7 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { MessageId, MESSAGE_TIMEOUT, Tokens } from '../types'; import { NetworkDevice } from '../network/NetworkDevice'; +import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -30,13 +31,13 @@ export abstract class Service extends EventEmitter { protected controller: NetworkDevice; //protected connection: tcp.Connection = null; protected connection: Socket = null; + public server: Server = null; + protected parent: InstanceType; - constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { + //constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { + constructor(p_initMsg:ServiceInitMessage) { super(); - this.address = p_address || null; - this.port = p_port || null; - this.name = this.constructor.name; - this.controller = p_controller || null; + this.parent = p_initMsg.parent; } async createServer(serviceName: string): Promise { @@ -60,7 +61,8 @@ export abstract class Service extends EventEmitter { const ctx = new ReadContext(arrayBuffer, false); queue = null; //const ctx = new ReadContext(data, false); - this.parseData(ctx, socket) + const parsedData = await this.parseData(ctx, socket) + this.messageHandler(parsedData); }); }).listen(0, '0.0.0.0', () => { @@ -77,7 +79,8 @@ export abstract class Service extends EventEmitter { } async listen(): Promise { - const server = await this.createServer('test') + const server = await this.createServer(this.name) + this.server = server; return server.address() as net.AddressInfo; @@ -184,6 +187,10 @@ export abstract class Service extends EventEmitter { } } + //closeServer() { + + //} + async waitForMessage(p_messageId: number): Promise { return await new Promise((resolve, reject) => { const listener = (p_message: ServiceMessage) => { diff --git a/services/StateMap.ts b/services/StateMap.ts index 91f069d..1f11254 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -4,6 +4,9 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; import type { ServiceMessage } from '../types'; +import { deviceIdFromBuff } from '../types'; +import { Socket, AddressInfo } from 'net'; +import { Console } from 'console'; // import { Logger } from '../LogEmitter'; export const States = [ @@ -11,7 +14,7 @@ export const States = [ StageLinqValue.MixerCH1faderPosition, StageLinqValue.MixerCH2faderPosition, StageLinqValue.MixerCrossfaderPosition, - +/* // Decks StageLinqValue.EngineDeck1Play, StageLinqValue.EngineDeck1PlayState, @@ -60,19 +63,23 @@ export const States = [ StageLinqValue.EngineDeck4TrackTrackName, StageLinqValue.EngineDeck4CurrentBPM, StageLinqValue.EngineDeck4ExternalMixerVolume, - +*/ StageLinqValue.ClientPreferencesLayerA, StageLinqValue.ClientPreferencesPlayer, StageLinqValue.ClientPreferencesPlayerJogColorA, StageLinqValue.ClientPreferencesPlayerJogColorB, StageLinqValue.EngineDeck1DeckIsMaster, StageLinqValue.EngineDeck2DeckIsMaster, + StageLinqValue.EngineMasterMasterTempo, + StageLinqValue.EngineSyncNetworkMasterStatus, StageLinqValue.MixerChannelAssignment1, StageLinqValue.MixerChannelAssignment2, StageLinqValue.MixerChannelAssignment3, StageLinqValue.MixerChannelAssignment4, + + StageLinqValue.MixerNumberOfChannels, ]; @@ -94,57 +101,83 @@ export interface StateData { export class StateMap extends Service { async init() { + // for (const state of States) { + // await this.subscribeState(state, 0); + // } + } + + public async subscribe(socket: Socket) { for (const state of States) { - await this.subscribeState(state, 0); + await this.subscribeState(state, 0, socket); } } - protected parseData(p_ctx: ReadContext): ServiceMessage { - const marker = p_ctx.getString(4); - assert(marker === MAGIC_MARKER); - - const type = p_ctx.readUInt32(); - switch (type) { - case MAGIC_MARKER_JSON: { - const name = p_ctx.readNetworkStringUTF16(); - const json = JSON.parse(p_ctx.readNetworkStringUTF16()); - return { - id: MAGIC_MARKER_JSON, - message: { - name: name, - json: json, - }, - }; + protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { + const length = p_ctx.readUInt32(); + + //console.warn(length); + //assert(marker === MAGIC_MARKER); + if (length === 0) { + const token = p_ctx.read(16); + const svcName = p_ctx.readNetworkStringUTF16(); + const svcPort = p_ctx.readUInt16(); + console.log(deviceIdFromBuff(token), svcName, svcPort) + this.subscribe(socket); + } else { + const msg = p_ctx.readRemainingAsNewBuffer(); + //console.warn(msg); + p_ctx.rewind(); + p_ctx.seek(4); + const marker = p_ctx.getString(4); + const type = p_ctx.readUInt32(); + //console.warn(marker, type); + switch (type) { + case MAGIC_MARKER_JSON: { + const name = p_ctx.readNetworkStringUTF16(); + const json = JSON.parse(p_ctx.readNetworkStringUTF16()); + //console.warn(name,json); + return { + id: MAGIC_MARKER_JSON, + message: { + name: name, + json: json, + }, + }; + } + + case MAGIC_MARKER_INTERVAL: { + const name = p_ctx.readNetworkStringUTF16(); + const interval = p_ctx.readInt32(); + return { + id: MAGIC_MARKER_INTERVAL, + message: { + name: name, + interval: interval, + }, + }; + } + + default: { + console.warn('not json :('); + } + break; } - - case MAGIC_MARKER_INTERVAL: { - const name = p_ctx.readNetworkStringUTF16(); - const interval = p_ctx.readInt32(); - return { - id: MAGIC_MARKER_INTERVAL, - message: { - name: name, - interval: interval, - }, - }; - } - - default: - break; + assert.fail(`Unhandled type ${type}`); } - assert.fail(`Unhandled type ${type}`); + + return null; } - protected messageHandler(_: ServiceMessage): void { - // Logger.debug( - // `${p_data.message.name} => ${ - // p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval - // }` - // ); + protected messageHandler(p_data: ServiceMessage): void { + console.warn(p_data); + //`${p_data.message.name} => ${ + // p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval + //}` + //); } - private async subscribeState(p_state: string, p_interval: number) { + private async subscribeState(p_state: string, p_interval: number, socket: Socket) { // Logger.log(`Subscribe to state '${p_state}'`); const getMessage = function (): Buffer { const ctx = new WriteContext(); @@ -159,12 +192,13 @@ export class StateMap extends Service { { const ctx = new WriteContext(); ctx.writeUInt32(message.length); - const written = await this.connection.write(ctx.getBuffer()); - assert(written === 4); + ctx.write(message) + const written = await socket.write(ctx.getBuffer()); + //assert(written === 4); } { - const written = await this.connection.write(message); - assert(written === message.length); + //const written = await socket.write(message); + //assert(written === message.length); } } } diff --git a/services/TimeSync.ts b/services/TimeSync.ts new file mode 100644 index 0000000..31a4281 --- /dev/null +++ b/services/TimeSync.ts @@ -0,0 +1,131 @@ +import { strict as assert } from 'assert'; +import { ReadContext } from '../utils/ReadContext'; +import { WriteContext } from '../utils/WriteContext'; +import { Service } from './Service'; +//import { Logger } from '../LogEmitter'; +import { ServiceMessage, Tokens, deviceIdFromBuff } from '../types'; +import { Logger } from '../LogEmitter'; + + +export interface TimeSyncData { + msgs: bigint[], + timestamp: bigint, +} + +export declare interface TimeSynchronization { + on(event: 'message', listener: (message: TimeSyncData) => void): this; + } + +export class TimeSynchronization extends Service { + private _hasReplied: boolean = false; + + async init() { + + } + + public async sendTimeSyncRequest() { + const ctx = new WriteContext(); + ctx.write(new Uint8Array([0x0,0x0,0x0,0x0])); + ctx.write(Tokens.SoundSwitch); + ctx.write(new Uint8Array([0x0])); + ctx.writeFixedSizedString('TimeSynchronization'); + await this.write(ctx); + } + + private timeSyncMsgHelper(msgId: number, msgs: bigint[]): Buffer { + const getMessage = function (): Buffer { + const ctx = new WriteContext(); + ctx.writeUInt32(msgId); + while (msgs.length) { + ctx.writeUInt64(msgs.shift()) + } + return ctx.getBuffer() + } + const message = getMessage(); + + const ctx = new WriteContext(); + ctx.writeUInt32(message.length); + ctx.write(message); + return ctx.getBuffer() + } + private getTimeStamp(): bigint { + const timestamp = Date.now(); + return (BigInt(timestamp) * 1000000n) + } + + private async sendTimeSyncReply(interval: bigint, timeReceived: bigint): Promise { + // const currentTime = Date.now(); + const buffMsg = this.timeSyncMsgHelper(2,[interval,timeReceived]); + Logger.debug(buffMsg); + await this.connection.write(buffMsg); + //const buffMsg2 = this.timeSyncMsgHelper(1,[this.getTimeStamp()]); + //await this.connection.write(buffMsg2); + //assert(written === 4); + + + //let result = await this.write(ctx); + + //Logger.debug(ctx.getBuffer()); + //assert(result === ctx.tell()) + + }; + + protected parseData(p_ctx: ReadContext): ServiceMessage { + const timestamp = this.getTimeStamp() + + const size = p_ctx.readUInt32(); + + if (size === 0) { + const token = p_ctx.read(16); + const svcName = p_ctx.readNetworkStringUTF16(); + const svcPort = p_ctx.readUInt16(); + console.log(deviceIdFromBuff(token), svcName, svcPort) + } else { + const id = p_ctx.readUInt32(); + const msgs: bigint[] = [] + while (p_ctx.sizeLeft()) { + msgs.push(p_ctx.readUInt64()) + }; + console.log(size,id,msgs) + return { + id: id, + message: { + msgs: msgs, + timestamp: timestamp, + } + } + } + } + + protected messageHandler(msg: ServiceMessage): void { + console.log(msg) + + + // if (!this._hasReplied) { + // this.sendTimeSyncReply(msg.message.msgs.shift(), msg.message.timestamp) + // this._hasReplied = true; + // } + + + + switch (msg.id) { + case 1: + //Logger.debug('Sending Reply'); + //try { + // this.sendTimeSyncReply(msg.message.msgs.shift()) + //} catch(err) { + // Logger.error(err) + // } + break; + case 2: + //Logger.debug('Sending Reply'); + //try { + // this.sendTimeSyncReply(msg.message.msgs.shift()) + //} catch(err) { + // Logger.error(err) + //} + break; + + } + } +} \ No newline at end of file diff --git a/services/index.ts b/services/index.ts index 4858ecb..311b433 100644 --- a/services/index.ts +++ b/services/index.ts @@ -2,3 +2,4 @@ export * from './FileTransfer'; export * from './Service'; export * from './StateMap'; export * from './Directory'; +export * from './TimeSync'; \ No newline at end of file diff --git a/types/tokens.ts b/types/tokens.ts index 102bb5d..e93903a 100644 --- a/types/tokens.ts +++ b/types/tokens.ts @@ -9,6 +9,11 @@ export const Tokens = { Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) } +export function deviceIdFromBuff(token: Uint8Array): string { + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); +} + export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { NowPlaying: { name: 'nowplaying', From ea62f5c2728e1fc794c89dec730bb4efa7285321 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 6 Oct 2022 00:04:18 -0400 Subject: [PATCH 004/146] Working Statemap --- StageLinq/index.ts | 3 +- network/StageLinqDevices.ts | 35 +++++---- services/Directory.ts | 87 +++++++------------- services/Service.ts | 84 ++++++++++++++++++-- services/StateMap.ts | 153 +++++++++++++++++++----------------- 5 files changed, 208 insertions(+), 154 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 4da7ec6..2386ee7 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -37,13 +37,14 @@ export class StageLinq extends EventEmitter { const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); msg.port = address.port; + await sleep(500); await announce(msg); //Logger.warn(msg); //this.listener.listenForDevices(async (connectionInfo) => { //await this.devices.handleDevice(connectionInfo); //Logger.warn(connectionInfo); //}); - await sleep(1500); + //await sleep(1500); //await this.devices. } diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 3faeef0..8461804 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -7,11 +7,9 @@ import { Directory, FileTransfer, StateData, StateMap, TimeSynchronization } fro import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; -import { throws } from 'assert'; -import { dir } from 'console'; import { AddressInfo } from 'net'; -enum ConnectionStatus { CONNECTING, CONNECTED, FAILED }; +//enum ConnectionStatus { CONNECTING, CONNECTED, FAILED }; interface StageLinqDevice { networkDevice: NetworkDevice; @@ -48,10 +46,10 @@ export class StageLinqDevices extends EventEmitter { private _databases: Databases; private devices: Map = new Map(); private services2: Map> = new Map(); - private discoveryStatus: Map = new Map(); + //private discoveryStatus: Map = new Map(); private options: StageLinqOptions; - private deviceWatchTimeout: NodeJS.Timeout | null = null; + //private deviceWatchTimeout: NodeJS.Timeout | null = null; //private stateMapCallback: { connectionInfo: ConnectionInfo, networkDevice: NetworkDevice }[] = []; constructor(options: StageLinqOptions) { @@ -78,6 +76,8 @@ export class StageLinqDevices extends EventEmitter { //const timeSyncInfo = await timeSync.listen(); //initMsg.services.set('TimeSynchronization', timeSyncInfo.port); + //await this.startServiceListener(TimeSynchronization); + const stateMap = new StateMap(initMsg); const stateMapInfo = await stateMap.listen(); initMsg.services.set('StateMap', stateMapInfo.port); @@ -86,15 +86,16 @@ export class StageLinqDevices extends EventEmitter { const serverInfo = await directory.listen(); initMsg.services.set('DirectoryService', serverInfo.port); - await sleep(500); + //await sleep(500); this.services2.set("StateMap", stateMap); this.services2.set("DirectoryService", directory); //this.services[timeSync.name] = timeSync //this.services //Logger.warn(this.services); + return serverInfo - /*await this.startServiceListener(Directory); + /* this.services['Directory'].on('listening', (serverInfo) =>{ this.directoryPort = serverInfo.port return @@ -104,17 +105,17 @@ export class StageLinqDevices extends EventEmitter { // Factory function async startServiceListener>(ctor: { - new (): T; + new (p_initMsg:ServiceInitMessage): T; }): Promise { //assert(this.connection); // FIXME: find out why we need these waits before connecting to a service - await sleep(500); + //await sleep(500); const serviceName = ctor.name; - //if (this.services[serviceName]) { - // return this.services[serviceName] as T; - //} + if (this.services[serviceName]) { + return this.services[serviceName] as T; + } //assert(this.servicePorts.hasOwnProperty(serviceName)); //assert(this.servicePorts[serviceName] > 0); @@ -130,7 +131,7 @@ export class StageLinqDevices extends EventEmitter { return service; } - +/* async handleDevice(connectionInfo: ConnectionInfo) { Logger.silly(this.showDiscoveryStatus(connectionInfo)); @@ -145,7 +146,7 @@ export class StageLinqDevices extends EventEmitter { const networkDevice = new NetworkDevice(connectionInfo); networkDevice.listen(); } - +*/ /** * Disconnect from all connected devices */ @@ -227,6 +228,7 @@ export class StageLinqDevices extends EventEmitter { * @param connectionInfo Connection info * @returns */ + /* private async connectToDevice(connectionInfo: ConnectionInfo) { // Mark this device as connecting. @@ -289,7 +291,7 @@ export class StageLinqDevices extends EventEmitter { fileTransferService: fileTransfer }); } - +*/ /** * Download databases from the device. * @@ -313,6 +315,7 @@ export class StageLinqDevices extends EventEmitter { * @param connectionInfo Connection info * @param networkDevice Network device */ + /* private async setupStateMap(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { // Setup StateMap Logger.debug(`Setting up stateMap for ${connectionInfo.address}`); @@ -389,5 +392,5 @@ export class StageLinqDevices extends EventEmitter { : this.isFailed(device) ? '(FAILED)' : '(NEW)'); } - +*/ } \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 8a6180d..340ac8f 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -3,7 +3,7 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; import { ServiceInitMessage } from '../network'; -import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens } from '../types'; +import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens, deviceIdFromBuff } from '../types'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils/sleep'; import { Socket, AddressInfo } from 'net'; @@ -17,48 +17,34 @@ export interface DirectoryData { } export class Directory extends Service { + public name: string = "Directory"; public timeAlive: number; public servicePorts: ServicePorts; public serviceRequestAllowed: boolean = false; public services: Map; + protected preparseData = false; constructor(p_initMsg:ServiceInitMessage) { super(p_initMsg); this.services = p_initMsg.services; + } async init() { - } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - let deviceId: string = ""; let servicePorts: ServicePorts = {}; - //let token: string = null; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); - const tokenArray = ctx.read(16); - deviceId = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(tokenArray).toString('hex')).splice(1).join('-'); - //if (!token){ - // token = ctx.read(16).toString(); - this.connections.set(deviceId, socket) - //} else { - // ctx.seek(16); - //} - //ctx.seek(16); - //console.log(MessageId[id]) + const token = ctx.read(16); + const deviceId = deviceIdFromBuff(token) + this.connections.set(deviceId, socket); switch (id) { case MessageId.TimeStamp: ctx.seek(16); - // const secondToken = ctx.read(16); // should be 00.. - // we _shouldn't_ be receiving anything but blank tokens in the 2nd field - // assert(secondToken.every((x) => x === 0)); - - // Time Alive is in nanoseconds; convert back to seconds this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); - // this.sendTimeStampMsg(deviceToken, Tokens.SoundSwitch); break; case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); @@ -69,19 +55,7 @@ export class Directory extends Service { break; case MessageId.ServicesRequest: const serviceRequest = ctx.readRemaining(); - console.log(deviceId,id,serviceRequest); - //this.sendServiceRequest(socket); this.sendServiceAnnouncement(socket); - //this.sendServiceRequest(socket); - - - //this.serviceRequestAllowed = true; - //try { - // this.requestAllServicePorts(socket); - //} catch (err) { - // console.error(err) - // } - break; default: assert.fail(`NetworkDevice Unhandled message id '${id}'`); @@ -99,13 +73,29 @@ export class Directory extends Service { } protected messageHandler(directoryMsg: ServiceMessage): void { - //const ctx = new ReadContext(p_message.buffer, false); - //console.log(directoryMsg.message); } + private async sendServiceAnnouncement(socket?: Socket): Promise { + let svc = this.services.entries(); + //console.warn(svc); + await sleep(250); + const ctx = new WriteContext(); + ctx.writeUInt32(MessageId.ServicesRequest); + ctx.write(Tokens.Listen); + for (let i=0; i { await sleep(250); //const ctx = new WriteContext(); @@ -126,26 +116,7 @@ export class Directory extends Service { //console.log(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) } - private async sendServiceAnnouncement(socket?: Socket): Promise { - let svc = this.services.entries(); - //console.warn(svc); - await sleep(250); - const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(Tokens.Listen); - for (let i=0; i { await sleep(1500); @@ -187,7 +158,7 @@ export class Directory extends Service { } }); } - + */ } diff --git a/services/Service.ts b/services/Service.ts index d41cbea..efbe291 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -7,7 +7,7 @@ import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; -import * as tcp from '../utils/tcp'; +//import * as tcp from '../utils/tcp'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; import type { ServiceMessage, IpAddress } from '../types'; @@ -22,8 +22,9 @@ export declare interface ServiceDevice { } export abstract class Service extends EventEmitter { - private address: string; - private port: number; + //private address: string; + //private port: number; + protected preparseData:boolean = true; public readonly name: string; public serverInfo: AddressInfo; public serverStatus: string; @@ -32,22 +33,33 @@ export abstract class Service extends EventEmitter { //protected connection: tcp.Connection = null; protected connection: Socket = null; public server: Server = null; + public serInitMsg: ServiceInitMessage; protected parent: InstanceType; //constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { constructor(p_initMsg:ServiceInitMessage) { super(); this.parent = p_initMsg.parent; + this.serInitMsg = p_initMsg; + } async createServer(serviceName: string): Promise { return await new Promise((resolve, reject) => { let queue: Buffer = null; const server = net.createServer((socket) => { + console.log(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) socket.on('error', (err) => { reject(err); }); + //socket.on('connect', () => { + + //}); socket.on('data', async p_data => { + + + + //console.log(`Received data on ${serviceName}!!`) let buffer: Buffer = null; if (queue && queue.length > 0) { @@ -60,15 +72,71 @@ export abstract class Service extends EventEmitter { const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); const ctx = new ReadContext(arrayBuffer, false); queue = null; - //const ctx = new ReadContext(data, false); - const parsedData = await this.parseData(ctx, socket) - this.messageHandler(parsedData); + const testBuf = ctx.readRemainingAsNewBuffer(); + ctx.rewind(); + const messageId = ctx.readUInt32(); + ctx.rewind(); + + + if (this.preparseData && messageId != 0) { + try { + while (ctx.isEOF() === false) { + //console.log(`size remaining: `,ctx.sizeLeft()) + if (ctx.sizeLeft() < 4) { + queue = ctx.readRemainingAsNewBuffer(); + break; + } + //console.log(`size remaining after if: `,ctx.sizeLeft()) + //const testBuf = ctx.readRemainingAsNewBuffer(); + const length = ctx.readUInt32(); + //console.log(length, testBuf); + + if ( length <= ctx.sizeLeft()) { + const message = ctx.read(length); + // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer + const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); + //Logger.info("RECV", length); + //hex(message); + const parsedData = this.parseData(new ReadContext(data, false),socket); + + // Forward parsed data to message handler + this.messageHandler(parsedData); + this.emit('message', parsedData); + } else { + ctx.seek(-4); // Rewind 4 bytes to include the length again + queue = ctx.readRemainingAsNewBuffer(); + break; + } + } + } catch (err) { + // FIXME: Rethrow based on the severity? + //console.log(testBuf); + Logger.error(err); + } + } else { + const parsedData = await this.parseData(ctx, socket) + this.messageHandler(parsedData); + } + + + + + + + + + + + + + + }); }).listen(0, '0.0.0.0', () => { this.serverInfo = server.address() as net.AddressInfo; //console.log(address,port); - console.log(`opened ${serviceName} server on ${this.serverInfo.port}`); + console.log(`opened ${this.name} server on ${this.serverInfo.port}`); //this.subConnection[serviceName] = { // socket: server, // port: port @@ -232,6 +300,8 @@ export abstract class Service extends EventEmitter { assert.fail('Implement this'); } + //protected dataPreparser() + protected abstract parseData(p_ctx: ReadContext, socket?: Socket): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; diff --git a/services/StateMap.ts b/services/StateMap.ts index 1f11254..5e882e9 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -6,15 +6,14 @@ import { Service } from './Service'; import type { ServiceMessage } from '../types'; import { deviceIdFromBuff } from '../types'; import { Socket, AddressInfo } from 'net'; -import { Console } from 'console'; -// import { Logger } from '../LogEmitter'; +import { Logger } from '../LogEmitter'; export const States = [ // Mixer StageLinqValue.MixerCH1faderPosition, StageLinqValue.MixerCH2faderPosition, StageLinqValue.MixerCrossfaderPosition, -/* + // Decks StageLinqValue.EngineDeck1Play, StageLinqValue.EngineDeck1PlayState, @@ -63,7 +62,7 @@ export const States = [ StageLinqValue.EngineDeck4TrackTrackName, StageLinqValue.EngineDeck4CurrentBPM, StageLinqValue.EngineDeck4ExternalMixerVolume, -*/ + StageLinqValue.ClientPreferencesLayerA, StageLinqValue.ClientPreferencesPlayer, StageLinqValue.ClientPreferencesPlayerJogColorA, @@ -78,8 +77,6 @@ export const States = [ StageLinqValue.MixerChannelAssignment2, StageLinqValue.MixerChannelAssignment3, StageLinqValue.MixerChannelAssignment4, - - StageLinqValue.MixerNumberOfChannels, ]; @@ -90,7 +87,8 @@ const MAGIC_MARKER_INTERVAL = 0x000007d2; const MAGIC_MARKER_JSON = 0x00000000; export interface StateData { - name: string; + name?: string; + client?: string; json?: { type: number; string?: string; @@ -100,10 +98,9 @@ export interface StateData { } export class StateMap extends Service { + name: string = "StateMap"; + async init() { - // for (const state of States) { - // await this.subscribeState(state, 0); - // } } public async subscribe(socket: Socket) { @@ -113,72 +110,68 @@ export class StateMap extends Service { } protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - const length = p_ctx.readUInt32(); - //console.warn(length); - //assert(marker === MAGIC_MARKER); - if (length === 0) { + //test if this is a serviceRequest + const checkSvcReq = p_ctx.readUInt32(); + if (p_ctx.sizeLeft() === 38 && checkSvcReq === 0) { const token = p_ctx.read(16); const svcName = p_ctx.readNetworkStringUTF16(); const svcPort = p_ctx.readUInt16(); console.log(deviceIdFromBuff(token), svcName, svcPort) this.subscribe(socket); - } else { - const msg = p_ctx.readRemainingAsNewBuffer(); - //console.warn(msg); - p_ctx.rewind(); - p_ctx.seek(4); - const marker = p_ctx.getString(4); - const type = p_ctx.readUInt32(); - //console.warn(marker, type); - switch (type) { - case MAGIC_MARKER_JSON: { - const name = p_ctx.readNetworkStringUTF16(); - const json = JSON.parse(p_ctx.readNetworkStringUTF16()); - //console.warn(name,json); - return { - id: MAGIC_MARKER_JSON, - message: { - name: name, - json: json, - }, - }; - } - - case MAGIC_MARKER_INTERVAL: { - const name = p_ctx.readNetworkStringUTF16(); - const interval = p_ctx.readInt32(); - return { - id: MAGIC_MARKER_INTERVAL, - message: { - name: name, - interval: interval, - }, - }; - } - - default: { - console.warn('not json :('); - } - break; - } - assert.fail(`Unhandled type ${type}`); + return } + p_ctx.rewind(); + + const marker = p_ctx.getString(4); + assert(marker === MAGIC_MARKER); + const type = p_ctx.readUInt32(); + switch (type) { + case MAGIC_MARKER_JSON: { + const name = p_ctx.readNetworkStringUTF16(); + const json = JSON.parse(p_ctx.readNetworkStringUTF16()); + return { + id: MAGIC_MARKER_JSON, + message: { + name: name, + client: [socket.remoteAddress,socket.remotePort].join(":"), + json: json, + }, + }; + } - + case MAGIC_MARKER_INTERVAL: { + const name = p_ctx.readNetworkStringUTF16(); + const interval = p_ctx.readInt32(); + return { + id: MAGIC_MARKER_INTERVAL, + message: { + name: name, + client: [socket.remoteAddress,socket.remotePort].join(":"), + interval: interval, + }, + }; + } + + default: + break; + } + assert.fail(`Unhandled type ${type}`); return null; } protected messageHandler(p_data: ServiceMessage): void { - console.warn(p_data); - //`${p_data.message.name} => ${ - // p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval - //}` - //); + if (p_data && p_data.message.json) { + Logger.info( + `${p_data.message.client} ${p_data.message.name} => ${ + p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval + }` + ); + } } private async subscribeState(p_state: string, p_interval: number, socket: Socket) { - // Logger.log(`Subscribe to state '${p_state}'`); + const getMessage = function (): Buffer { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); @@ -189,16 +182,32 @@ export class StateMap extends Service { }; const message = getMessage(); - { - const ctx = new WriteContext(); - ctx.writeUInt32(message.length); - ctx.write(message) - const written = await socket.write(ctx.getBuffer()); - //assert(written === 4); - } - { - //const written = await socket.write(message); - //assert(written === message.length); - } + + const ctx = new WriteContext(); + ctx.writeUInt32(message.length); + ctx.write(message) + const written = await socket.write(ctx.getBuffer()); } } + +/* + + const checkBufferArray = new Uint8Array([0,0,0,0]) + const smaaArray = new Uint8Array([115, 109, 97, 97]); + + const shiftLeft = (collection:Uint8Array, value:any) => { + for (let i = 0; i < collection.length - 1; i++) { + collection[i] = collection[i + 1]; // Shift left + } + collection[collection.length - 1] = value; // Place new value at tail + return collection; + } + + let checkString = ""; + while (!p_ctx.isEOF()) { + checkString = ""; + while (checkString !== "736d6161") { + shiftLeft(checkBufferArray, p_ctx.read(1)); + checkString = Buffer.from(checkBufferArray).toString('hex'); + } + */ From 92182d47dcca2213797ce05133e3e575def2d59d Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 6 Oct 2022 00:53:59 -0400 Subject: [PATCH 005/146] Discovery Peers --- StageLinq/index.ts | 14 ++++++++++---- network/StageLinqDevices.ts | 3 +++ network/StageLinqListener.ts | 1 + services/Service.ts | 8 +++++++- services/StateMap.ts | 2 +- types/index.ts | 1 + 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 2386ee7..f27d68a 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -2,7 +2,7 @@ import { announce, createDiscoveryMessage, StageLinqListener, unannounce } from import { EventEmitter } from 'events'; import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; -import { Action, ActingAsDevice, StageLinqOptions } from '../types'; +import { Action, ActingAsDevice, StageLinqOptions, deviceIdFromBuff } from '../types'; import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -37,13 +37,19 @@ export class StageLinq extends EventEmitter { const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); msg.port = address.port; - await sleep(500); + //await sleep(500); await announce(msg); //Logger.warn(msg); - //this.listener.listenForDevices(async (connectionInfo) => { + this.listener.listenForDevices(async (connectionInfo) => { //await this.devices.handleDevice(connectionInfo); + const deviceId = deviceIdFromBuff(connectionInfo.token); + if (!this.devices.peers.has(deviceId) || this.devices.peers.get(deviceId).port !== connectionInfo.port) { + this.devices.peers.set(deviceIdFromBuff(connectionInfo.token), connectionInfo); + Logger.debug(deviceId, connectionInfo); + } + //Logger.warn(connectionInfo); - //}); + }); //await sleep(1500); //await this.devices. } diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 8461804..79d1447 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -44,6 +44,7 @@ export class StageLinqDevices extends EventEmitter { public directoryPort: number = 0; private services: Record> = {}; private _databases: Databases; + public peers: Map = new Map(); private devices: Map = new Map(); private services2: Map> = new Map(); //private discoveryStatus: Map = new Map(); @@ -298,6 +299,7 @@ export class StageLinqDevices extends EventEmitter { * @param connectionInfo Connection info * @returns */ + /* private async downloadDatabase(networkDevice: NetworkDevice, connectionInfo: ConnectionInfo) { const sources = await this.databases.downloadSourcesFromDevice(connectionInfo, networkDevice); Logger.debug(`Database sources: ${sources.join(', ')}`); @@ -308,6 +310,7 @@ export class StageLinqDevices extends EventEmitter { return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i .exec(Buffer.from(connectionInfo.token).toString('hex')).splice(1).join('-'); } + */ /** * Setup stateMap. diff --git a/network/StageLinqListener.ts b/network/StageLinqListener.ts index 7bed12e..769213a 100644 --- a/network/StageLinqListener.ts +++ b/network/StageLinqListener.ts @@ -44,6 +44,7 @@ export class StageLinqListener { port: p_ctx.readUInt16(), address: p_address, }; + result.addressPort = [result.address, result.port].join(":"); assert(p_ctx.isEOF()); return result; } diff --git a/services/Service.ts b/services/Service.ts index efbe291..1e2401d 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,7 +1,7 @@ //import { hex } from '../utils/hex'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, Tokens } from '../types'; +import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo } from '../types'; import { NetworkDevice } from '../network/NetworkDevice'; import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; @@ -295,6 +295,12 @@ export abstract class Service extends EventEmitter { return await this.write(newCtx); } + public getIdFromIp(map:Map, val:string) { + const thisEntry = [...map.values()].filter((item: ConnectionInfo) => item.addressPort === val); + return thisEntry.keys.toString(); + } + + // FIXME: Cannot use abstract because of async; is there another way to get this? protected async init() { assert.fail('Implement this'); diff --git a/services/StateMap.ts b/services/StateMap.ts index 5e882e9..6e514b1 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -186,7 +186,7 @@ export class StateMap extends Service { const ctx = new WriteContext(); ctx.writeUInt32(message.length); ctx.write(message) - const written = await socket.write(ctx.getBuffer()); + await socket.write(ctx.getBuffer()); } } diff --git a/types/index.ts b/types/index.ts index 7f7e52e..243f706 100644 --- a/types/index.ts +++ b/types/index.ts @@ -43,6 +43,7 @@ export type IpAddress = string; export interface ConnectionInfo extends DiscoveryMessage { address: IpAddress; + addressPort?: string; } From fe411ff803efa1e58803d3850b9524b0635ed67d Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 6 Oct 2022 18:20:23 -0400 Subject: [PATCH 006/146] filetransfer working --- StageLinq/index.ts | 2 +- network/StageLinqDevices.ts | 7 +- services/Directory.ts | 2 +- services/FileTransfer.ts | 212 ++++++++++++++++++++++++++++++++---- services/Service.ts | 37 +++++-- services/StateMap.ts | 2 +- 6 files changed, 226 insertions(+), 36 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index f27d68a..de7fb3c 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -45,7 +45,7 @@ export class StageLinq extends EventEmitter { const deviceId = deviceIdFromBuff(connectionInfo.token); if (!this.devices.peers.has(deviceId) || this.devices.peers.get(deviceId).port !== connectionInfo.port) { this.devices.peers.set(deviceIdFromBuff(connectionInfo.token), connectionInfo); - Logger.debug(deviceId, connectionInfo); + //Logger.debug(deviceId, connectionInfo); } //Logger.warn(connectionInfo); diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 79d1447..57d3694 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -57,8 +57,6 @@ export class StageLinqDevices extends EventEmitter { super(); this.options = options; this._databases = new Databases(); - // this.waitForAllDevices = this.waitForAllDevices.bind(this); - //this.waitForAllDevices(); } /** @@ -79,6 +77,10 @@ export class StageLinqDevices extends EventEmitter { //await this.startServiceListener(TimeSynchronization); + const fileTransfer = new FileTransfer(initMsg); + const FileTransferInfo = await fileTransfer.listen(); + initMsg.services.set('FileTransfer', FileTransferInfo.port); + const stateMap = new StateMap(initMsg); const stateMapInfo = await stateMap.listen(); initMsg.services.set('StateMap', stateMapInfo.port); @@ -91,6 +93,7 @@ export class StageLinqDevices extends EventEmitter { this.services2.set("StateMap", stateMap); this.services2.set("DirectoryService", directory); + this.services2.set("FileTransfer", fileTransfer); //this.services[timeSync.name] = timeSync //this.services //Logger.warn(this.services); diff --git a/services/Directory.ts b/services/Directory.ts index 340ac8f..32921f1 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -33,7 +33,7 @@ export class Directory extends Service { async init() { } - protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext, socket: Socket, msgId:number): ServiceMessage { let deviceId: string = ""; let servicePorts: ServicePorts = {}; while (ctx.isEOF() === false) { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 4a05113..905d706 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,11 +1,15 @@ import { DOWNLOAD_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service } from './Service'; +import { Service, ServiceData } from './Service'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source } from '../types'; +import { deviceIdFromBuff } from '../types'; +import { Socket, AddressInfo } from 'net'; +import { getTempFilePath } from '../utils'; +import * as fs from 'fs'; const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; @@ -13,6 +17,11 @@ export const CHUNK_SIZE = 4096; // FIXME: Strongly type this for all possible messages? type FileTransferData = any; +interface FileTransferServiceData extends ServiceData { + source?: Source; +} + + enum MessageId { TimeCode = 0x0, FileStat = 0x1, @@ -34,15 +43,88 @@ export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (progress: FileTransferProgress) => void): this; } + + export class FileTransfer extends Service { private receivedFile: WriteContext = null; + public name: string = "FileTransfer"; + public services: Map = new Map(); async init() {} + + private testPoint(ctx: ReadContext, deviceId: string, msgId: number, name: string): ReadContext { + const length = ctx.sizeLeft(); + const buff = ctx.readRemainingAsNewBuffer().toString('hex'); + ctx.seek(0- length); + console.log(`[${msgId}] (${name}) ${deviceId} ${length} ${buff}`); + return ctx + } + + protected parseData(p_ctx: ReadContext, socket: Socket, msgId:number): ServiceMessage { + + //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "pre" ); + + //test if this is a serviceRequest + const checkSvcReq = p_ctx.readUInt32(); + + //if (p_ctx.sizeLeft() === 88 && checkSvcReq === 0) { + if (checkSvcReq === 0) { + //console.log(msgId, checkSvcReq); + const token = p_ctx.read(16); + const svcName = p_ctx.readNetworkStringUTF16(); + const svcPort = p_ctx.readUInt16(); + const length = p_ctx.readUInt32(); + const deviceId = deviceIdFromBuff(token); + this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); + this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); + + const thisDevice: FileTransferServiceData = { + deviceId: deviceId, + socket: socket, + service: this + } + this.services.set(deviceId, thisDevice); + + console.log(`[${msgId}] `,deviceId, svcName, svcPort); + + } else { + p_ctx.seek(-4); + } + + + //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "pre-mag" ); + + + let checkBufferArray = new Uint8Array([0,0,0,0]) + //const fltxArray = new Uint8Array([102, 108, 116, 120]); + + const shiftLeft = (collection:Uint8Array, value:any) => { + for (let i = 0; i < collection.length - 1; i++) { + collection[i] = collection[i + 1]; // Shift left + } + collection[collection.length - 1] = value; // Place new value at tail + return collection; + } - protected parseData(p_ctx: ReadContext): ServiceMessage { + let checkString = ""; + + while (checkString !== "666c7478") { + shiftLeft(checkBufferArray, p_ctx.read(1)); + //console.log(checkString); + checkString = Buffer.from(checkBufferArray).toString('hex'); + if (p_ctx.isEOF()) { + return + } + } + + p_ctx.seek(-4); + + //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "post-mag" ); + const check = p_ctx.getString(4); assert(check === MAGIC_MARKER); - const code = p_ctx.readUInt32(); + + let code = p_ctx.readUInt32(); // If first 4 bytes are non-zero, a timecode is sent if (code > 0) { @@ -50,6 +132,7 @@ export class FileTransfer extends Service { const id = p_ctx.readUInt32(); assert(id === 0x07d2); assert(p_ctx.readUInt32() === 0); + //console.log(MessageId[id]); return { id: MessageId.TimeCode, message: { @@ -58,8 +141,12 @@ export class FileTransfer extends Service { }; } + // p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "id" ); + // Else const messageId: MessageId = p_ctx.readUInt32(); + //console.log(`[${msgId}] `,MessageId[messageId], messageId); + //console.log(`[${msgId}] `,this.getDeviceIdFromSocket(socket), ' MessageID: ', MessageId[messageId]); switch (messageId) { case MessageId.SourceLocations: { const sources: string[] = []; @@ -74,6 +161,10 @@ export class FileTransfer extends Service { assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.isEOF()); + console.log(this.getDeviceIdFromSocket(socket), sources); + //const device = this.services.get(this.getDeviceIdFromSocket(socket)); + //console.info(this.services.entries()); + //this.downloadDb(device); return { id: messageId, message: { @@ -136,6 +227,19 @@ export class FileTransfer extends Service { } case MessageId.Unknown0: { + + //console.log(this.getDeviceIdFromSocket(socket), ' size left: ', p_ctx.sizeLeft()); + //console.log(p_ctx.readRemainingAsNewBuffer().toString('hex')); + if (p_ctx.sizeLeft() >= 5) { + //console.log(`[${msgId}] case`,this.getDeviceIdFromSocket(socket), ' size left: ', p_ctx.sizeLeft()); + //console.log(`[${msgId}] case`,p_ctx.readRemainingAsNewBuffer().toString('hex')); + p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "case" ); + console.log(`requesting sources from `, this.getDeviceIdFromSocket(socket)); + //this.requestSources(socket); + const source = this.getSources(socket); + //console.debug(this.serviceList); + } + return { id: messageId, message: null, @@ -151,7 +255,7 @@ export class FileTransfer extends Service { } protected messageHandler(p_data: ServiceMessage): void { - if (p_data.id === MessageId.FileTransferChunk && this.receivedFile) { + if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); } else { @@ -159,10 +263,10 @@ export class FileTransfer extends Service { } } - async getFile(p_location: string): Promise { + async getFile(p_location: string, socket: Socket): Promise { assert(this.receivedFile === null); - await this.requestFileTransferId(p_location); + await this.requestFileTransferId(p_location, socket); const txinfo = await this.waitForMessage(MessageId.FileTransferId); if (txinfo) { @@ -176,7 +280,7 @@ export class FileTransfer extends Service { return; } - await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1); + await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1, socket); try { await new Promise(async (resolve, reject) => { @@ -206,7 +310,7 @@ export class FileTransfer extends Service { } Logger.debug(`Signaling transfer complete.`); - await this.signalTransferComplete(); + await this.signalTransferComplete(socket); } const buf = this.receivedFile ? this.receivedFile.getBuffer() : null; @@ -214,18 +318,19 @@ export class FileTransfer extends Service { return buf; } - async getSources(): Promise { + async getSources(socket: Socket): Promise { const result: Source[] = []; - await this.requestSources(); + await this.requestSources(socket); const message = await this.waitForMessage(MessageId.SourceLocations); if (message) { for (const source of message.sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; for (const database of databases) { - await this.requestStat(database); + await this.requestStat(database, socket); const fstatMessage = await this.waitForMessage(MessageId.FileStat); + const deviceId = this.getDeviceIdFromSocket(socket); if (fstatMessage.size > 0) { result.push({ name: source, @@ -234,6 +339,21 @@ export class FileTransfer extends Service { size: fstatMessage.size, }, }); + //const data = this.serviceList.get(deviceId); + const thisDevice: FileTransferServiceData = { + deviceId: deviceId, + socket: socket, + service: this, + source: { + name: source, + database: { + location: database, + size: fstatMessage.size + } + } + } + this.services.set(deviceId, thisDevice); + this.downloadDb(thisDevice); break; } } @@ -246,27 +366,27 @@ export class FileTransfer extends Service { /////////////////////////////////////////////////////////////////////////// // Private methods - private async requestStat(p_filepath: string): Promise { + private async requestStat(p_filepath: string, socket: Socket): Promise { // 0x7d1: seems to request some sort of fstat on a file const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); ctx.writeUInt32(0x0); ctx.writeUInt32(0x7d1); ctx.writeNetworkStringUTF16(p_filepath); - await this.writeWithLength(ctx); + await this.writeWithLength(ctx, socket); } - private async requestSources(): Promise { + private async requestSources(socket: Socket): Promise { // 0x7d2: Request available sources const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); ctx.writeUInt32(0x0); ctx.writeUInt32(0x7d2); // Database query ctx.writeUInt32(0x0); - await this.writeWithLength(ctx); + await this.writeWithLength(ctx, socket); } - private async requestFileTransferId(p_filepath: string): Promise { + private async requestFileTransferId(p_filepath: string, socket: Socket): Promise { // 0x7d4: Request transfer id? const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); @@ -274,10 +394,10 @@ export class FileTransfer extends Service { ctx.writeUInt32(0x7d4); ctx.writeNetworkStringUTF16(p_filepath); ctx.writeUInt32(0x0); // Not sure why we need 0x0 here - await this.writeWithLength(ctx); + await this.writeWithLength(ctx, socket); } - private async requestChunkRange(p_txid: number, p_chunkStartId: number, p_chunkEndId: number): Promise { + private async requestChunkRange(p_txid: number, p_chunkStartId: number, p_chunkEndId: number, socket: Socket): Promise { // 0x7d5: seems to be the code to request chunk range const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); @@ -289,15 +409,65 @@ export class FileTransfer extends Service { ctx.writeUInt32(p_chunkStartId); ctx.writeUInt32(0x0); ctx.writeUInt32(p_chunkEndId); - await this.writeWithLength(ctx); + await this.writeWithLength(ctx, socket); } - private async signalTransferComplete(): Promise { + private async signalTransferComplete(socket: Socket): Promise { // 0x7d6: seems to be the code to signal transfer completed const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); ctx.writeUInt32(0x0); ctx.writeUInt32(0x7d6); - await this.writeWithLength(ctx); + await this.writeWithLength(ctx, socket); + } + + async downloadDb(source: FileTransferServiceData) { // sourceId: string, service: FileTransfer, _source: Source) { + //console.info(source); + const dbPath = getTempFilePath(`${source.deviceId}/m.db`); + //console.info(source); + // Read database from source + //if (!source.source) { + // source = this.services.get(source.deviceId); + //} + Logger.debug(`Reading database ${source.deviceId}`); + this.emit('dbDownloading', source.deviceId, dbPath); + + this.on('fileTransferProgress', (progress) => { + this.emit('dbProgress', source.deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + }); + + // Save database to a file + const file = await this.getFile(source.source.database.location, source.socket); + Logger.debug(`Saving ${source.deviceId} to ${dbPath}`); + fs.writeFileSync(dbPath, Buffer.from(file)); + //this.sources.set(sourceId, dbPath); + + Logger.debug(`Downloaded ${source.deviceId} to ${dbPath}`); + this.emit('dbDownloaded', source.deviceId, dbPath); } +/* + getDbPath(dbSourceName?: string) { + if (!this.sources.size) + throw new Error(`No data sources have been downloaded`); + + if (!dbSourceName || !this.sources.has(dbSourceName)) { + + // Hack: Denon will save metadata on streaming files but only on an + // internal database. So if the source is "(Unknown)streaming://" + // return the first internal database we find. + for (const entry of Array.from(this.sources.entries())) { + if (/\(Internal\)/.test(entry[0])) { + Logger.debug(`Returning copy of internal database`); + return this.sources.get(entry[0]); + } + } + + // Else, throw an exception. + throw new Error(`Data source "${dbSourceName}" doesn't exist.`); + } + + return this.sources.get(dbSourceName); + } + */ + } diff --git a/services/Service.ts b/services/Service.ts index 1e2401d..d8bc150 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -21,6 +21,12 @@ export declare interface ServiceDevice { //on(event: 'ready', listener: () => void): this; } +export declare type ServiceData = { + socket?: Socket; + deviceId?: string; + service?: InstanceType; +} + export abstract class Service extends EventEmitter { //private address: string; //private port: number; @@ -29,12 +35,16 @@ export abstract class Service extends EventEmitter { public serverInfo: AddressInfo; public serverStatus: string; public connections: Map = new Map(); + public deviceIds: Map = new Map(); + public deviceIps: Map = new Map(); + public serviceList: Map = new Map(); protected controller: NetworkDevice; //protected connection: tcp.Connection = null; protected connection: Socket = null; public server: Server = null; public serInitMsg: ServiceInitMessage; protected parent: InstanceType; + private msgId: number = 0; //constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { constructor(p_initMsg:ServiceInitMessage) { @@ -57,7 +67,8 @@ export abstract class Service extends EventEmitter { //}); socket.on('data', async p_data => { - + const thisMsgId = this.msgId; + this.msgId++ //console.log(`Received data on ${serviceName}!!`) @@ -97,7 +108,7 @@ export abstract class Service extends EventEmitter { const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); //Logger.info("RECV", length); //hex(message); - const parsedData = this.parseData(new ReadContext(data, false),socket); + const parsedData = this.parseData(new ReadContext(data, false),socket,thisMsgId); // Forward parsed data to message handler this.messageHandler(parsedData); @@ -114,7 +125,7 @@ export abstract class Service extends EventEmitter { Logger.error(err); } } else { - const parsedData = await this.parseData(ctx, socket) + const parsedData = await this.parseData(ctx, socket,thisMsgId); this.messageHandler(parsedData); } @@ -259,6 +270,12 @@ export abstract class Service extends EventEmitter { //} + getDeviceIdFromSocket(socket: Socket):string { + const ipPort = [socket.remoteAddress, socket.remotePort].join(":"); + const deviceId = this.deviceIps.get(ipPort); + return deviceId + } + async waitForMessage(p_messageId: number): Promise { return await new Promise((resolve, reject) => { const listener = (p_message: ServiceMessage) => { @@ -274,25 +291,25 @@ export abstract class Service extends EventEmitter { }); } - async write(p_ctx: WriteContext) { + async write(p_ctx: WriteContext, socket: Socket) { assert(p_ctx.isLittleEndian() === false); - assert(this.connection); + //assert(this.connection); const buf = p_ctx.getBuffer(); // Logger.info("SEND"); //hex(buf); - const written = await this.connection.write(buf); + const written = await socket.write(buf); //assert(written === buf.byteLength); return written; } - async writeWithLength(p_ctx: WriteContext) { + async writeWithLength(p_ctx: WriteContext, socket: Socket) { assert(p_ctx.isLittleEndian() === false); - assert(this.connection); + //assert(this.connection); const newCtx = new WriteContext({ size: p_ctx.tell() + 4, autoGrow: false }); newCtx.writeUInt32(p_ctx.tell()); newCtx.write(p_ctx.getBuffer()); assert(newCtx.isEOF()); - return await this.write(newCtx); + return await this.write(newCtx, socket); } public getIdFromIp(map:Map, val:string) { @@ -308,7 +325,7 @@ export abstract class Service extends EventEmitter { //protected dataPreparser() - protected abstract parseData(p_ctx: ReadContext, socket?: Socket): ServiceMessage; + protected abstract parseData(p_ctx: ReadContext, socket?: Socket, msgId?: number): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; } diff --git a/services/StateMap.ts b/services/StateMap.ts index 6e514b1..f8997ad 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -109,7 +109,7 @@ export class StateMap extends Service { } } - protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number): ServiceMessage { //test if this is a serviceRequest const checkSvcReq = p_ctx.readUInt32(); From 2f84947f236999e796ca7e766addd051a9b907e1 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 8 Oct 2022 01:40:15 -0400 Subject: [PATCH 007/146] blargh works again --- Databases/Databases.ts | 2 +- LogEmitter/index.ts | 33 ++ StageLinq/index.ts | 1 + cli/index.ts | 36 +- log.txt | 1032 +++++++++++++++++++++++++++++++++++ network/NetworkDevice.ts | 4 +- network/StageLinqDevices.ts | 233 ++------ network/announce.ts | 7 +- network/index.ts | 2 +- package-lock.json | 42 +- package.json | 2 + services/FileTransfer.ts | 285 +++++++--- services/Service.ts | 228 ++++---- services/StateMap.ts | 57 +- types/common.ts | 223 ++++++++ types/index.ts | 10 +- utils/ReadContext.ts | 6 + 17 files changed, 1820 insertions(+), 383 deletions(-) create mode 100644 log.txt diff --git a/Databases/Databases.ts b/Databases/Databases.ts index c4917ab..35e410b 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'stream'; import { FileTransfer } from '../services'; import { getTempFilePath } from '../utils'; import { Logger } from '../LogEmitter'; -import { NetworkDevice } from '../network'; +//import { NetworkDevice } from '../network'; import * as fs from 'fs'; export declare interface Databases { diff --git a/LogEmitter/index.ts b/LogEmitter/index.ts index 613cbe5..788f54a 100644 --- a/LogEmitter/index.ts +++ b/LogEmitter/index.ts @@ -1,4 +1,5 @@ import { EventEmitter } from 'stream'; +import * as fs from 'fs'; export declare interface Logger { on(event: 'log', listener: (...args: any) => void): this; @@ -12,40 +13,72 @@ export declare interface Logger { export class Logger extends EventEmitter { + private logStream: fs.WriteStream = null; private static _instance: Logger; + private timeStart: number; + + constructor (_fileName?: string) { + super(); + + const fileName = _fileName || 'log.txt'; + this.logStream = fs.createWriteStream(fileName);//, {flags: 'a'}); + const hrTime = process.hrtime(); + const logTime = Math.floor((hrTime[0] * 1000000 + hrTime[1] / 1000)); + this.timeStart = logTime; + this.logEntry('[BEGIN]\n'); + } static get instance() { return this._instance || (this._instance = new this()); } + private logEntry(...args: any){ + const hrTime = process.hrtime(); + const logTime = Math.floor((hrTime[0] * 1000000 + hrTime[1] / 1000)); + this.logStream.write(`[${logTime - this.timeStart}] ${[args.join(' ')]}\n`); + + } + static log(...args: any) { Logger.instance.emit('log', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } static error(...args: any) { Logger.instance.emit('error', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } static warn(...args: any) { Logger.instance.emit('warn', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } static info(...args: any) { Logger.instance.emit('info', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } static debug(...args: any) { Logger.instance.emit('debug', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } static silly(...args: any) { Logger.instance.emit('silly', ...args); Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); + } + + static silent(...args: any) { + //Logger.instance.emit('silly', ...args); + Logger.instance.emit('any', ...args); + Logger.instance.logEntry(...args); } } \ No newline at end of file diff --git a/StageLinq/index.ts b/StageLinq/index.ts index de7fb3c..91b83d7 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -59,6 +59,7 @@ export class StageLinq extends EventEmitter { */ async disconnect() { try { + Logger.warn('disconnecting'); this.devices.disconnectAll(); const msg = createDiscoveryMessage(Action.Logout, this.options.actingAs) await unannounce(msg); diff --git a/cli/index.ts b/cli/index.ts index a3545dc..b47937d 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,4 @@ -import { ActingAsDevice, PlayerStatus } from '../types'; +import { ActingAsDevice, PlayerStatus, StageLinqOptions, Services } from '../types'; import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; @@ -6,6 +6,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; + require('console-stamp')(console, { format: ':date(HH:MM:ss) :label', }); @@ -37,6 +38,8 @@ function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { * @param status Player to download the current song from. * @param dest Path to save file to. */ + +/* async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: string) { try { const data = await stageLinq.devices.downloadFile(status.deviceId, status.trackPathAbsolute); @@ -48,12 +51,13 @@ async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: st console.error(`Could not download ${status.trackPathAbsolute}`); } } +*/ async function main() { console.log('Starting CLI'); - const stageLinqOptions = { + const stageLinqOptions: StageLinqOptions = { // If set to true, download the source DBs in a temporary location. // (default: true) @@ -65,26 +69,50 @@ async function main() { // What device to emulate on the network. // (default: Now Playing) - actingAs: ActingAsDevice.NowPlaying + actingAs: ActingAsDevice.NowPlaying, + + services: [ + Services.StateMap, + Services.FileTransfer, + Services.Directory, + ], } const stageLinq = new StageLinq(stageLinqOptions); // Setup how you want to handle logs coming from StageLinq + //let logStream = fs.createWriteStream('log.txt', {flags: 'a'}); + //const hrTime = process.hrtime(); +//console.log(hrTime[0] * 1000000 + hrTime[1] / 1000) + // use {flags: 'a'} to append and {flags: 'w'} to erase and write a new file + //logStream.write('Initial line...'); + + stageLinq.logger.on('error', (...args: any) => { + //const hrTime = process.hrtime(); console.error(...args); + //args.push("\n"); + //logStream.write(args.join(" ")); }); stageLinq.logger.on('warn', (...args: any) => { console.warn(...args); + args.push("\n"); + // logStream.write(args.join(" ")); }); stageLinq.logger.on('info', (...args: any) => { console.info(...args); + args.push("\n"); + //logStream.write(args.join(" ")); }); stageLinq.logger.on('log', (...args: any) => { console.log(...args); + args.push("\n"); + //logStream.write(args.join(" ")); }); stageLinq.logger.on('debug', (...args: any) => { console.debug(...args); + args.push("\n"); + //logStream.write(args.join(" ")); }); // Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { @@ -158,7 +186,9 @@ async function main() { try { process.on('SIGINT', async function () { console.info('... exiting'); + //logStream.end('this is the end line'); // Ensure SIGINT won't be impeded by some error + try { await stageLinq.disconnect(); } catch (err: any) { diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..6521547 --- /dev/null +++ b/log.txt @@ -0,0 +1,1032 @@ +[39] [BEGIN] + +[13112] Announced myself on 59681 +[46958] [Directory] connection from 192.168.2.84:49429 +[48258] [Directory] connection from 192.168.2.84:56075 +[48898] [Directory] connection from 192.168.2.83:48583 +[49442] [Directory] connection from 192.168.2.83:47745 +[49996] [Directory] connection from 192.168.2.84:42331 +[50558] [Directory] connection from 192.168.2.83:46689 +[51499] [1] [svc:undefined] [Directory] (p_data) undefined 20 000000023e5df2e822404938bdf3478dda8c4fa9 +[51558] [1] [svc:undefined] [Directory] (buffQueue) undefined 20 000000023e5df2e822404938bdf3478dda8c4fa9 +[52323] [2] [svc:undefined] [Directory] (p_data) undefined 20 0000000238e00963fc1a48c0ab93fc689fa2e455 +[52354] [2] [svc:undefined] [Directory] (buffQueue) undefined 20 0000000238e00963fc1a48c0ab93fc689fa2e455 +[52606] [3] [svc:undefined] [Directory] (p_data) undefined 20 0000000219ad6b7bb34f452abc646295a103dd0c +[52630] [3] [svc:undefined] [Directory] (buffQueue) undefined 20 0000000219ad6b7bb34f452abc646295a103dd0c +[52821] [4] [svc:undefined] [Directory] (p_data) undefined 20 000000025d9493e178fb461581f9da612621ffa8 +[52837] [4] [svc:undefined] [Directory] (buffQueue) undefined 20 000000025d9493e178fb461581f9da612621ffa8 +[53003] [5] [svc:undefined] [Directory] (p_data) undefined 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[53021] [5] [svc:undefined] [Directory] (buffQueue) undefined 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[53199] [6] [svc:undefined] [Directory] (p_data) undefined 20 000000024be141125ead4848a07db37ca8a7220e +[53215] [6] [svc:undefined] [Directory] (buffQueue) undefined 20 000000024be141125ead4848a07db37ca8a7220e +[55801] [7] [svc:undefined] [Directory] (p_data) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008215b842fcd7 +[55981] [7] [svc:undefined] [Directory] (buffQueue) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008215b842fcd7 +[309770] [Directory] sent ServiceAnnouncement to 192.168.2.84:49429 +[311401] [Directory] sent ServiceAnnouncement to 192.168.2.84:56075 +[312627] [Directory] sent ServiceAnnouncement to 192.168.2.83:48583 +[313694] [Directory] sent ServiceAnnouncement to 192.168.2.83:47745 +[314878] [Directory] sent ServiceAnnouncement to 192.168.2.84:42331 +[316141] [Directory] sent ServiceAnnouncement to 192.168.2.83:46689 +[338530] [StateMap] connection from 192.168.2.83:55809 +[339766] [StateMap] connection from 192.168.2.84:45125 +[340819] [FileTransfer] connection from 192.168.2.83:46737 +[341812] [FileTransfer] connection from 192.168.2.83:56841 +[342837] [FileTransfer] connection from 192.168.2.84:58139 +[345370] [FileTransfer] connection from 192.168.2.83:36803 +[346300] [FileTransfer] connection from 192.168.2.84:53575 +[347359] [FileTransfer] connection from 192.168.2.84:52223 +[347802] [1] [svc:undefined] [StateMap] (p_data) undefined 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070da01 +[347894] [1] [svc:undefined] [StateMap] (buffQueue) undefined 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070da01 +[369683] [2] [svc:undefined] [StateMap] (p_data) undefined 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070b045 +[370016] [2] [svc:undefined] [StateMap] (buffQueue) undefined 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070b045 +[386559] [3] [svc:undefined] [StateMap] (p_data) undefined 8150 000000b8736d61610000000000000062002f0043... +[386609] [3] [svc:undefined] [StateMap] (buffQueue) undefined 8150 000000b8736d61610000000000000062002f0043... +[386769] [4] [svc:undefined] [StateMap] (while) undefined 184 736d61610000000000000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e007400440065007600690063006500000046007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a0022002c002200740079007000650022003a0038007d +[388384] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/CurrentDevice => {"string":"/media/HONUSZ","type":8} +[388479] [5] [svc:undefined] [StateMap] (while) undefined 172 736d6161000000000000006c002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730053004400430061007200640043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[389063] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/HasSDCardConnected => {"state":false,"type":1} +[389140] [6] [svc:undefined] [StateMap] (while) undefined 176 736d61610000000000000072002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730055007300620044006500760069006300650043006f006e006e006500630074006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[389512] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/HasUsbDeviceConnected => {"state":true,"type":1} +[389567] [7] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c006100790065007200420000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[389924] [2] 192.168.2.83:55809 /Client/Preferences/LayerB => {"state":true,"type":1} +[389996] [8] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d +[390346] [2] 192.168.2.83:55809 /Client/Preferences/Player => {"string":"2","type":4} +[390411] [9] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200310000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[390754] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1 => {"color":"#ff2b84ef","type":16} +[390812] [10] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[391150] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1A => {"color":"#ff2b84ef","type":16} +[391207] [11] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[391544] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1B => {"color":"#ff02c63e","type":16} +[391603] [12] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200320000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[391942] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2 => {"color":"#ff2b84ef","type":16} +[392041] [13] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[392499] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2A => {"color":"#ff2b84ef","type":16} +[392572] [14] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[392963] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2B => {"color":"#ff02c63e","type":16} +[393028] [15] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[393407] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor3A => {"color":"#ff2b84ef","type":16} +[393469] [16] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[393823] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor3B => {"color":"#ff02c63e","type":16} +[393885] [17] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[394235] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor4A => {"color":"#ff2b84ef","type":16} +[394291] [18] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[394630] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor4B => {"color":"#ff02c63e","type":16} +[394689] [19] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f0064006500000036007b00220073007400720069006e00670022003a002200540065006d0070006f0022002c002200740079007000650022003a0034007d +[395026] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/SyncMode => {"string":"Tempo","type":4} +[395084] [20] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[395423] [2] 192.168.2.83:55809 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[395480] [21] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[395820] [2] 192.168.2.83:55809 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[395869] [22] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[398132] [2] 192.168.2.83:55809 /Engine/Deck1/ExternalScratchWheelTouch => {"state":false,"type":2} +[398179] [23] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d +[398493] [2] 192.168.2.83:55809 /Engine/Deck1/Pads/View => {"string":"CUES","type":4} +[398533] [24] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[398851] [2] 192.168.2.83:55809 /Engine/Deck1/Play => {"state":false,"type":1} +[398893] [25] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[399202] [2] 192.168.2.83:55809 /Engine/Deck1/PlayState => {"state":false,"type":1} +[399252] [26] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d +[399563] [2] 192.168.2.83:55809 /Engine/Deck1/Speed => {"type":0,"value":0.500030517578125} +[399602] [27] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[399907] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedNeutral => {"state":true,"type":1} +[399945] [28] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[400250] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedOffsetDown => {"state":false,"type":1} +[400298] [29] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[400603] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedOffsetUp => {"state":false,"type":1} +[400640] [30] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d +[400937] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedRange => {"string":"8","type":4} +[400980] [31] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[401289] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedState => {"type":0,"value":0} +[401327] [32] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d +[401626] [2] 192.168.2.83:55809 /Engine/Deck1/SyncMode => {"string":"Off","type":4} +[401669] [33] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[401972] [2] 192.168.2.83:55809 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[402009] [34] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[402303] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Bleep => {"state":false,"type":2} +[402346] [35] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d +[402647] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CuePosition => {"type":14,"value":1330} +[402690] [36] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[402988] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentBPM => {"type":0,"value":120} +[403032] [37] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002c007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310037007d +[403341] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentKeyIndex => {"type":10,"value":17} +[403382] [38] [svc:undefined] [StateMap] (while) undefined 146 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d +[403693] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopInPosition => {"type":14,"value":1330} +[403738] [39] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d +[404036] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopOutPosition => {"type":14,"value":1330} +[404077] [40] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[404375] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} +[404413] [41] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[404716] [2] 192.168.2.83:55809 /Engine/Deck1/Track/KeyLock => {"state":true,"type":1} +[404756] [42] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[405060] [2] 192.168.2.83:55809 /Engine/Deck1/Track/LoopEnableState => {"state":false,"type":1} +[405100] [43] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[405411] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop1 => {"state":false,"type":2} +[405450] [44] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[405749] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop2 => {"state":false,"type":2} +[405790] [45] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[406092] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop3 => {"state":false,"type":2} +[406133] [46] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[406438] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop4 => {"state":false,"type":2} +[406480] [47] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[406779] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop5 => {"state":false,"type":2} +[406818] [48] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[407089] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop6 => {"state":false,"type":2} +[407128] [49] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[407406] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop7 => {"state":false,"type":2} +[407444] [50] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[407717] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop8 => {"state":false,"type":2} +[407754] [51] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[408036] [2] 192.168.2.83:55809 /Engine/Deck1/Track/PlayPauseLEDState => {"state":false,"type":1} +[408074] [52] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d +[408354] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SampleRate => {"type":14,"value":44100} +[408389] [53] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[408667] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongAnalyzed => {"state":true,"type":1} +[408703] [54] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[408988] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[409029] [55] [svc:undefined] [StateMap] (while) undefined 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[409304] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[409352] [56] [svc:undefined] [StateMap] (while) undefined 206 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f0075006e0064005300770069007400630068004700750069006400000078007b00220073007400720069006e00670022003a0022007b00300030003000300030003000300030002d0030003000300030002d0030003000300030002d0030003000300030002d003000300030003000300030003000300030003000300030007d0022002c002200740079007000650022003a0038007d +[409828] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SoundSwitchGuid => {"string":"{00000000-0000-0000-0000-000000000000}","type":8} +[409884] [57] [svc:undefined] [StateMap] (while) undefined 132 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0042007900740065007300000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310036003700320039003600370035007d +[410207] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackBytes => {"type":10,"value":16729675} +[410250] [58] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[410553] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[410594] [59] [svc:undefined] [StateMap] (while) undefined 134 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e00670074006800000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310038003100300033003700320037007d +[410885] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackLength => {"type":10,"value":18103727} +[411431] [1] [svc:undefined] [FileTransfer] (p_data) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff +[411652] [1] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff +[411913] [0] [svc:undefined] [FileTransfer] (preSvc) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff +[412402] [0] [svc:undefined] [FileTransfer] (postSvc) 5d9493e1-78fb-4615-81f9-da612621ffa8 16 666c74780000000000000008ffffffff +[412414] [0] [svc:true] [FileTransfer] (ff-pre) 5d9493e1-78fb-4615-81f9-da612621ffa8 16 666c74780000000000000008ffffffff +[412728] [0] [svc:true] [FileTransfer] (mag-post) 5d9493e1-78fb-4615-81f9-da612621ffa8 12 0000000000000008ffffffff +[412867] [2] [svc:undefined] [FileTransfer] (p_data) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 +[412888] [2] [svc:undefined] [FileTransfer] (buffQueue) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 +[412908] [1] [svc:undefined] [FileTransfer] (preSvc) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 +[413317] [1] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 38 666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 +[413330] [1] [svc:true] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 38 666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 +[413369] [1] [svc:true] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 34 000000000000000800000002003200000010666c7478000004e4000007d200000000 +[413698] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e +[414260] [3] [svc:undefined] [FileTransfer] (p_data) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff +[414290] [3] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff +[414309] [2] [svc:undefined] [FileTransfer] (preSvc) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff +[414727] [2] [svc:undefined] [FileTransfer] (postSvc) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 16 666c74780000000000000008ffffffff +[414740] [2] [svc:true] [FileTransfer] (ff-pre) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 16 666c74780000000000000008ffffffff +[414997] [2] [svc:true] [FileTransfer] (mag-post) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 12 0000000000000008ffffffff +[415091] [4] [svc:undefined] [FileTransfer] (p_data) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff +[415109] [4] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff +[415124] [3] [svc:undefined] [FileTransfer] (preSvc) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff +[415488] [3] [svc:undefined] [FileTransfer] (postSvc) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 16 666c74780000000000000008ffffffff +[415498] [3] [svc:true] [FileTransfer] (ff-pre) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 16 666c74780000000000000008ffffffff +[415527] [3] [svc:true] [FileTransfer] (mag-post) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 12 0000000000000008ffffffff +[415619] [5] [svc:undefined] [FileTransfer] (p_data) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 +[415634] [5] [svc:undefined] [FileTransfer] (buffQueue) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 +[415649] [4] [svc:undefined] [FileTransfer] (preSvc) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 +[416006] [4] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 38 666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 +[416017] [4] [svc:true] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 38 666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 +[416042] [4] [svc:true] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 34 000000000000000800000002003100000010666c7478000002bb000007d200000000 +[416349] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[416675] [6] [svc:undefined] [FileTransfer] (p_data) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff +[416695] [6] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff +[416712] [5] [svc:undefined] [FileTransfer] (preSvc) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff +[417082] [5] [svc:undefined] [FileTransfer] (postSvc) 38e00963-fc1a-48c0-ab93-fc689fa2e455 16 666c74780000000000000008ffffffff +[417093] [5] [svc:true] [FileTransfer] (ff-pre) 38e00963-fc1a-48c0-ab93-fc689fa2e455 16 666c74780000000000000008ffffffff +[417119] [5] [svc:true] [FileTransfer] (mag-post) 38e00963-fc1a-48c0-ab93-fc689fa2e455 12 0000000000000008ffffffff +[417903] [60] [svc:undefined] [StateMap] (p_data) undefined 7386 0122736d6161000000000000003a002f0045006e... +[418069] [60] [svc:undefined] [StateMap] (buffQueue) undefined 7388 00000122736d6161000000000000003a002f0045... +[418145] [61] [svc:undefined] [StateMap] (while) undefined 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[418572] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[418656] [62] [svc:undefined] [StateMap] (while) undefined 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[418988] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[419034] [63] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[419336] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackUri => {"string":"","type":8} +[419380] [64] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[419680] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackWasPlayed => {"state":false,"type":1} +[419721] [65] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[420017] [59] 192.168.2.83:55809 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[420058] [66] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[420345] [59] 192.168.2.83:55809 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[420388] [67] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[420675] [59] 192.168.2.83:55809 /Engine/Deck2/ExternalScratchWheelTouch => {"state":false,"type":2} +[420715] [68] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d +[421014] [59] 192.168.2.83:55809 /Engine/Deck2/Pads/View => {"string":"CUES","type":4} +[421052] [69] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[421432] [59] 192.168.2.83:55809 /Engine/Deck2/Play => {"state":false,"type":1} +[421511] [70] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[421893] [59] 192.168.2.83:55809 /Engine/Deck2/PlayState => {"state":false,"type":1} +[421945] [71] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d +[423753] [59] 192.168.2.83:55809 /Engine/Deck2/Speed => {"type":0,"value":0.500030517578125} +[423807] [72] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[424144] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedNeutral => {"state":true,"type":1} +[424189] [73] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[424495] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedOffsetDown => {"state":false,"type":1} +[424540] [74] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[424842] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedOffsetUp => {"state":false,"type":1} +[424885] [75] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d +[425183] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedRange => {"string":"8","type":4} +[425227] [76] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[425522] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedState => {"type":0,"value":0} +[425563] [77] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d +[425865] [59] 192.168.2.83:55809 /Engine/Deck2/SyncMode => {"string":"Off","type":4} +[425906] [78] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[426203] [59] 192.168.2.83:55809 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[426474] [79] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[426783] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Bleep => {"state":false,"type":2} +[426828] [80] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[427123] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CuePosition => {"type":14,"value":0} +[427166] [81] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[427767] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentBPM => {"type":0,"value":120} +[428017] [82] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[428855] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentKeyIndex => {"type":10,"value":0} +[428901] [83] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[429219] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopInPosition => {"type":14,"value":0} +[429261] [84] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[429573] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopOutPosition => {"type":14,"value":0} +[429610] [85] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[429905] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} +[429942] [86] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[430244] [59] 192.168.2.83:55809 /Engine/Deck2/Track/KeyLock => {"state":true,"type":1} +[430284] [87] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[430580] [59] 192.168.2.83:55809 /Engine/Deck2/Track/LoopEnableState => {"state":false,"type":1} +[430615] [88] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[430904] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop1 => {"state":false,"type":2} +[430940] [89] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[431234] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop2 => {"state":false,"type":2} +[431273] [90] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[431561] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop3 => {"state":false,"type":2} +[431594] [91] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[431889] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop4 => {"state":false,"type":2} +[431925] [92] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[432213] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop5 => {"state":false,"type":2} +[432246] [93] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[432534] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop6 => {"state":false,"type":2} +[432571] [94] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[432861] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop7 => {"state":false,"type":2} +[432896] [95] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[433204] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop8 => {"state":false,"type":2} +[433243] [96] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[433540] [59] 192.168.2.83:55809 /Engine/Deck2/Track/PlayPauseLEDState => {"state":false,"type":1} +[433575] [97] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d +[433942] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SampleRate => {"type":14,"value":44100} +[434060] [98] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a0065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[434469] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongAnalyzed => {"state":false,"type":1} +[434515] [99] [svc:undefined] [StateMap] (while) undefined 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[434850] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[434891] [100] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[435196] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[435240] [101] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f0075006e006400530077006900740063006800470075006900640000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[435544] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SoundSwitchGuid => {"string":"","type":8} +[435584] [102] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004200790074006500730000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[435878] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackBytes => {"type":10,"value":0} +[435916] [103] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[436216] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[436257] [104] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e0067007400680000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[436640] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackLength => {"type":10,"value":0} +[436699] [105] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[437098] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[437143] [106] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[437485] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[437525] [107] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[437858] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackUri => {"string":"","type":8} +[437895] [108] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[438662] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackWasPlayed => {"state":false,"type":1} +[438704] [109] [svc:undefined] [StateMap] (while) undefined 92 736d61610000000000000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e00740000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0032007d +[439005] [59] 192.168.2.83:55809 /Engine/DeckCount => {"type":10,"value":2} +[439038] [110] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006b0000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0038007d +[439334] [59] 192.168.2.83:55809 /GUI/Decks/Deck/ActiveDeck => {"string":"1","type":8} +[439367] [111] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[439660] [59] 192.168.2.83:55809 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[439696] [112] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[439984] [59] 192.168.2.83:55809 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[440015] [113] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[440292] [59] 192.168.2.83:55809 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[440325] [114] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[440608] [59] 192.168.2.83:55809 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[441083] [115] [svc:undefined] [StateMap] (p_data) undefined 15638 00000110736d61610000000000000062002f0043... +[441111] [115] [svc:undefined] [StateMap] (buffQueue) undefined 15638 00000110736d61610000000000000062002f0043... +[441150] [116] [svc:undefined] [StateMap] (while) undefined 272 736d61610000000000000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e00740044006500760069006300650000009e007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a002000280055005300420020003100290022002c002200740079007000650022003a0038007d +[441509] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/CurrentDevice => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)","type":8} +[441547] [117] [svc:undefined] [StateMap] (while) undefined 172 736d6161000000000000006c002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730053004400430061007200640043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[441829] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/HasSDCardConnected => {"state":false,"type":1} +[441863] [118] [svc:undefined] [StateMap] (while) undefined 178 736d61610000000000000072002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730055007300620044006500760069006300650043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[442133] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/HasUsbDeviceConnected => {"state":false,"type":1} +[442165] [119] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c006100790065007200420000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[442439] [114] 192.168.2.84:45125 /Client/Preferences/LayerB => {"state":true,"type":1} +[442469] [120] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[442746] [114] 192.168.2.84:45125 /Client/Preferences/Player => {"string":"1","type":4} +[443318] [121] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200310000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[443656] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1 => {"color":"#ff2b84ef","type":16} +[443693] [122] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[443994] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1A => {"color":"#ff2b84ef","type":16} +[444033] [123] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[444318] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1B => {"color":"#ff02c63e","type":16} +[444352] [124] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200320000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[444638] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2 => {"color":"#ff2b84ef","type":16} +[444674] [125] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[444961] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2A => {"color":"#ff2b84ef","type":16} +[444999] [126] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[445628] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2B => {"color":"#ff02c63e","type":16} +[445787] [127] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[446701] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor3A => {"color":"#ff2b84ef","type":16} +[446751] [128] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[447066] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor3B => {"color":"#ff02c63e","type":16} +[447137] [129] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[447554] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor4A => {"color":"#ff2b84ef","type":16} +[447597] [130] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[447917] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor4B => {"color":"#ff02c63e","type":16} +[447952] [131] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f0064006500000036007b00220073007400720069006e00670022003a002200540065006d0070006f0022002c002200740079007000650022003a0034007d +[448244] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/SyncMode => {"string":"Tempo","type":4} +[448273] [132] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[448563] [114] 192.168.2.84:45125 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} +[448593] [133] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[448958] [114] 192.168.2.84:45125 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[449006] [134] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[449360] [114] 192.168.2.84:45125 /Engine/Deck1/ExternalScratchWheelTouch => {"state":false,"type":2} +[449394] [135] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d +[449714] [114] 192.168.2.84:45125 /Engine/Deck1/Pads/View => {"string":"CUES","type":4} +[449745] [136] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[450039] [114] 192.168.2.84:45125 /Engine/Deck1/Play => {"state":false,"type":1} +[450071] [137] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[450353] [114] 192.168.2.84:45125 /Engine/Deck1/PlayState => {"state":false,"type":1} +[450383] [138] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d +[450667] [114] 192.168.2.84:45125 /Engine/Deck1/Speed => {"type":0,"value":0.500030517578125} +[450698] [139] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[450985] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedNeutral => {"state":true,"type":1} +[451013] [140] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[451296] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedOffsetDown => {"state":false,"type":1} +[451325] [141] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[451614] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedOffsetUp => {"state":false,"type":1} +[451640] [142] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d +[451917] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedRange => {"string":"8","type":4} +[451944] [143] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[452231] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedState => {"type":0,"value":0} +[452256] [144] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d +[452617] [114] 192.168.2.84:45125 /Engine/Deck1/SyncMode => {"string":"Off","type":4} +[452646] [145] [svc:undefined] [StateMap] (while) undefined 140 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000040007b00220073007400720069006e00670022003a00220053007000610063006500200046006f006f00640022002c002200740079007000650022003a0038007d +[452942] [114] 192.168.2.84:45125 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} +[452967] [146] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[453243] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Bleep => {"state":false,"type":2} +[453268] [147] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[453547] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CuePosition => {"type":14,"value":0} +[453575] [148] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[453858] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentBPM => {"type":0,"value":122} +[453886] [149] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002c007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310037007d +[454162] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentKeyIndex => {"type":10,"value":17} +[454194] [150] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[454469] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopInPosition => {"type":14,"value":0} +[454498] [151] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[454784] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopOutPosition => {"type":14,"value":0} +[454814] [152] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[455084] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} +[455114] [153] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[455392] [114] 192.168.2.84:45125 /Engine/Deck1/Track/KeyLock => {"state":true,"type":1} +[455418] [154] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[455700] [114] 192.168.2.84:45125 /Engine/Deck1/Track/LoopEnableState => {"state":false,"type":1} +[455728] [155] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[456005] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop1 => {"state":false,"type":2} +[456030] [156] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[456297] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop2 => {"state":false,"type":2} +[456324] [157] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[456597] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop3 => {"state":false,"type":2} +[456625] [158] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[456897] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop4 => {"state":false,"type":2} +[456925] [159] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[457204] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop5 => {"state":false,"type":2} +[457234] [160] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[457508] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop6 => {"state":false,"type":2} +[457536] [161] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[457809] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop7 => {"state":false,"type":2} +[457836] [162] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[458110] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop8 => {"state":false,"type":2} +[458137] [163] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[458412] [114] 192.168.2.84:45125 /Engine/Deck1/Track/PlayPauseLEDState => {"state":false,"type":1} +[458440] [164] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d +[458721] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SampleRate => {"type":14,"value":44100} +[458750] [165] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[459024] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongAnalyzed => {"state":true,"type":1} +[459051] [166] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[459344] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[459375] [167] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005e007b00220073007400720069006e00670022003a0022004400610072006b00200046006f00720063006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[459751] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongName => {"string":"Dark Force (Original Mix)","type":8} +[459800] [168] [svc:undefined] [StateMap] (while) undefined 206 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f0075006e0064005300770069007400630068004700750069006400000078007b00220073007400720069006e00670022003a0022007b00300030003000300030003000300030002d0030003000300030002d0030003000300030002d0030003000300030002d003000300030003000300030003000300030003000300030007d0022002c002200740079007000650022003a0038007d +[460121] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SoundSwitchGuid => {"string":"{00000000-0000-0000-0000-000000000000}","type":8} +[460157] [169] [svc:undefined] [StateMap] (while) undefined 132 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0042007900740065007300000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310035003300340030003400340035007d +[460463] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackBytes => {"type":10,"value":15340445} +[460494] [170] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[460796] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[460827] [171] [svc:undefined] [StateMap] (while) undefined 134 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e00670074006800000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310036003200320033003600360033007d +[461125] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackLength => {"type":10,"value":16223663} +[461170] [172] [svc:undefined] [StateMap] (while) undefined 366 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d006500000124007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f005300740061007900200049006e002f00310034003700380036003600350030005f004400610072006b00200046006f007200630065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[461467] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} +[461509] [173] [svc:undefined] [StateMap] (while) undefined 380 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000124007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f005300740061007900200049006e002f00310034003700380036003600350030005f004400610072006b00200046006f007200630065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[461798] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} +[461826] [174] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[462109] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackUri => {"string":"","type":8} +[462137] [175] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[462423] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackWasPlayed => {"state":false,"type":1} +[462452] [176] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[462737] [114] 192.168.2.84:45125 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[462768] [177] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[463053] [114] 192.168.2.84:45125 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[463083] [178] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[463369] [114] 192.168.2.84:45125 /Engine/Deck2/ExternalScratchWheelTouch => {"state":false,"type":2} +[463397] [179] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d +[463683] [114] 192.168.2.84:45125 /Engine/Deck2/Pads/View => {"string":"CUES","type":4} +[463714] [180] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[463989] [114] 192.168.2.84:45125 /Engine/Deck2/Play => {"state":false,"type":1} +[464016] [181] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[464293] [114] 192.168.2.84:45125 /Engine/Deck2/PlayState => {"state":false,"type":1} +[464321] [182] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d +[464621] [114] 192.168.2.84:45125 /Engine/Deck2/Speed => {"type":0,"value":0.500030517578125} +[464647] [183] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[464931] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedNeutral => {"state":true,"type":1} +[464964] [184] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[465250] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedOffsetDown => {"state":false,"type":1} +[465279] [185] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[465565] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedOffsetUp => {"state":false,"type":1} +[465590] [186] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d +[465869] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedRange => {"string":"8","type":4} +[465900] [187] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[466182] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedState => {"type":0,"value":0} +[466206] [188] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d +[466492] [114] 192.168.2.84:45125 /Engine/Deck2/SyncMode => {"string":"Off","type":4} +[466521] [189] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[466803] [114] 192.168.2.84:45125 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[466831] [190] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[467112] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Bleep => {"state":false,"type":2} +[467138] [191] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[467426] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CuePosition => {"type":14,"value":0} +[467460] [192] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[467743] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentBPM => {"type":0,"value":120} +[467770] [193] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[468047] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentKeyIndex => {"type":10,"value":0} +[468076] [194] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[468350] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopInPosition => {"type":14,"value":0} +[468383] [195] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[468668] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopOutPosition => {"type":14,"value":0} +[468695] [196] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d +[468962] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} +[468989] [197] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006b00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[469261] [114] 192.168.2.84:45125 /Engine/Deck2/Track/KeyLock => {"state":false,"type":1} +[469287] [198] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[469624] [114] 192.168.2.84:45125 /Engine/Deck2/Track/LoopEnableState => {"state":false,"type":1} +[469664] [199] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[469988] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop1 => {"state":false,"type":2} +[470020] [200] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[470313] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop2 => {"state":false,"type":2} +[470341] [201] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[470626] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop3 => {"state":false,"type":2} +[470654] [202] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[470927] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop4 => {"state":false,"type":2} +[470954] [203] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[471228] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop5 => {"state":false,"type":2} +[471254] [204] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[471535] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop6 => {"state":false,"type":2} +[471565] [205] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[472278] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop7 => {"state":false,"type":2} +[472322] [206] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d +[472655] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop8 => {"state":false,"type":2} +[472692] [207] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[473012] [114] 192.168.2.84:45125 /Engine/Deck2/Track/PlayPauseLEDState => {"state":false,"type":1} +[473043] [208] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d +[473335] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SampleRate => {"type":14,"value":44100} +[473364] [209] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a0065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[473652] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongAnalyzed => {"state":false,"type":1} +[473681] [210] [svc:undefined] [StateMap] (while) undefined 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[473971] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[473997] [211] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[474274] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[474302] [212] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f0075006e006400530077006900740063006800470075006900640000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[474585] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SoundSwitchGuid => {"string":"","type":8} +[474611] [213] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004200790074006500730000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[474889] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackBytes => {"type":10,"value":0} +[474917] [214] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[475194] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[475219] [215] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e0067007400680000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d +[475490] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackLength => {"type":10,"value":0} +[475520] [216] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[475794] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[475822] [217] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[476099] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[476126] [218] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[476405] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackUri => {"string":"","type":8} +[476437] [219] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[476722] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackWasPlayed => {"state":false,"type":1} +[476749] [220] [svc:undefined] [StateMap] (while) undefined 92 736d61610000000000000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e00740000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0032007d +[477029] [114] 192.168.2.84:45125 /Engine/DeckCount => {"type":10,"value":2} +[477055] [221] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006b0000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0038007d +[477327] [114] 192.168.2.84:45125 /GUI/Decks/Deck/ActiveDeck => {"string":"1","type":8} +[477353] [222] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[477632] [114] 192.168.2.84:45125 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[477658] [223] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[477930] [114] 192.168.2.84:45125 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[477957] [224] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d006100730074006500720053007400610074007500730000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[478235] [114] 192.168.2.84:45125 /Engine/Sync/Network/MasterStatus => {"state":true,"type":1} +[478260] [225] [svc:undefined] [StateMap] (while) undefined 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[478644] [114] 192.168.2.84:45125 /Engine/Master/MasterTempo => {"type":0,"value":122} +[479678] [7] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff +[479703] [7] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff +[479729] [6] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[479738] [6] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[479746] [6] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[479778] [6] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 47 0000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[480358] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e +[481036] [8] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[481058] [6] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff +[481068] [6] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff +[481076] [6] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff +[481105] [6] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 21 000000000000000201000000007fffffffffffffff +[481122] [9] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff +[481376] [10] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff +[481393] [10] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff +[481407] [9] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 +[481415] [9] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 +[481422] [9] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 +[481447] [9] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 15 000000000000000300000000010101 +[481465] [11] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 +[481493] [9] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff +[481501] [9] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff +[481509] [9] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff +[481529] [9] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 21 000000000000000201000000007fffffffffffffff +[481541] [12] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff +[489725] [13] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489879] [13] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489897] [12] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489910] [12] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489919] [12] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489954] [12] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 61 00000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[489981] [14] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 +[490630] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e +[492749] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) +[495580] [object Object] +[501801] [15] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 28 00000018666c74780000000000000004000000000004000000000001 +[501974] [15] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 28 00000018666c74780000000000000004000000000004000000000001 +[501995] [14] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 +[502005] [14] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 +[502014] [14] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 +[502051] [14] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 0000000000000004000000000004000000000001 +[502095] [16] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 +[503212] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/262144 +[510992] [17] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 5792 00001018666c7478000000000000000500000000... +[511139] [17] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 5792 00001018666c7478000000000000000500000000... +[511165] [16] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... +[511188] [16] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... +[511203] [16] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... +[511223] [16] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000000000001000... +[511272] [18] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... +[511293] [18] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1668 00001018666c7478000000000000000500000000... +[514940] [19] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 8688 0000000000000000000000000000000000000000... +[515306] [19] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 10356 00001018666c7478000000000000000500000000... +[515329] [18] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... +[515344] [18] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... +[515358] [18] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... +[515378] [18] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000100000001000... +[515405] [20] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... +[515426] [18] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... +[515439] [18] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... +[515452] [18] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... +[515468] [18] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000200000001000... +[515487] [21] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... +[515501] [21] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2108 00001018666c7478000000000000000500000000... +[518731] [22] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 2896 6c20496e204c6f76655f2854686f6d6173204761... +[518841] [22] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 5004 00001018666c7478000000000000000500000000... +[518862] [21] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... +[518875] [21] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... +[518891] [21] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... +[518907] [21] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000300000001000... +[518927] [23] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... +[518945] [23] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 880 00001018666c7478000000000000000500000000... +[523462] [24] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 10136 0000000000000000000000000000000000000000... +[523621] [24] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 11016 00001018666c7478000000000000000500000000... +[523655] [23] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... +[523671] [23] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... +[523685] [23] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... +[523708] [23] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000400000001000... +[523736] [25] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... +[523764] [23] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... +[523788] [23] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... +[523806] [23] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... +[523827] [23] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000500000001000... +[523851] [26] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... +[523875] [26] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2768 00001018666c7478000000000000000500000000... +[525356] [27] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 13032 0000000000000000000000000000000000000000... +[525507] [27] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 15800 00001018666c7478000000000000000500000000... +[525534] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... +[525549] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... +[525564] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... +[525585] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000600000001000... +[525610] [28] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... +[525635] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... +[525653] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... +[525672] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... +[525693] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000700000001000... +[525718] [29] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... +[525752] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... +[525770] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... +[525789] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... +[525810] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000800000001000... +[525835] [30] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... +[525864] [30] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 3428 00001018666c7478000000000000000500000000... +[529283] [31] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 7240 697829191c033d0145784d616368696e6520284f... +[529446] [31] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 10668 00001018666c7478000000000000000500000000... +[529478] [30] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... +[529495] [30] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... +[529513] [30] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... +[529535] [30] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000900000001000... +[529559] [32] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... +[529582] [30] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... +[529599] [30] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... +[529614] [30] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... +[529633] [30] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000a00000001000... +[529654] [33] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... +[529673] [33] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2420 00001018666c7478000000000000000500000000... +[532398] [34] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 23168 0000000000000000000000000000000000000000... +[532573] [34] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 25588 00001018666c7478000000000000000500000000... +[532599] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... +[532616] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... +[532633] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... +[532655] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000b00000001000... +[532680] [35] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... +[532705] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... +[532722] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... +[532739] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... +[532759] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000c00000001000... +[532784] [36] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... +[532809] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... +[532826] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... +[532845] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... +[532863] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000d00000001000... +[532888] [37] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... +[532911] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... +[532927] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... +[532945] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... +[532964] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000e00000001000... +[532988] [38] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... +[533010] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... +[533029] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... +[533045] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... +[533064] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000f00000001000... +[533088] [39] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... +[533111] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... +[533128] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... +[533145] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... +[533163] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001000000001000... +[533188] [40] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... +[533204] [40] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 844 00001018666c7478000000000000000500000000... +[534251] [41] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 14480 0000000000000000000000000000000000000000... +[534392] [41] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 15324 00001018666c7478000000000000000500000000... +[534417] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... +[534434] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... +[534448] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... +[534464] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001100000001000... +[534487] [42] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... +[534511] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... +[534528] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... +[534620] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... +[534641] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001200000001000... +[534665] [43] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... +[534691] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... +[534708] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... +[534725] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... +[534743] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001300000001000... +[534767] [44] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... +[534786] [44] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2952 00001018666c7478000000000000000500000000... +[541441] [45] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 24616 20424f4f4c45414e2c200a0969734d6574616461... +[541632] [45] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 27568 00001018666c7478000000000000000500000000... +[541661] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... +[541678] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... +[541693] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... +[541714] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001400000001000... +[541738] [46] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... +[541759] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... +[541777] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... +[541792] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... +[541809] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001500000001000... +[541830] [47] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... +[541849] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... +[541864] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... +[541878] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... +[541894] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001600000001000... +[541915] [48] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... +[541934] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... +[541948] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... +[541964] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... +[541981] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001700000001000... +[542003] [49] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... +[542022] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... +[542039] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... +[542056] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... +[542073] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001800000001000... +[542093] [50] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... +[542112] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... +[542127] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... +[542143] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... +[542163] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001900000001000... +[542189] [51] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... +[542207] [51] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2824 00001018666c7478000000000000000500000000... +[543665] [52] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20272 0000000000000000000000000000000000000000... +[543944] [52] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 23096 00001018666c7478000000000000000500000000... +[543974] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... +[543995] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... +[544012] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... +[544035] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001a00000001000... +[544061] [53] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... +[544087] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... +[544104] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... +[544121] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... +[544141] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001b00000001000... +[544166] [54] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... +[544189] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... +[544207] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... +[544232] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... +[544252] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001c00000001000... +[544276] [55] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... +[544360] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... +[544378] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... +[544395] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... +[544414] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001d00000001000... +[544441] [56] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... +[544464] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... +[544481] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... +[544498] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... +[544517] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001e00000001000... +[544542] [57] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... +[544562] [57] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2476 00001018666c7478000000000000000500000000... +[552302] [58] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 31856 206c2e706f736974696f6e202b2031200a094652... +[552583] [58] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 34332 00001018666c7478000000000000000500000000... +[552622] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... +[552644] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... +[552665] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... +[552693] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001f00000001000... +[552734] [59] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... +[552764] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... +[552787] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... +[552806] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... +[552845] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002000000001000... +[553323] [60] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... +[553361] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... +[553379] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... +[553400] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... +[553425] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002100000001000... +[553449] [61] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... +[553473] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... +[553489] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... +[553505] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... +[553530] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002200000001000... +[553551] [62] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... +[553577] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... +[553594] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... +[553616] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... +[553644] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002300000001000... +[553678] [63] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... +[553703] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... +[553722] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... +[553737] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... +[553753] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002400000001000... +[553773] [64] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... +[553792] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... +[553806] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... +[553821] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... +[553837] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002500000001000... +[553857] [65] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... +[553875] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... +[553890] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... +[553905] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... +[553921] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002600000001000... +[553942] [66] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... +[553966] [66] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1340 00001018666c7478000000000000000500000000... +[554203] [67] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 33304 925d535dd14b3a420a41bea48fac3a608b8884d4... +[554333] [67] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 34644 00001018666c7478000000000000000500000000... +[554354] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... +[554369] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... +[554383] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... +[554401] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002700000001000... +[554422] [68] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... +[554444] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... +[554459] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... +[554476] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... +[554497] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002800000001000... +[554520] [69] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... +[554544] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... +[554559] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... +[554579] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... +[554594] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002900000001000... +[554618] [70] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... +[554639] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... +[554657] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... +[554672] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... +[554690] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002a00000001000... +[554713] [71] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... +[554734] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... +[554751] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... +[554770] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... +[554786] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002b00000001000... +[554807] [72] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... +[554828] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... +[554843] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... +[554859] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... +[554876] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002c00000001000... +[554896] [73] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... +[554917] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... +[554935] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... +[554950] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... +[554969] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002d00000001000... +[554992] [74] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... +[555014] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... +[555029] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... +[555048] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... +[555065] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002e00000001000... +[555093] [75] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... +[555108] [75] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1652 00001018666c7478000000000000000500000000... +[555369] [76] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 11584 0000000000000000000000000000000000000000... +[555422] [76] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 13236 00001018666c7478000000000000000500000000... +[555444] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... +[555459] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... +[555473] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... +[555490] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002f00000001000... +[555512] [77] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... +[555532] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... +[555547] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... +[555562] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... +[555578] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003000000001000... +[555602] [78] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... +[555627] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... +[555641] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... +[555656] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... +[555672] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003100000001000... +[555693] [79] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... +[555707] [79] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 864 00001018666c7478000000000000000500000000... +[558601] [80] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 56872 0000000000000000000000000000000000000000... +[558929] [80] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 57736 00001018666c7478000000000000000500000000... +[558968] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... +[558985] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... +[559002] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... +[559022] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003200000001000... +[559047] [81] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... +[559069] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... +[559085] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... +[559099] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... +[559116] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003300000001000... +[559139] [82] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... +[559159] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... +[559174] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... +[559191] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... +[559208] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003400000001000... +[559229] [83] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... +[559249] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... +[559284] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... +[559300] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... +[559317] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003500000001000... +[559338] [84] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... +[559357] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... +[559372] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... +[559386] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... +[559403] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003600000001000... +[559423] [85] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... +[559441] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... +[559457] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... +[559471] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... +[559487] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003700000001000... +[559508] [86] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... +[559527] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... +[559541] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... +[559556] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... +[559572] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003800000001000... +[559592] [87] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... +[559610] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... +[559624] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... +[559638] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... +[559654] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003900000001000... +[559674] [88] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... +[559693] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... +[559707] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... +[559722] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... +[559737] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003a00000001000... +[559758] [89] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... +[559777] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... +[559791] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... +[559806] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... +[559830] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003b00000001000... +[559851] [90] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... +[559870] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... +[559885] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... +[559900] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... +[559916] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003c00000001000... +[559937] [91] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... +[559955] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... +[559970] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... +[559984] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... +[560000] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003d00000001000... +[560021] [92] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... +[560039] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... +[560054] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... +[560068] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... +[560084] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003e00000001000... +[560105] [93] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... +[560123] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... +[560138] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... +[560152] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... +[560168] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003f00000001000... +[560188] [94] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... +[708506] Download complete. +[709132] Signaling transfer complete. +[710053] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[711030] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[1054782] [8] [svc:undefined] [Directory] (p_data) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008215d17d5c78 +[1055236] [8] [svc:undefined] [Directory] (buffQueue) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008215d17d5c78 +[1055592] [9] [svc:undefined] [Directory] (p_data) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008215d17d7464 +[1055632] [9] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008215d17d7464 +[2394042] [95] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 +[2395216] [95] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 +[2395379] [94] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[2395456] [94] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[2395528] [94] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[2395803] [94] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 12 000004e4000007d200000000 +[2396060] [96] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[2396752] [97] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 +[2396842] [97] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 +[2396943] [96] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[2397036] [96] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[2397115] [96] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[2397301] [96] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 12 000002bb000007d200000000 +[2397428] [98] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[5049590] [10] [svc:undefined] [Directory] (p_data) undefined 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000006dc4617bc0b9 +[5050588] [10] [svc:undefined] [Directory] (buffQueue) undefined 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000006dc4617bc0b9 +[5051287] [11] [svc:undefined] [Directory] (p_data) undefined 44 0000000138e00963fc1a48c0ab93fc689fa2e4550000000000000000000000000000000000006dc43f4bb23e +[5051389] [11] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000138e00963fc1a48c0ab93fc689fa2e4550000000000000000000000000000000000006dc43f4bb23e +[5051836] [12] [svc:undefined] [Directory] (p_data) undefined 44 000000013e5df2e822404938bdf3478dda8c4fa90000000000000000000000000000000000006dc43f5b2384 +[5051939] [12] [svc:undefined] [Directory] (buffQueue) undefined 44 000000013e5df2e822404938bdf3478dda8c4fa90000000000000000000000000000000000006dc43f5b2384 +[5056526] [13] [svc:undefined] [Directory] (p_data) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008216e2464302 +[5056886] [13] [svc:undefined] [Directory] (buffQueue) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008216e2464302 +[5098724] [226] [svc:undefined] [StateMap] (p_data) undefined 874 00000058736d6161000007d200000048002f0045... +[5099389] [226] [svc:undefined] [StateMap] (buffQueue) undefined 874 00000058736d6161000007d200000048002f0045... +[5100258] [227] [svc:undefined] [StateMap] (while) undefined 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5100482] [228] [svc:undefined] [StateMap] (while) undefined 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5100635] [229] [svc:undefined] [StateMap] (while) undefined 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5100812] [230] [svc:undefined] [StateMap] (while) undefined 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5100951] [231] [svc:undefined] [StateMap] (while) undefined 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5101100] [232] [svc:undefined] [StateMap] (while) undefined 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5101254] [233] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5101422] [234] [svc:undefined] [StateMap] (while) undefined 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5101542] [235] [svc:undefined] [StateMap] (while) undefined 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5101673] [236] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5102183] [237] [svc:undefined] [StateMap] (p_data) undefined 1448 00000042736d6161000007d200000032002f0045... +[5102278] [237] [svc:undefined] [StateMap] (buffQueue) undefined 1448 00000042736d6161000007d200000032002f0045... +[5102400] [238] [svc:undefined] [StateMap] (while) undefined 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff +[5102532] [239] [svc:undefined] [StateMap] (while) undefined 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff +[5102645] [240] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff +[5102733] [241] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff +[5102818] [242] [svc:undefined] [StateMap] (while) undefined 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff +[5102909] [243] [svc:undefined] [StateMap] (while) undefined 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5102996] [244] [svc:undefined] [StateMap] (while) undefined 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5103083] [245] [svc:undefined] [StateMap] (while) undefined 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5103177] [246] [svc:undefined] [StateMap] (while) undefined 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5103269] [247] [svc:undefined] [StateMap] (while) undefined 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5103360] [248] [svc:undefined] [StateMap] (while) undefined 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5103449] [249] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5103537] [250] [svc:undefined] [StateMap] (while) undefined 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5103638] [251] [svc:undefined] [StateMap] (while) undefined 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5103742] [252] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5103830] [253] [svc:undefined] [StateMap] (while) undefined 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff +[5103896] [254] [svc:undefined] [StateMap] (while) undefined 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff +[5103962] [255] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff +[5104021] [255] [svc:undefined] [StateMap] (toqueue) undefined 36 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f00440065 +[5105675] [256] [svc:undefined] [StateMap] (p_data) undefined 2526 00000058736d6161000007d200000048002f0045... +[5106038] [256] [svc:undefined] [StateMap] (buffQueue) undefined 2562 0000003e736d6161000007d20000002e002f0045... +[5106450] [257] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f0044006500000058736d6161000007d200000048002f0045006e00670069006e0065 +[5106522] [257] [svc:undefined] [StateMap] (toqueue) undefined 2496 002f004400650063006b0031002f005400720061... +[5107140] [258] [svc:undefined] [StateMap] (p_data) undefined 1302 0063006b0032002f0050006100640073002f0056... +[5107226] [258] [svc:undefined] [StateMap] (buffQueue) undefined 3798 002f004400650063006b0031002f005400720061... +[5107305] [258] [svc:undefined] [StateMap] (toqueue) undefined 3798 002f004400650063006b0031002f005400720061... +[5108632] [259] [svc:undefined] [StateMap] (p_data) undefined 1348 0045006e00670069006e0065002f004400650063... +[5109005] [259] [svc:undefined] [StateMap] (buffQueue) undefined 5146 002f004400650063006b0031002f005400720061... +[5109082] [259] [svc:undefined] [StateMap] (toqueue) undefined 5146 002f004400650063006b0031002f005400720061... +[5110528] [260] [svc:undefined] [StateMap] (p_data) undefined 1208 00000058736d6161000007d200000048002f0045... +[5110872] [260] [svc:undefined] [StateMap] (buffQueue) undefined 6354 002f004400650063006b0031002f005400720061... +[5110936] [260] [svc:undefined] [StateMap] (toqueue) undefined 6354 002f004400650063006b0031002f005400720061... +[5116304] [261] [svc:undefined] [StateMap] (p_data) undefined 1084 0000004c736d6161000007d20000003c002f0045... +[5116640] [261] [svc:undefined] [StateMap] (buffQueue) undefined 7438 002f004400650063006b0031002f005400720061... +[5116706] [261] [svc:undefined] [StateMap] (toqueue) undefined 7438 002f004400650063006b0031002f005400720061... +[5117607] [262] [svc:undefined] [StateMap] (p_data) undefined 360 00000032736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff00000044736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff00000072736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5117941] [262] [svc:undefined] [StateMap] (buffQueue) undefined 7798 002f004400650063006b0031002f005400720061... +[5118008] [262] [svc:undefined] [StateMap] (toqueue) undefined 7798 002f004400650063006b0031002f005400720061... +[5122630] [263] [svc:undefined] [StateMap] (p_data) undefined 234 00000072736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5123086] [263] [svc:undefined] [StateMap] (buffQueue) undefined 8032 002f004400650063006b0031002f005400720061... +[5123155] [263] [svc:undefined] [StateMap] (toqueue) undefined 8032 002f004400650063006b0031002f005400720061... +[6058299] [14] [svc:undefined] [Directory] (p_data) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008216fb8488a4 +[6059243] [14] [svc:undefined] [Directory] (buffQueue) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008216fb8488a4 +[6059851] [15] [svc:undefined] [Directory] (p_data) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008216fb849897 +[6059921] [15] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008216fb849897 +[6489976] [99] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 +[6490744] [99] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 +[6490818] [98] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[6490867] [98] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[6490908] [98] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[6491067] [98] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 12 000004e4000007d200000000 +[6491126] [100] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 +[6491579] [101] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 +[6491807] [101] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 +[6491961] [100] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[6492001] [100] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[6492043] [100] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[6492170] [100] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 12 000002bb000007d200000000 +[6492216] [102] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 diff --git a/network/NetworkDevice.ts b/network/NetworkDevice.ts index 2d615d9..461bec6 100644 --- a/network/NetworkDevice.ts +++ b/network/NetworkDevice.ts @@ -1,3 +1,4 @@ +/* import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens } from '../types'; @@ -324,6 +325,7 @@ export class NetworkDevice { } }); } + */ // private async sendTimeStampMsg(deviceToken: Uint8Array, userToken: Uint8Array, timeAlive?: bigint) { // const ctx = new WriteContext(); @@ -335,4 +337,4 @@ export class NetworkDevice { // const written = await this.connection.write(ctx.getBuffer()); // assert(written === ctx.tell()); // } -} +//} diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 57d3694..4eee851 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -1,6 +1,6 @@ -import { ConnectionInfo, IpAddress, PlayerStatus, ServiceMessage, StageLinqOptions } from '../types'; +import { ConnectionInfo, IpAddress, PlayerStatus, ServiceMessage, Services, StageLinqOptions } from '../types'; import { EventEmitter } from 'events'; -import { NetworkDevice } from '.'; +//import { NetworkDevice } from '.'; import { Player } from '../devices/Player'; import { sleep } from '../utils'; import { Directory, FileTransfer, StateData, StateMap, TimeSynchronization } from '../services'; @@ -8,11 +8,12 @@ import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; import { AddressInfo } from 'net'; +import { dir } from 'console'; //enum ConnectionStatus { CONNECTING, CONNECTED, FAILED }; interface StageLinqDevice { - networkDevice: NetworkDevice; + //networkDevice: NetworkDevice; fileTransferService: FileTransfer; }; @@ -43,10 +44,11 @@ export declare interface StageLinqDevices { export class StageLinqDevices extends EventEmitter { public directoryPort: number = 0; private services: Record> = {}; + private _services: Map> = new Map(); private _databases: Databases; public peers: Map = new Map(); private devices: Map = new Map(); - private services2: Map> = new Map(); + //private services2: Map> = new Map(); //private discoveryStatus: Map = new Map(); private options: StageLinqOptions; @@ -77,36 +79,32 @@ export class StageLinqDevices extends EventEmitter { //await this.startServiceListener(TimeSynchronization); - const fileTransfer = new FileTransfer(initMsg); - const FileTransferInfo = await fileTransfer.listen(); - initMsg.services.set('FileTransfer', FileTransferInfo.port); - - const stateMap = new StateMap(initMsg); - const stateMapInfo = await stateMap.listen(); - initMsg.services.set('StateMap', stateMapInfo.port); - - const directory = new Directory(initMsg);//await this.startServiceListener(Directory); - const serverInfo = await directory.listen(); - initMsg.services.set('DirectoryService', serverInfo.port); - - //await sleep(500); + if (this.options.services.includes(Services.StateMap)) { + const stateMap = new StateMap(initMsg); + const stateMapInfo = await stateMap.listen(); + initMsg.services.set('StateMap', stateMapInfo.port); + this.services[StateMap.name] = stateMap; + this._services.set(StateMap.name, stateMap); + } - this.services2.set("StateMap", stateMap); - this.services2.set("DirectoryService", directory); - this.services2.set("FileTransfer", fileTransfer); - //this.services[timeSync.name] = timeSync - //this.services - //Logger.warn(this.services); + if (this.options.services.includes(Services.FileTransfer)) { + const fileTransfer = new FileTransfer(initMsg); + const FileTransferInfo = await fileTransfer.listen(); + initMsg.services.set('FileTransfer', FileTransferInfo.port); + this.services[FileTransfer.name] = fileTransfer; + this._services.set(FileTransfer.name, fileTransfer); + } + + const directory = new Directory(initMsg); + const directoryInfo = await directory.listen(); + initMsg.services.set('DirectoryService', directoryInfo.port); + this.directoryPort = directoryInfo.port; + this.services[Directory.name] = directory; + this._services.set(Directory.name, directory); - return serverInfo - /* - this.services['Directory'].on('listening', (serverInfo) =>{ - this.directoryPort = serverInfo.port - return - }); - */ + return directoryInfo } - +/* // Factory function async startServiceListener>(ctor: { new (p_initMsg:ServiceInitMessage): T; @@ -135,22 +133,8 @@ export class StageLinqDevices extends EventEmitter { return service; } -/* - async handleDevice(connectionInfo: ConnectionInfo) { - Logger.silly(this.showDiscoveryStatus(connectionInfo)); - - // Ignore this discovery message if we've already connected to it, - // are still connecting, if it has failed, or if it's blacklisted. - if (this.isConnected(connectionInfo) - || this.isConnecting(connectionInfo) - || this.isFailed(connectionInfo) - || this.isIgnored(connectionInfo)) return; - - //this.connectToDevice(connectionInfo); - const networkDevice = new NetworkDevice(connectionInfo); - networkDevice.listen(); - } -*/ + */ + /** * Disconnect from all connected devices */ @@ -158,11 +142,17 @@ export class StageLinqDevices extends EventEmitter { //for (const device of this.devices.values()) { // device.networkDevice.disconnect(); //} - console.warn('closing servers') - let StateMap = this.services2.get('StateMap'); - let Directory = this.services2.get('DirectoryService'); - await StateMap.server.close(); - await Directory.server.close(); + //console.info('closing servers') + this._services.forEach(service => { + console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); + service.server.close(); + }) + + //const stateMap = this.services[StateMap.name]; + //const directory = this.services[Directory.name]; + //this.services + //await stateMap.server.close(); + //await directory.server.close(); } @@ -170,151 +160,16 @@ export class StageLinqDevices extends EventEmitter { return this._databases; } + /* async downloadFile(deviceId: string, path: string) { const device = this.devices.get(deviceId); const file = await device.fileTransferService.getFile(path); return file; } + */ //////////////////////////////////////////////////////////////////////////// - /** - * Waits for all devices to be connected with databases downloaded - * then connects to the StateMap. - * - * Explained: - * - * Why wait for all devices? Because a race condition exists when using the - * database methods. - * - * If there are two SC6000 players on the network both will be sending - * broadcast packets and so their StateMap can be initialized at any time - * in any order. - * - * Assume you have player 1 and player 2 linked. Player 2 has a track that - * is loaded from a USB drive plugged into player 1. Player 2 will be - * ready before Player 1 because Player 1 will still be downloading a large - * database. The race condition is if you try to read from the database on - * the track that is plugged into Player 1 that isn't ready yet. - * - * This method prevents that by waiting for both players to connect and - * have their databases loaded before initializing the StateMap. - * - */ - /* - private waitForAllDevices() { - Logger.log('Start watching for devices ...'); - this.deviceWatchTimeout = setInterval(async () => { - // Check if any devices are still connecting. - const values = Array.from(this.discoveryStatus.values()); - const foundDevices = values.length >= 1; - const allConnected = !values.includes(ConnectionStatus.CONNECTING); - const entries = Array.from(this.discoveryStatus.entries()); - Logger.debug(`Waiting devices: ${JSON.stringify(entries)}`); - - if (foundDevices && allConnected) { - Logger.log('All devices found!'); - Logger.debug(`Devices found: ${values.length} ${JSON.stringify(entries)}`); - clearInterval(this.deviceWatchTimeout); - for (const cb of this.stateMapCallback) { - this.setupStateMap(cb.connectionInfo, cb.networkDevice); - } - this.emit('ready'); - } else { - Logger.log(`Waiting for devices ...`); - } - }, WAIT_FOR_DEVICES_TIMEOUT_MS); - } -*/ - /** - * Attempt to connect to a device. Retry if necessary. - * - * @param connectionInfo Connection info - * @returns - */ - /* - private async connectToDevice(connectionInfo: ConnectionInfo) { - - // Mark this device as connecting. - this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.CONNECTING); - - let attempt = 1; - while (attempt < this.options.maxRetries) { - try { - - // Connect to the device. - Logger.info(`Connecting to ${this.deviceId(connectionInfo)}. ` + - `Attempt ${attempt}/${this.options.maxRetries}`); - const networkDevice = new NetworkDevice(connectionInfo); - await networkDevice.connect(); - - // Setup file transfer service - await this.setupFileTransferService(networkDevice, connectionInfo); - - // Download the database - if (this.options.downloadDbSources) { - await this.downloadDatabase(networkDevice, connectionInfo); - } - - // Setup other services that should be initialized before StateMap here. - - // StateMap will be initialized after all devices have completed - // this method. In other words, StateMap will initialize - // after all entries in this.discoveryStatus return - // ConnectionStatus.CONNECTED - - // Append to the list of states we need to setup later. - //this.stateMapCallback.push({ connectionInfo, networkDevice }); - - // Mark this device as connected. - this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.CONNECTED); - this.emit('connected', connectionInfo); - - return; // Don't forget to return! - } catch(e) { - - // Failed connection. Sleep then retry. - Logger.warn(`Could not connect to ${this.deviceId(connectionInfo)} ` + - `(${attempt}/${this.options.maxRetries}): ${e}`); - attempt += 1; - sleep(500); - } - } - // We failed 3 times. Throw exception. - this.discoveryStatus.set(this.deviceId(connectionInfo), ConnectionStatus.FAILED); - throw new Error(`Could not connect to ${this.deviceId(connectionInfo)}`); - } - - private async setupFileTransferService(networkDevice: NetworkDevice, connectionInfo: ConnectionInfo) { - const sourceId = this.sourceId(connectionInfo); - Logger.info(`Starting file transfer for ${this.deviceId(connectionInfo)}`); - const fileTransfer = await networkDevice.connectToService(FileTransfer); - - this.devices.set(`net://${sourceId}`, { - networkDevice: networkDevice, - fileTransferService: fileTransfer - }); - } -*/ - /** - * Download databases from the device. - * - * @param connectionInfo Connection info - * @returns - */ - /* - private async downloadDatabase(networkDevice: NetworkDevice, connectionInfo: ConnectionInfo) { - const sources = await this.databases.downloadSourcesFromDevice(connectionInfo, networkDevice); - Logger.debug(`Database sources: ${sources.join(', ')}`); - Logger.debug(`Database download complete for ${connectionInfo.source}`); - } - - private sourceId(connectionInfo: ConnectionInfo) { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(connectionInfo.token).toString('hex')).splice(1).join('-'); - } - */ - /** * Setup stateMap. * diff --git a/network/announce.ts b/network/announce.ts index 5d6abcd..13fb85a 100644 --- a/network/announce.ts +++ b/network/announce.ts @@ -5,6 +5,7 @@ import { LISTEN_PORT, } from '../types'; import { createSocket, Socket as UDPSocket } from 'dgram'; +import * as dgram from 'dgram' import { Logger } from '../LogEmitter'; import { networkInterfaces } from 'os'; import { strict as assert } from 'assert'; @@ -70,8 +71,10 @@ async function broadcastMessage(p_message: Uint8Array): Promise { reject(new Error('Failed to send announcement')); }, CONNECT_TIMEOUT); + const address = announceClient.address() + announceClient.send(p_message, LISTEN_PORT, p_ip, () => { - // Logger.log('UDP message sent to ' + p_ip); + // Logger.log('UDP message sent to ' + p_ip, ' from port ' + address.port); resolve(); }); }); @@ -108,7 +111,7 @@ export async function announce(message: DiscoveryMessage): Promise { await broadcastMessage(msg); announceTimer = setInterval(broadcastMessage, ANNOUNCEMENT_INTERVAL, msg); - Logger.info("Announced myself"); + Logger.info(`Announced myself on ${message.port}`); } export interface DiscoveryMessageOptions { diff --git a/network/index.ts b/network/index.ts index 25d4180..5f33a5d 100644 --- a/network/index.ts +++ b/network/index.ts @@ -1,4 +1,4 @@ export * from './announce'; -export * from './NetworkDevice'; +//export * from './NetworkDevice'; export * from './StageLinqDevices' export * from './StageLinqListener'; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d8fd990..8791f33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,16 @@ { "name": "stagelinq", - "version": "0.1.0", + "version": "1.0.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "stagelinq", - "version": "0.1.0", + "version": "1.0.7", "license": "GNU GPLv3", "dependencies": { + "@types/filesystem": "^0.0.32", + "@types/uuid": "^8.3.4", "better-sqlite3": "^7.5.0", "console-stamp": "^3.0.3", "file-type": "^16.5.3", @@ -43,6 +45,19 @@ "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", "dev": true }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" + }, "node_modules/@types/ip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", @@ -64,6 +79,11 @@ "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", "dev": true }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -939,6 +959,19 @@ "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", "dev": true }, + "@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "requires": { + "@types/filewriter": "*" + } + }, + "@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" + }, "@types/ip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", @@ -960,6 +993,11 @@ "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", "dev": true }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", diff --git a/package.json b/package.json index 5b2dcb9..19120c8 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "license": "GNU GPLv3", "main": "index.ts", "dependencies": { + "@types/filesystem": "^0.0.32", + "@types/uuid": "^8.3.4", "better-sqlite3": "^7.5.0", "console-stamp": "^3.0.3", "file-type": "^16.5.3", diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 905d706..106d3b3 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -18,9 +18,12 @@ export const CHUNK_SIZE = 4096; type FileTransferData = any; interface FileTransferServiceData extends ServiceData { - source?: Source; + source?: Source } +type DeviceSources = { + [key: string]: Source; +} enum MessageId { TimeCode = 0x0, @@ -43,60 +46,93 @@ export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (progress: FileTransferProgress) => void): this; } +function fastForward(ctx: ReadContext, targetString: string, msgId: number): ReadContext { + + assert(targetString.length % 2 === 0); + const shiftLeft = (collection:Uint8Array, value:any) => { + for (let i = 0; i < collection.length - 1; i++) { + collection[i] = collection[i + 1]; // Shift left + } + collection[collection.length - 1] = value; // Place new value at tail + return collection; + } + + const ctxSize = ctx.sizeLeft(); + const bufferSize = (targetString.length / 2); + let checkBufferArray = new Uint8Array(bufferSize); + checkBufferArray.fill(0); + let count = 0; + + while (Buffer.from(checkBufferArray).toString('hex') !== targetString) { + shiftLeft(checkBufferArray, ctx.read(1)); + count++ + if (ctx.isEOF()) { + ctx.seek(0-ctxSize) + Logger.debug(`[${msgId}] fastForwarded checked ${count} bytes, returned original`); + return ctx + } + } + ctx.seek(0-bufferSize); + if (count !== bufferSize) { + Logger.debug(`[${msgId}] fastForwarded ${count} bytes`); + } + return ctx +}; export class FileTransfer extends Service { private receivedFile: WriteContext = null; public name: string = "FileTransfer"; public services: Map = new Map(); + public sources: Map = new Map(); + + public deviceSources: Map = new Map(); async init() {} - private testPoint(ctx: ReadContext, deviceId: string, msgId: number, name: string): ReadContext { - const length = ctx.sizeLeft(); - const buff = ctx.readRemainingAsNewBuffer().toString('hex'); - ctx.seek(0- length); - console.log(`[${msgId}] (${name}) ${deviceId} ${length} ${buff}`); - return ctx - } - - protected parseData(p_ctx: ReadContext, socket: Socket, msgId:number): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket, msgId:number, svcMsg?: boolean): ServiceMessage { - //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "pre" ); + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "preSvc", true); //test if this is a serviceRequest - const checkSvcReq = p_ctx.readUInt32(); + + //const checkSvcReq = p_ctx.readUInt32(); //if (p_ctx.sizeLeft() === 88 && checkSvcReq === 0) { - if (checkSvcReq === 0) { + //console.warn(p_ctx.sizeLeft()); + if (svcMsg) { //console.log(msgId, checkSvcReq); + const _msgId = p_ctx.readUInt32(); const token = p_ctx.read(16); - const svcName = p_ctx.readNetworkStringUTF16(); - const svcPort = p_ctx.readUInt16(); - const length = p_ctx.readUInt32(); - const deviceId = deviceIdFromBuff(token); - this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); - this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); - - const thisDevice: FileTransferServiceData = { - deviceId: deviceId, - socket: socket, - service: this + + if (this.parent.peers.has(deviceIdFromBuff(token))) { + const svcName = p_ctx.readNetworkStringUTF16(); + const svcPort = p_ctx.readUInt16(); + const length = p_ctx.readUInt32(); + const deviceId = deviceIdFromBuff(token); + this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); + this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); + + const thisDevice: FileTransferServiceData = { + deviceId: deviceId, + socket: socket, + service: this + } + this.services.set(deviceId, thisDevice); + + console.log(`[${msgId}] `,deviceId, svcName, svcPort); + } else { + p_ctx.seek(-20); } - this.services.set(deviceId, thisDevice); - console.log(`[${msgId}] `,deviceId, svcName, svcPort); - } else { - p_ctx.seek(-4); - } - - - //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "pre-mag" ); - + } //else { + //p_ctx.seek(-4); + //} + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "postSvc", true); + /* let checkBufferArray = new Uint8Array([0,0,0,0]) - //const fltxArray = new Uint8Array([102, 108, 116, 120]); const shiftLeft = (collection:Uint8Array, value:any) => { for (let i = 0; i < collection.length - 1; i++) { @@ -110,19 +146,25 @@ export class FileTransfer extends Service { while (checkString !== "666c7478") { shiftLeft(checkBufferArray, p_ctx.read(1)); - //console.log(checkString); checkString = Buffer.from(checkBufferArray).toString('hex'); if (p_ctx.isEOF()) { return } } - p_ctx.seek(-4); + */ + + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "ff-pre", true, svcMsg ); + if (p_ctx.sizeLeft() < 100) { + p_ctx = fastForward(p_ctx, "666c7478", msgId); + } - //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "post-mag" ); const check = p_ctx.getString(4); - assert(check === MAGIC_MARKER); + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true, svcMsg ); + if (check !== MAGIC_MARKER) { + Logger.error(msgId,svcMsg, assert(check === MAGIC_MARKER)) + } let code = p_ctx.readUInt32(); @@ -138,6 +180,7 @@ export class FileTransfer extends Service { message: { timecode: code, }, + socket: socket, }; } @@ -161,15 +204,20 @@ export class FileTransfer extends Service { assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.isEOF()); - console.log(this.getDeviceIdFromSocket(socket), sources); - //const device = this.services.get(this.getDeviceIdFromSocket(socket)); - //console.info(this.services.entries()); - //this.downloadDb(device); + + if (sources.length) { + Logger.debug(`getting sources for `, this.getDeviceIdFromSocket(socket)); + this.getSources(sources, socket); + } + return { id: messageId, message: { sources: sources, + socket: socket, + }, + }; } @@ -183,6 +231,7 @@ export class FileTransfer extends Service { message: { size: size, }, + socket: socket, }; } @@ -191,6 +240,7 @@ export class FileTransfer extends Service { return { id: messageId, message: null, + socket: socket, }; } @@ -202,6 +252,7 @@ export class FileTransfer extends Service { return { id: messageId, + socket: socket, message: { size: filesize, txid: id, @@ -218,6 +269,7 @@ export class FileTransfer extends Service { return { id: messageId, + socket: socket, message: { data: p_ctx.readRemainingAsNewBuffer(), offset: offset, @@ -228,20 +280,16 @@ export class FileTransfer extends Service { case MessageId.Unknown0: { - //console.log(this.getDeviceIdFromSocket(socket), ' size left: ', p_ctx.sizeLeft()); - //console.log(p_ctx.readRemainingAsNewBuffer().toString('hex')); if (p_ctx.sizeLeft() >= 5) { - //console.log(`[${msgId}] case`,this.getDeviceIdFromSocket(socket), ' size left: ', p_ctx.sizeLeft()); - //console.log(`[${msgId}] case`,p_ctx.readRemainingAsNewBuffer().toString('hex')); - p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "case" ); - console.log(`requesting sources from `, this.getDeviceIdFromSocket(socket)); - //this.requestSources(socket); - const source = this.getSources(socket); - //console.debug(this.serviceList); + + Logger.debug(`requesting sources from `, this.getDeviceIdFromSocket(socket)); + this.requestSources(socket); + } return { id: messageId, + socket: socket, message: null, }; } @@ -317,14 +365,30 @@ export class FileTransfer extends Service { this.receivedFile = null; return buf; } +/* +export interface Source { + name: string; + database: { + location: string; + size: number; + }; +} +*/ - async getSources(socket: Socket): Promise { +/* + async getSources( socket: Socket): Promise { const result: Source[] = []; - await this.requestSources(socket); + + await this.requestSourcesOrig(socket); const message = await this.waitForMessage(MessageId.SourceLocations); + //console.log('message ', message); if (message) { + + const msgDeviceId = (message.socket) ? this.getDeviceIdFromSocket(message.socket) : "noSocket" + //console.log('message ', msgDeviceId, message); for (const source of message.sources) { + Logger.info('getSource source: ', source); //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; for (const database of databases) { @@ -338,6 +402,8 @@ export class FileTransfer extends Service { location: database, size: fstatMessage.size, }, + + }); //const data = this.serviceList.get(deviceId); const thisDevice: FileTransferServiceData = { @@ -352,8 +418,11 @@ export class FileTransfer extends Service { } } } + //Logger.debug(thisDevice); this.services.set(deviceId, thisDevice); - this.downloadDb(thisDevice); + this.sources.set(deviceId, thisDevice); + await sleep(500); + this.downloadDb(deviceId); break; } } @@ -362,6 +431,72 @@ export class FileTransfer extends Service { return result; } + */ + + + async getSources(sources: string[], socket: Socket): Promise { + const result: Source[] = []; + let devices: DeviceSources = {} + + + //await this.requestSources(socket); + //const message = await this.waitForMessage(MessageId.SourceLocations); + //console.log('message ', message); + //if (message) { + + const msgDeviceId = this.getDeviceIdFromSocket(socket);// : "noSocket" + //console.log('message ', msgDeviceId, message.sources); + for (const source of sources) { + //Logger.info('getSource source: ', source); + //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db + const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; + for (const database of databases) { + await this.requestStat(database, socket); + const fstatMessage = await this.waitForMessage(MessageId.FileStat); + const deviceId = this.getDeviceIdFromSocket(socket); + if (fstatMessage.size > 0) { + + const thisSource: Source = { + name: source, + database: { + location: database, + size: fstatMessage.size, + } + } + + result.push(thisSource); + //const data = this.serviceList.get(deviceId); + /* + const thisDevice: FileTransferServiceData = { + deviceId: deviceId, + socket: socket, + service: this, + source: { + name: source, + database: { + location: database, + size: fstatMessage.size + } + } + } + */ + //Logger.debug(thisDevice); + //this.services.set(deviceId, thisDevice); + this.sources.set(deviceId, thisSource); + devices[source] = thisSource; + //await sleep(500); + //this.downloadDb(deviceId); + break; + } + } + } + //} + await this.deviceSources.set(msgDeviceId, devices); + this.downloadDb(msgDeviceId); + const testDev = this.deviceSources.get(msgDeviceId); + Logger.info(testDev); + return result; + } /////////////////////////////////////////////////////////////////////////// // Private methods @@ -421,30 +556,36 @@ export class FileTransfer extends Service { await this.writeWithLength(ctx, socket); } - async downloadDb(source: FileTransferServiceData) { // sourceId: string, service: FileTransfer, _source: Source) { - //console.info(source); - const dbPath = getTempFilePath(`${source.deviceId}/m.db`); + async downloadDb(deviceId: string) { // sourceId: string, service: FileTransfer, _source: Source) { //console.info(source); - // Read database from source - //if (!source.source) { - // source = this.services.get(source.deviceId); - //} - Logger.debug(`Reading database ${source.deviceId}`); - this.emit('dbDownloading', source.deviceId, dbPath); - - this.on('fileTransferProgress', (progress) => { - this.emit('dbProgress', source.deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - }); + Logger.info(`downloadDb request for ${deviceId}`); + const deviceSources = this.deviceSources.get(deviceId); + const service = this.services.get(deviceId) + + for (const sourceName in deviceSources) { + + const source = deviceSources[sourceName]; + const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); + + Logger.debug(`Reading database ${deviceId}/${source.name}`); + this.emit('dbDownloading', deviceId, dbPath); + + //this.on('fileTransferProgress', (progress) => { + //this.emit('fileTransferProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + // Logger.debug('fileTransferProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + //}); // Save database to a file - const file = await this.getFile(source.source.database.location, source.socket); - Logger.debug(`Saving ${source.deviceId} to ${dbPath}`); + const file = await this.getFile(source.database.location, service.socket); + Logger.debug(`Saving ${service.deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); - //this.sources.set(sourceId, dbPath); - Logger.debug(`Downloaded ${source.deviceId} to ${dbPath}`); - this.emit('dbDownloaded', source.deviceId, dbPath); + Logger.debug(`Downloaded ${service.deviceId}/${sourceName} to ${dbPath}`); + this.emit('dbDownloaded', service.deviceId, dbPath); } + +} + /* getDbPath(dbSourceName?: string) { if (!this.sources.size) diff --git a/services/Service.ts b/services/Service.ts index d8bc150..260f591 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,13 +1,10 @@ -//import { hex } from '../utils/hex'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo } from '../types'; -import { NetworkDevice } from '../network/NetworkDevice'; +import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo, deviceIdFromBuff } from '../types'; import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; -//import * as tcp from '../utils/tcp'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; import type { ServiceMessage, IpAddress } from '../types'; @@ -31,14 +28,14 @@ export abstract class Service extends EventEmitter { //private address: string; //private port: number; protected preparseData:boolean = true; - public readonly name: string; + public readonly name: string = "Service"; public serverInfo: AddressInfo; public serverStatus: string; public connections: Map = new Map(); public deviceIds: Map = new Map(); public deviceIps: Map = new Map(); public serviceList: Map = new Map(); - protected controller: NetworkDevice; + //protected controller: NetworkDevice; //protected connection: tcp.Connection = null; protected connection: Socket = null; public server: Server = null; @@ -51,27 +48,76 @@ export abstract class Service extends EventEmitter { super(); this.parent = p_initMsg.parent; this.serInitMsg = p_initMsg; - + } + protected isSubMsg(ctx: ReadContext): boolean { + //return new Promise((resolve, reject) => { + //const ttx = ctx.readRemainingAsNewBuffer(); + //ctx.rewind(); + + + const messageId = ctx.readUInt32() + //console.log(messageId) + + const token = ctx.read(16); + + if (messageId === 0 && this.parent.peers.has(deviceIdFromBuff(token))) { + return true + } else { + return false + } + + /* + while (ctx.isEOF() === false) { + //console.log(ctx.sizeLeft()); + if (ctx.sizeLeft() <= 20) {break;} + const messageId = ctx.readUInt32() + //console.log(messageId) + if (messageId !== 0) {break;} + const token = ctx.read(16); + //console.log(Buffer.from(token).toString('hex')) + if (ctx.sizeLeft() < 4) {break;} + const length = ctx.readUInt32(); + //console.log(length, ctx.sizeLeft()); + if (length > ctx.sizeLeft()) {break;} + ctx.seek(-4); + + const service = ctx.readNetworkStringUTF16() + //console.log(service); + //if (ctx.sizeLeft() <= 4) {break;} + //ctx.rewind(); + return true + //resolve(new ReadContext(ttx, false)); + } + //reject(new ReadContext(ttx, false)) + //}); + //ctx.rewind(); + return false + */ + //const messageId = ctx.readUInt32; + } async createServer(serviceName: string): Promise { return await new Promise((resolve, reject) => { let queue: Buffer = null; const server = net.createServer((socket) => { - console.log(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + //const deviceId = this.deviceIps.set([socket.rem]) + Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + socket.on('error', (err) => { reject(err); }); - //socket.on('connect', () => { - - //}); - socket.on('data', async p_data => { - + + socket.on('data', p_data => { + //let messages:ReadContext[] = []; const thisMsgId = this.msgId; this.msgId++ + const testArrayBuffer = p_data.buffer.slice(p_data.byteOffset, p_data.byteOffset + p_data.byteLength); + const ttx = new ReadContext(testArrayBuffer,false); + this.testPoint(ttx, this.getDeviceIdFromSocket(socket), this.msgId, "p_data", true ); - - //console.log(`Received data on ${serviceName}!!`) + const isSub = this.isSubMsg(ttx); + let buffer: Buffer = null; if (queue && queue.length > 0) { buffer = Buffer.concat([queue, p_data]); @@ -81,77 +127,89 @@ export abstract class Service extends EventEmitter { // FIXME: Clean up this arraybuffer confusion mess const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); - const ctx = new ReadContext(arrayBuffer, false); + let ctx = new ReadContext(arrayBuffer, false); + this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "buffQueue", true ); queue = null; - const testBuf = ctx.readRemainingAsNewBuffer(); - ctx.rewind(); - const messageId = ctx.readUInt32(); + //ctx = await this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "data", true ); + /* + let isSub = false; + while (ctx.isEOF() === false) { + if (ctx.sizeLeft() <= 20) break; + const messageId = ctx.readUInt32() + if (messageId !== 0) break; + const token = ctx.read(16); + if (ctx.sizeLeft() < 4) break; + const length = ctx.readUInt32(); + if (length <= ctx.sizeLeft()) break; + ctx.seek(-4); + const service = ctx.readNetworkStringUTF16() + if (ctx.sizeLeft() !== 4) break; + isSub = true; + const port = ctx.readUInt16(); + } + ctx.rewind(); - +*/ - if (this.preparseData && messageId != 0) { + + //const messageId = ctx.readUInt32(); + //ctx.rewind(); + //console.warn(socket.localPort, " ", this.parent.directoryPort); + if (!this.preparseData || socket.localPort === this.parent.directoryPort || isSub) { + try { + //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); + const parsedData = this.parseData(ctx, socket,thisMsgId, isSub); + this.emit('message', parsedData); + this.messageHandler(parsedData); + } catch (err) { + Logger.error(this.msgId, err); + } + } else { try { + //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); while (ctx.isEOF() === false) { - //console.log(`size remaining: `,ctx.sizeLeft()) if (ctx.sizeLeft() < 4) { queue = ctx.readRemainingAsNewBuffer(); break; } - //console.log(`size remaining after if: `,ctx.sizeLeft()) - //const testBuf = ctx.readRemainingAsNewBuffer(); - const length = ctx.readUInt32(); - //console.log(length, testBuf); + + const length = ctx.readUInt32() if ( length <= ctx.sizeLeft()) { const message = ctx.read(length); // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - //Logger.info("RECV", length); - //hex(message); - const parsedData = this.parseData(new ReadContext(data, false),socket,thisMsgId); - + //let data = new ReadContext(message.buffer.slice(message.byteOffset, message.byteOffset + length), false) + //data = await this.testPoint(data, this.getDeviceIdFromSocket(socket), this.msgId, "preparse", true ); + + this.msgId++ + const parsedData = this.parseData(new ReadContext(data,false), socket, thisMsgId); + this.testPoint(new ReadContext(data,false), this.getDeviceIdFromSocket(socket), this.msgId, "while", true ); + //messages.push(new ReadContext(data, false)) // Forward parsed data to message handler + this.messageHandler(parsedData); this.emit('message', parsedData); } else { ctx.seek(-4); // Rewind 4 bytes to include the length again + this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "toqueue", true ); queue = ctx.readRemainingAsNewBuffer(); break; } } + //for (const ctx of messages) { + // const stringMsg = ctx.getString(ctx.sizeLeft()) + // console.log(stringMsg); + //} } catch (err) { - // FIXME: Rethrow based on the severity? - //console.log(testBuf); - Logger.error(err); + Logger.error(this.msgId, err); } - } else { - const parsedData = await this.parseData(ctx, socket,thisMsgId); - this.messageHandler(parsedData); } - - - - - - - - - - - - - }); - }).listen(0, '0.0.0.0', () => { this.serverInfo = server.address() as net.AddressInfo; - //console.log(address,port); console.log(`opened ${this.name} server on ${this.serverInfo.port}`); - //this.subConnection[serviceName] = { - // socket: server, - // port: port - //} resolve(server); }); }); @@ -161,34 +219,6 @@ export abstract class Service extends EventEmitter { const server = await this.createServer(this.name) this.server = server; return server.address() as net.AddressInfo; - - - /* - const server = new Server - let queue: Buffer = null; - server.listen(); - server.on('error', (err) =>{ - //throw new error err - throw new Error(`Server Error ${err}`); - }); - server.on('listen', () => { - this.serverStatus = 'listening' - this.serverInfo = server.address() as AddressInfo; - this.emit('listening', this.serverInfo); - }); - server.on('connection', (socket: Socket) => { - //resolve(socket) - this.connection = socket; - this.serverStatus = 'Connected'; - this.emit('connected', this.connection); - }); - server.on('data', (p_data: Buffer) =>{ - const ctx = new ReadContext(p_data, false); - this.parseData(ctx); - }); - - */ - } @@ -262,14 +292,10 @@ export abstract class Service extends EventEmitter { } catch (e) { Logger.error('Error disconnecting', e); } finally { - this.connection = null; + //this.connection = null; } } - //closeServer() { - - //} - getDeviceIdFromSocket(socket: Socket):string { const ipPort = [socket.remoteAddress, socket.remotePort].join(":"); const deviceId = this.deviceIps.get(ipPort); @@ -281,6 +307,7 @@ export abstract class Service extends EventEmitter { const listener = (p_message: ServiceMessage) => { if (p_message.id === p_messageId) { this.removeListener('message', listener); + //resolve(p_message.message); resolve(p_message.message); } }; @@ -293,18 +320,13 @@ export abstract class Service extends EventEmitter { async write(p_ctx: WriteContext, socket: Socket) { assert(p_ctx.isLittleEndian() === false); - //assert(this.connection); const buf = p_ctx.getBuffer(); - // Logger.info("SEND"); - //hex(buf); const written = await socket.write(buf); - //assert(written === buf.byteLength); return written; } async writeWithLength(p_ctx: WriteContext, socket: Socket) { assert(p_ctx.isLittleEndian() === false); - //assert(this.connection); const newCtx = new WriteContext({ size: p_ctx.tell() + 4, autoGrow: false }); newCtx.writeUInt32(p_ctx.tell()); newCtx.write(p_ctx.getBuffer()); @@ -317,15 +339,29 @@ export abstract class Service extends EventEmitter { return thisEntry.keys.toString(); } + protected testPoint(_ctx: ReadContext, deviceId: string, msgId: number, name: string, silent?:boolean, isSvc?: boolean) { + const ctx = _ctx.readRemainingAsNewCtx(); + const length = ctx.sizeLeft(); + let buff = ctx.readRemainingAsNewBuffer().toString('hex'); + ctx.seek(0- length); + if (buff.length > 1000) { + buff = buff.substring(0,40); + buff += "..."; + } + if (silent) { + Logger.silent(`[${msgId}] [svc:${isSvc}] [${this.name}] (${name}) ${deviceId} ${length} ${buff}`); + } else { + Logger.debug(`[${msgId}] [svc:${isSvc}] [${this.name}] (${name}) ${deviceId} ${length} ${buff}`); + } + } + // FIXME: Cannot use abstract because of async; is there another way to get this? protected async init() { assert.fail('Implement this'); } - //protected dataPreparser() - - protected abstract parseData(p_ctx: ReadContext, socket?: Socket, msgId?: number): ServiceMessage; + protected abstract parseData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; } diff --git a/services/StateMap.ts b/services/StateMap.ts index f8997ad..7e8dc4b 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,5 +1,5 @@ import { strict as assert } from 'assert'; -import { StageLinqValue } from '../types'; +import { StageLinqValue, StageLinqValueObj } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; @@ -89,6 +89,7 @@ const MAGIC_MARKER_JSON = 0x00000000; export interface StateData { name?: string; client?: string; + msgId?: number; json?: { type: number; string?: string; @@ -104,13 +105,24 @@ export class StateMap extends Service { } public async subscribe(socket: Socket) { - for (const state of States) { - await this.subscribeState(state, 0, socket); + + const keys = Object.keys(StageLinqValueObj); + //console.log(keys); + const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) + //console.log(values); + for (const value of values) { + //const stateValue: string = StageLinqValueObj[state]; + await this.subscribeState(value, 0, socket); } + + //for (const state of States) { + // await this.subscribeState(state, 0, socket); + //} } - protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number, isSub: boolean): ServiceMessage { + //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "parseTop",true ); //test if this is a serviceRequest const checkSvcReq = p_ctx.readUInt32(); if (p_ctx.sizeLeft() === 38 && checkSvcReq === 0) { @@ -128,16 +140,26 @@ export class StateMap extends Service { const type = p_ctx.readUInt32(); switch (type) { case MAGIC_MARKER_JSON: { + // p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "parseJSON", true); const name = p_ctx.readNetworkStringUTF16(); - const json = JSON.parse(p_ctx.readNetworkStringUTF16()); - return { - id: MAGIC_MARKER_JSON, - message: { - name: name, - client: [socket.remoteAddress,socket.remotePort].join(":"), - json: json, - }, - }; + let jsonString = ""; + try { + jsonString = p_ctx.readNetworkStringUTF16(); + const json = JSON.parse(jsonString); + return { + id: MAGIC_MARKER_JSON, + message: { + name: name, + client: [socket.remoteAddress,socket.remotePort].join(":"), + msgId: msgId, + json: json, + }, + }; + } catch(err) { + Logger.error(this.name, msgId, jsonString, err); + } + + } case MAGIC_MARKER_INTERVAL: { @@ -148,6 +170,7 @@ export class StateMap extends Service { message: { name: name, client: [socket.remoteAddress,socket.remotePort].join(":"), + msgId: msgId, interval: interval, }, }; @@ -163,7 +186,7 @@ export class StateMap extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.message.json) { Logger.info( - `${p_data.message.client} ${p_data.message.name} => ${ + `[${p_data.message.msgId}] ${p_data.message.client} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` ); @@ -186,7 +209,11 @@ export class StateMap extends Service { const ctx = new WriteContext(); ctx.writeUInt32(message.length); ctx.write(message) - await socket.write(ctx.getBuffer()); + const buffer = ctx.getBuffer(); + //Logger.debug('subscribe ', buffer.toString('hex')); + await socket.write(buffer); + //ctx.rewind(); + } } diff --git a/types/common.ts b/types/common.ts index 1b37ba8..ff6baf4 100644 --- a/types/common.ts +++ b/types/common.ts @@ -238,3 +238,226 @@ export enum StageLinqValue { MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', } + +export const StageLinqValueObj = { + ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', + ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', + ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', + ClientPreferencesLayerB: '/Client/Preferences/LayerB', + ClientPreferencesPlayer: '/Client/Preferences/Player', + ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', + ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', + ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', + ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', + ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', + ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', + ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', + ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', + ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', + ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', + ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', + ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', + ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', + EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', + EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', + EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', + EngineDeck1PadsView: '/Engine/Deck1/Pads/View', + EngineDeck1Play: '/Engine/Deck1/Play', + EngineDeck1PlayState: '/Engine/Deck1/PlayState', + EngineDeck1PlayStatePath: '/Engine/Deck1/PlayStatePath', + EngineDeck1Speed: '/Engine/Deck1/Speed', + EngineDeck1SpeedNeutral: '/Engine/Deck1/SpeedNeutral', + EngineDeck1SpeedOffsetDown: '/Engine/Deck1/SpeedOffsetDown', + EngineDeck1SpeedOffsetUp: '/Engine/Deck1/SpeedOffsetUp', + EngineDeck1SpeedRange: '/Engine/Deck1/SpeedRange', + EngineDeck1SpeedState: '/Engine/Deck1/SpeedState', + EngineDeck1SyncMode: '/Engine/Deck1/SyncMode', + EngineDeck1TrackArtistName: '/Engine/Deck1/Track/ArtistName', + EngineDeck1TrackBleep: '/Engine/Deck1/Track/Bleep', + EngineDeck1TrackCuePosition: '/Engine/Deck1/Track/CuePosition', + EngineDeck1TrackCurrentBPM: '/Engine/Deck1/Track/CurrentBPM', + EngineDeck1TrackCurrentKeyIndex: '/Engine/Deck1/Track/CurrentKeyIndex', + EngineDeck1TrackCurrentLoopInPosition: '/Engine/Deck1/Track/CurrentLoopInPosition', + EngineDeck1TrackCurrentLoopOutPosition: '/Engine/Deck1/Track/CurrentLoopOutPosition', + EngineDeck1TrackCurrentLoopSizeInBeats: '/Engine/Deck1/Track/CurrentLoopSizeInBeats', + EngineDeck1TrackKeyLock: '/Engine/Deck1/Track/KeyLock', + EngineDeck1TrackLoopEnableState: '/Engine/Deck1/Track/LoopEnableState', + EngineDeck1TrackLoopQuickLoop1: '/Engine/Deck1/Track/Loop/QuickLoop1', + EngineDeck1TrackLoopQuickLoop2: '/Engine/Deck1/Track/Loop/QuickLoop2', + EngineDeck1TrackLoopQuickLoop3: '/Engine/Deck1/Track/Loop/QuickLoop3', + EngineDeck1TrackLoopQuickLoop4: '/Engine/Deck1/Track/Loop/QuickLoop4', + EngineDeck1TrackLoopQuickLoop5: '/Engine/Deck1/Track/Loop/QuickLoop5', + EngineDeck1TrackLoopQuickLoop6: '/Engine/Deck1/Track/Loop/QuickLoop6', + EngineDeck1TrackLoopQuickLoop7: '/Engine/Deck1/Track/Loop/QuickLoop7', + EngineDeck1TrackLoopQuickLoop8: '/Engine/Deck1/Track/Loop/QuickLoop8', + EngineDeck1TrackPlayPauseLEDState: '/Engine/Deck1/Track/PlayPauseLEDState', + EngineDeck1TrackSampleRate: '/Engine/Deck1/Track/SampleRate', + EngineDeck1TrackSongAnalyzed: '/Engine/Deck1/Track/SongAnalyzed', + EngineDeck1TrackSongLoaded: '/Engine/Deck1/Track/SongLoaded', + EngineDeck1TrackSongName: '/Engine/Deck1/Track/SongName', + EngineDeck1TrackSoundSwitchGUID: '/Engine/Deck1/Track/SoundSwitchGuid', + EngineDeck1TrackTrackBytes: '/Engine/Deck1/Track/TrackBytes', + EngineDeck1TrackTrackData: '/Engine/Deck1/Track/TrackData', + EngineDeck1TrackTrackLength: '/Engine/Deck1/Track/TrackLength', + EngineDeck1TrackTrackName: '/Engine/Deck1/Track/TrackName', + EngineDeck1TrackTrackNetworkPath: '/Engine/Deck1/Track/TrackNetworkPath', + EngineDeck1TrackTrackURI: '/Engine/Deck1/Track/TrackUri', + EngineDeck1TrackTrackWasPlayed: '/Engine/Deck1/Track/TrackWasPlayed', + EngineDeck2CurrentBPM: '/Engine/Deck2/CurrentBPM', + EngineDeck2ExternalMixerVolume: '/Engine/Deck2/ExternalMixerVolume', + EngineDeck2ExternalScratchWheelTouch: '/Engine/Deck2/ExternalScratchWheelTouch', + EngineDeck2PadsView: '/Engine/Deck2/Pads/View', + EngineDeck2Play: '/Engine/Deck2/Play', + EngineDeck2PlayState: '/Engine/Deck2/PlayState', + EngineDeck2PlayStatePath: '/Engine/Deck2/PlayStatePath', + EngineDeck2Speed: '/Engine/Deck2/Speed', + EngineDeck2SpeedNeutral: '/Engine/Deck2/SpeedNeutral', + EngineDeck2SpeedOffsetDown: '/Engine/Deck2/SpeedOffsetDown', + EngineDeck2SpeedOffsetUp: '/Engine/Deck2/SpeedOffsetUp', + EngineDeck2SpeedRange: '/Engine/Deck2/SpeedRange', + EngineDeck2SpeedState: '/Engine/Deck2/SpeedState', + EngineDeck2SyncMode: '/Engine/Deck2/SyncMode', + EngineDeck2TrackArtistName: '/Engine/Deck2/Track/ArtistName', + EngineDeck2TrackBleep: '/Engine/Deck2/Track/Bleep', + EngineDeck2TrackCuePosition: '/Engine/Deck2/Track/CuePosition', + EngineDeck2TrackCurrentBPM: '/Engine/Deck2/Track/CurrentBPM', + EngineDeck2TrackCurrentKeyIndex: '/Engine/Deck2/Track/CurrentKeyIndex', + EngineDeck2TrackCurrentLoopInPosition: '/Engine/Deck2/Track/CurrentLoopInPosition', + EngineDeck2TrackCurrentLoopOutPosition: '/Engine/Deck2/Track/CurrentLoopOutPosition', + EngineDeck2TrackCurrentLoopSizeInBeats: '/Engine/Deck2/Track/CurrentLoopSizeInBeats', + EngineDeck2TrackKeyLock: '/Engine/Deck2/Track/KeyLock', + EngineDeck2TrackLoopEnableState: '/Engine/Deck2/Track/LoopEnableState', + EngineDeck2TrackLoopQuickLoop1: '/Engine/Deck2/Track/Loop/QuickLoop1', + EngineDeck2TrackLoopQuickLoop2: '/Engine/Deck2/Track/Loop/QuickLoop2', + EngineDeck2TrackLoopQuickLoop3: '/Engine/Deck2/Track/Loop/QuickLoop3', + EngineDeck2TrackLoopQuickLoop4: '/Engine/Deck2/Track/Loop/QuickLoop4', + EngineDeck2TrackLoopQuickLoop5: '/Engine/Deck2/Track/Loop/QuickLoop5', + EngineDeck2TrackLoopQuickLoop6: '/Engine/Deck2/Track/Loop/QuickLoop6', + EngineDeck2TrackLoopQuickLoop7: '/Engine/Deck2/Track/Loop/QuickLoop7', + EngineDeck2TrackLoopQuickLoop8: '/Engine/Deck2/Track/Loop/QuickLoop8', + EngineDeck2TrackPlayPauseLEDState: '/Engine/Deck2/Track/PlayPauseLEDState', + EngineDeck2TrackSampleRate: '/Engine/Deck2/Track/SampleRate', + EngineDeck2TrackSongAnalyzed: '/Engine/Deck2/Track/SongAnalyzed', + EngineDeck2TrackSongLoaded: '/Engine/Deck2/Track/SongLoaded', + EngineDeck2TrackSongName: '/Engine/Deck2/Track/SongName', + EngineDeck2TrackSoundSwitchGUID: '/Engine/Deck2/Track/SoundSwitchGuid', + EngineDeck2TrackTrackBytes: '/Engine/Deck2/Track/TrackBytes', + EngineDeck2TrackTrackData: '/Engine/Deck2/Track/TrackData', + EngineDeck2TrackTrackLength: '/Engine/Deck2/Track/TrackLength', + EngineDeck2TrackTrackName: '/Engine/Deck2/Track/TrackName', + EngineDeck2TrackTrackNetworkPath: '/Engine/Deck2/Track/TrackNetworkPath', + EngineDeck2TrackTrackURI: '/Engine/Deck2/Track/TrackUri', + EngineDeck2TrackTrackWasPlayed: '/Engine/Deck2/Track/TrackWasPlayed', + EngineDeck3CurrentBPM: '/Engine/Deck3/CurrentBPM', + EngineDeck3ExternalMixerVolume: '/Engine/Deck3/ExternalMixerVolume', + EngineDeck3ExternalScratchWheelTouch: '/Engine/Deck3/ExternalScratchWheelTouch', + EngineDeck3PadsView: '/Engine/Deck3/Pads/View', + EngineDeck3Play: '/Engine/Deck3/Play', + EngineDeck3PlayState: '/Engine/Deck3/PlayState', + EngineDeck3PlayStatePath: '/Engine/Deck3/PlayStatePath', + EngineDeck3Speed: '/Engine/Deck3/Speed', + EngineDeck3SpeedNeutral: '/Engine/Deck3/SpeedNeutral', + EngineDeck3SpeedOffsetDown: '/Engine/Deck3/SpeedOffsetDown', + EngineDeck3SpeedOffsetUp: '/Engine/Deck3/SpeedOffsetUp', + EngineDeck3SpeedRange: '/Engine/Deck3/SpeedRange', + EngineDeck3SpeedState: '/Engine/Deck3/SpeedState', + EngineDeck3SyncMode: '/Engine/Deck3/SyncMode', + EngineDeck3TrackArtistName: '/Engine/Deck3/Track/ArtistName', + EngineDeck3TrackBleep: '/Engine/Deck3/Track/Bleep', + EngineDeck3TrackCuePosition: '/Engine/Deck3/Track/CuePosition', + EngineDeck3TrackCurrentBPM: '/Engine/Deck3/Track/CurrentBPM', + EngineDeck3TrackCurrentKeyIndex: '/Engine/Deck3/Track/CurrentKeyIndex', + EngineDeck3TrackCurrentLoopInPosition: '/Engine/Deck3/Track/CurrentLoopInPosition', + EngineDeck3TrackCurrentLoopOutPosition: '/Engine/Deck3/Track/CurrentLoopOutPosition', + EngineDeck3TrackCurrentLoopSizeInBeats: '/Engine/Deck3/Track/CurrentLoopSizeInBeats', + EngineDeck3TrackKeyLock: '/Engine/Deck3/Track/KeyLock', + EngineDeck3TrackLoopEnableState: '/Engine/Deck3/Track/LoopEnableState', + EngineDeck3TrackLoopQuickLoop1: '/Engine/Deck3/Track/Loop/QuickLoop1', + EngineDeck3TrackLoopQuickLoop2: '/Engine/Deck3/Track/Loop/QuickLoop2', + EngineDeck3TrackLoopQuickLoop3: '/Engine/Deck3/Track/Loop/QuickLoop3', + EngineDeck3TrackLoopQuickLoop4: '/Engine/Deck3/Track/Loop/QuickLoop4', + EngineDeck3TrackLoopQuickLoop5: '/Engine/Deck3/Track/Loop/QuickLoop5', + EngineDeck3TrackLoopQuickLoop6: '/Engine/Deck3/Track/Loop/QuickLoop6', + EngineDeck3TrackLoopQuickLoop7: '/Engine/Deck3/Track/Loop/QuickLoop7', + EngineDeck3TrackLoopQuickLoop8: '/Engine/Deck3/Track/Loop/QuickLoop8', + EngineDeck3TrackPlayPauseLEDState: '/Engine/Deck3/Track/PlayPauseLEDState', + EngineDeck3TrackSampleRate: '/Engine/Deck3/Track/SampleRate', + EngineDeck3TrackSongAnalyzed: '/Engine/Deck3/Track/SongAnalyzed', + EngineDeck3TrackSongLoaded: '/Engine/Deck3/Track/SongLoaded', + EngineDeck3TrackSongName: '/Engine/Deck3/Track/SongName', + EngineDeck3TrackSoundSwitchGUID: '/Engine/Deck3/Track/SoundSwitchGuid', + EngineDeck3TrackTrackBytes: '/Engine/Deck3/Track/TrackBytes', + EngineDeck3TrackTrackData: '/Engine/Deck3/Track/TrackData', + EngineDeck3TrackTrackLength: '/Engine/Deck3/Track/TrackLength', + EngineDeck3TrackTrackName: '/Engine/Deck3/Track/TrackName', + EngineDeck3TrackTrackNetworkPath: '/Engine/Deck3/Track/TrackNetworkPath', + EngineDeck3TrackTrackURI: '/Engine/Deck3/Track/TrackUri', + EngineDeck3TrackTrackWasPlayed: '/Engine/Deck3/Track/TrackWasPlayed', + EngineDeck4CurrentBPM: '/Engine/Deck4/CurrentBPM', + EngineDeck4ExternalMixerVolume: '/Engine/Deck4/ExternalMixerVolume', + EngineDeck4ExternalScratchWheelTouch: '/Engine/Deck4/ExternalScratchWheelTouch', + EngineDeck4PadsView: '/Engine/Deck4/Pads/View', + EngineDeck4Play: '/Engine/Deck4/Play', + EngineDeck4PlayState: '/Engine/Deck4/PlayState', + EngineDeck4PlayStatePath: '/Engine/Deck4/PlayStatePath', + EngineDeck4Speed: '/Engine/Deck4/Speed', + EngineDeck4SpeedNeutral: '/Engine/Deck4/SpeedNeutral', + EngineDeck4SpeedOffsetDown: '/Engine/Deck4/SpeedOffsetDown', + EngineDeck4SpeedOffsetUp: '/Engine/Deck4/SpeedOffsetUp', + EngineDeck4SpeedRange: '/Engine/Deck4/SpeedRange', + EngineDeck4SpeedState: '/Engine/Deck4/SpeedState', + EngineDeck4SyncMode: '/Engine/Deck4/SyncMode', + EngineDeck4TrackArtistName: '/Engine/Deck4/Track/ArtistName', + EngineDeck4TrackBleep: '/Engine/Deck4/Track/Bleep', + EngineDeck4TrackCuePosition: '/Engine/Deck4/Track/CuePosition', + EngineDeck4TrackCurrentBPM: '/Engine/Deck4/Track/CurrentBPM', + EngineDeck4TrackCurrentKeyIndex: '/Engine/Deck4/Track/CurrentKeyIndex', + EngineDeck4TrackCurrentLoopInPosition: '/Engine/Deck4/Track/CurrentLoopInPosition', + EngineDeck4TrackCurrentLoopOutPosition: '/Engine/Deck4/Track/CurrentLoopOutPosition', + EngineDeck4TrackCurrentLoopSizeInBeats: '/Engine/Deck4/Track/CurrentLoopSizeInBeats', + EngineDeck4TrackKeyLock: '/Engine/Deck4/Track/KeyLock', + EngineDeck4TrackLoopEnableState: '/Engine/Deck4/Track/LoopEnableState', + EngineDeck4TrackLoopQuickLoop1: '/Engine/Deck4/Track/Loop/QuickLoop1', + EngineDeck4TrackLoopQuickLoop2: '/Engine/Deck4/Track/Loop/QuickLoop2', + EngineDeck4TrackLoopQuickLoop3: '/Engine/Deck4/Track/Loop/QuickLoop3', + EngineDeck4TrackLoopQuickLoop4: '/Engine/Deck4/Track/Loop/QuickLoop4', + EngineDeck4TrackLoopQuickLoop5: '/Engine/Deck4/Track/Loop/QuickLoop5', + EngineDeck4TrackLoopQuickLoop6: '/Engine/Deck4/Track/Loop/QuickLoop6', + EngineDeck4TrackLoopQuickLoop7: '/Engine/Deck4/Track/Loop/QuickLoop7', + EngineDeck4TrackLoopQuickLoop8: '/Engine/Deck4/Track/Loop/QuickLoop8', + EngineDeck4TrackPlayPauseLEDState: '/Engine/Deck4/Track/PlayPauseLEDState', + EngineDeck4TrackSampleRate: '/Engine/Deck4/Track/SampleRate', + EngineDeck4TrackSongAnalyzed: '/Engine/Deck4/Track/SongAnalyzed', + EngineDeck4TrackSongLoaded: '/Engine/Deck4/Track/SongLoaded', + EngineDeck4TrackSongName: '/Engine/Deck4/Track/SongName', + EngineDeck4TrackSoundSwitchGUID: '/Engine/Deck4/Track/SoundSwitchGuid', + EngineDeck4TrackTrackBytes: '/Engine/Deck4/Track/TrackBytes', + EngineDeck4TrackTrackData: '/Engine/Deck4/Track/TrackData', + EngineDeck4TrackTrackLength: '/Engine/Deck4/Track/TrackLength', + EngineDeck4TrackTrackName: '/Engine/Deck4/Track/TrackName', + EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', + EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', + EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', + EngineDeckCount: '/Engine/DeckCount', + GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', + MixerCH1faderPosition: '/Mixer/CH1faderPosition', + MixerCH2faderPosition: '/Mixer/CH2faderPosition', + MixerCH3faderPosition: '/Mixer/CH3faderPosition', + MixerCH4faderPosition: '/Mixer/CH4faderPosition', + MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', + + MixerNumberOfChannels: '/Mixer/NumberOfChannels', + ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', + ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', + EngineDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', + EngineDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', + ClientPreferencesLayerA: '/Client/Preferences/LayerA', + EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', + EngineMasterMasterTempo: '/Engine/Master/MasterTempo', + MixerChannelAssignment1: '/Mixer/ChannelAssignment1', + MixerChannelAssignment2: '/Mixer/ChannelAssignment2', + MixerChannelAssignment3: '/Mixer/ChannelAssignment3', + MixerChannelAssignment4: '/Mixer/ChannelAssignment4', +} + diff --git a/types/index.ts b/types/index.ts index 243f706..d5cadd7 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,3 +1,4 @@ +import { Socket } from 'net'; import { DiscoveryMessageOptions } from '../network'; export * from './common'; @@ -23,6 +24,7 @@ export interface ServicePorts { export interface ServiceMessage { id: number; message: T; + socket?: Socket; } export interface Source { @@ -45,10 +47,16 @@ export interface ConnectionInfo extends DiscoveryMessage { address: IpAddress; addressPort?: string; } +export enum Services { + //StateMap = "StateMap", + FileTransfer = "FileTransfer", + Directory = "DirectoryService", +} export interface StageLinqOptions { maxRetries?: number; actingAs?: DiscoveryMessageOptions; downloadDbSources?: boolean; -} \ No newline at end of file + services?: Services[]; +} diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index 59d2628..1afd25e 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -33,6 +33,12 @@ export class ReadContext extends Context { const newArrayBuffer = view.buffer.slice(view.byteOffset, view.byteOffset + view.length); return Buffer.from(newArrayBuffer); } + + readRemainingAsNewCtx(): ReadContext { + + const newArrayBuffer = this.buffer.slice(this.pos, this.pos + this.sizeLeft()); + return new ReadContext(newArrayBuffer,false); + } getString(p_bytes: number): string { const buf = this.read(p_bytes); From 6e7acf6ba12d4f43c98f3cf7dc932c76a7018ec3 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 8 Oct 2022 12:10:25 -0400 Subject: [PATCH 008/146] working occ error --- cli/index.ts | 2 +- log.txt | 1185 ++++++----------------------------------- services/Directory.ts | 32 +- services/Service.ts | 102 ++-- services/StateMap.ts | 47 +- 5 files changed, 250 insertions(+), 1118 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index b47937d..68d5ae2 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -73,7 +73,7 @@ async function main() { services: [ Services.StateMap, - Services.FileTransfer, + //Services.FileTransfer, Services.Directory, ], } diff --git a/log.txt b/log.txt index 6521547..577089d 100644 --- a/log.txt +++ b/log.txt @@ -1,1032 +1,155 @@ -[39] [BEGIN] +[42] [BEGIN] -[13112] Announced myself on 59681 -[46958] [Directory] connection from 192.168.2.84:49429 -[48258] [Directory] connection from 192.168.2.84:56075 -[48898] [Directory] connection from 192.168.2.83:48583 -[49442] [Directory] connection from 192.168.2.83:47745 -[49996] [Directory] connection from 192.168.2.84:42331 -[50558] [Directory] connection from 192.168.2.83:46689 -[51499] [1] [svc:undefined] [Directory] (p_data) undefined 20 000000023e5df2e822404938bdf3478dda8c4fa9 -[51558] [1] [svc:undefined] [Directory] (buffQueue) undefined 20 000000023e5df2e822404938bdf3478dda8c4fa9 -[52323] [2] [svc:undefined] [Directory] (p_data) undefined 20 0000000238e00963fc1a48c0ab93fc689fa2e455 -[52354] [2] [svc:undefined] [Directory] (buffQueue) undefined 20 0000000238e00963fc1a48c0ab93fc689fa2e455 -[52606] [3] [svc:undefined] [Directory] (p_data) undefined 20 0000000219ad6b7bb34f452abc646295a103dd0c -[52630] [3] [svc:undefined] [Directory] (buffQueue) undefined 20 0000000219ad6b7bb34f452abc646295a103dd0c -[52821] [4] [svc:undefined] [Directory] (p_data) undefined 20 000000025d9493e178fb461581f9da612621ffa8 -[52837] [4] [svc:undefined] [Directory] (buffQueue) undefined 20 000000025d9493e178fb461581f9da612621ffa8 -[53003] [5] [svc:undefined] [Directory] (p_data) undefined 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[53021] [5] [svc:undefined] [Directory] (buffQueue) undefined 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[53199] [6] [svc:undefined] [Directory] (p_data) undefined 20 000000024be141125ead4848a07db37ca8a7220e -[53215] [6] [svc:undefined] [Directory] (buffQueue) undefined 20 000000024be141125ead4848a07db37ca8a7220e -[55801] [7] [svc:undefined] [Directory] (p_data) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008215b842fcd7 -[55981] [7] [svc:undefined] [Directory] (buffQueue) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008215b842fcd7 -[309770] [Directory] sent ServiceAnnouncement to 192.168.2.84:49429 -[311401] [Directory] sent ServiceAnnouncement to 192.168.2.84:56075 -[312627] [Directory] sent ServiceAnnouncement to 192.168.2.83:48583 -[313694] [Directory] sent ServiceAnnouncement to 192.168.2.83:47745 -[314878] [Directory] sent ServiceAnnouncement to 192.168.2.84:42331 -[316141] [Directory] sent ServiceAnnouncement to 192.168.2.83:46689 -[338530] [StateMap] connection from 192.168.2.83:55809 -[339766] [StateMap] connection from 192.168.2.84:45125 -[340819] [FileTransfer] connection from 192.168.2.83:46737 -[341812] [FileTransfer] connection from 192.168.2.83:56841 -[342837] [FileTransfer] connection from 192.168.2.84:58139 -[345370] [FileTransfer] connection from 192.168.2.83:36803 -[346300] [FileTransfer] connection from 192.168.2.84:53575 -[347359] [FileTransfer] connection from 192.168.2.84:52223 -[347802] [1] [svc:undefined] [StateMap] (p_data) undefined 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070da01 -[347894] [1] [svc:undefined] [StateMap] (buffQueue) undefined 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070da01 -[369683] [2] [svc:undefined] [StateMap] (p_data) undefined 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070b045 -[370016] [2] [svc:undefined] [StateMap] (buffQueue) undefined 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070b045 -[386559] [3] [svc:undefined] [StateMap] (p_data) undefined 8150 000000b8736d61610000000000000062002f0043... -[386609] [3] [svc:undefined] [StateMap] (buffQueue) undefined 8150 000000b8736d61610000000000000062002f0043... -[386769] [4] [svc:undefined] [StateMap] (while) undefined 184 736d61610000000000000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e007400440065007600690063006500000046007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a0022002c002200740079007000650022003a0038007d -[388384] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/CurrentDevice => {"string":"/media/HONUSZ","type":8} -[388479] [5] [svc:undefined] [StateMap] (while) undefined 172 736d6161000000000000006c002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730053004400430061007200640043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[389063] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/HasSDCardConnected => {"state":false,"type":1} -[389140] [6] [svc:undefined] [StateMap] (while) undefined 176 736d61610000000000000072002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730055007300620044006500760069006300650043006f006e006e006500630074006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[389512] [2] 192.168.2.83:55809 /Client/Librarian/DevicesController/HasUsbDeviceConnected => {"state":true,"type":1} -[389567] [7] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c006100790065007200420000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[389924] [2] 192.168.2.83:55809 /Client/Preferences/LayerB => {"state":true,"type":1} -[389996] [8] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d -[390346] [2] 192.168.2.83:55809 /Client/Preferences/Player => {"string":"2","type":4} -[390411] [9] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200310000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[390754] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1 => {"color":"#ff2b84ef","type":16} -[390812] [10] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[391150] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1A => {"color":"#ff2b84ef","type":16} -[391207] [11] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[391544] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor1B => {"color":"#ff02c63e","type":16} -[391603] [12] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200320000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[391942] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2 => {"color":"#ff2b84ef","type":16} -[392041] [13] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[392499] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2A => {"color":"#ff2b84ef","type":16} -[392572] [14] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[392963] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor2B => {"color":"#ff02c63e","type":16} -[393028] [15] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[393407] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor3A => {"color":"#ff2b84ef","type":16} -[393469] [16] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[393823] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor3B => {"color":"#ff02c63e","type":16} -[393885] [17] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[394235] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor4A => {"color":"#ff2b84ef","type":16} -[394291] [18] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[394630] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/PlayerColor4B => {"color":"#ff02c63e","type":16} -[394689] [19] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f0064006500000036007b00220073007400720069006e00670022003a002200540065006d0070006f0022002c002200740079007000650022003a0034007d -[395026] [2] 192.168.2.83:55809 /Client/Preferences/Profile/Application/SyncMode => {"string":"Tempo","type":4} -[395084] [20] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[395423] [2] 192.168.2.83:55809 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[395480] [21] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[395820] [2] 192.168.2.83:55809 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[395869] [22] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[398132] [2] 192.168.2.83:55809 /Engine/Deck1/ExternalScratchWheelTouch => {"state":false,"type":2} -[398179] [23] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d -[398493] [2] 192.168.2.83:55809 /Engine/Deck1/Pads/View => {"string":"CUES","type":4} -[398533] [24] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[398851] [2] 192.168.2.83:55809 /Engine/Deck1/Play => {"state":false,"type":1} -[398893] [25] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[399202] [2] 192.168.2.83:55809 /Engine/Deck1/PlayState => {"state":false,"type":1} -[399252] [26] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d -[399563] [2] 192.168.2.83:55809 /Engine/Deck1/Speed => {"type":0,"value":0.500030517578125} -[399602] [27] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[399907] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedNeutral => {"state":true,"type":1} -[399945] [28] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[400250] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedOffsetDown => {"state":false,"type":1} -[400298] [29] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[400603] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedOffsetUp => {"state":false,"type":1} -[400640] [30] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d -[400937] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedRange => {"string":"8","type":4} -[400980] [31] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[401289] [2] 192.168.2.83:55809 /Engine/Deck1/SpeedState => {"type":0,"value":0} -[401327] [32] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d -[401626] [2] 192.168.2.83:55809 /Engine/Deck1/SyncMode => {"string":"Off","type":4} -[401669] [33] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[401972] [2] 192.168.2.83:55809 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[402009] [34] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[402303] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Bleep => {"state":false,"type":2} -[402346] [35] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d -[402647] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CuePosition => {"type":14,"value":1330} -[402690] [36] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[402988] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentBPM => {"type":0,"value":120} -[403032] [37] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002c007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310037007d -[403341] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentKeyIndex => {"type":10,"value":17} -[403382] [38] [svc:undefined] [StateMap] (while) undefined 146 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d -[403693] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopInPosition => {"type":14,"value":1330} -[403738] [39] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e00000030007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0031003300330030007d -[404036] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopOutPosition => {"type":14,"value":1330} -[404077] [40] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[404375] [2] 192.168.2.83:55809 /Engine/Deck1/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} -[404413] [41] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[404716] [2] 192.168.2.83:55809 /Engine/Deck1/Track/KeyLock => {"state":true,"type":1} -[404756] [42] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[405060] [2] 192.168.2.83:55809 /Engine/Deck1/Track/LoopEnableState => {"state":false,"type":1} -[405100] [43] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[405411] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop1 => {"state":false,"type":2} -[405450] [44] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[405749] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop2 => {"state":false,"type":2} -[405790] [45] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[406092] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop3 => {"state":false,"type":2} -[406133] [46] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[406438] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop4 => {"state":false,"type":2} -[406480] [47] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[406779] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop5 => {"state":false,"type":2} -[406818] [48] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[407089] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop6 => {"state":false,"type":2} -[407128] [49] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[407406] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop7 => {"state":false,"type":2} -[407444] [50] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[407717] [2] 192.168.2.83:55809 /Engine/Deck1/Track/Loop/QuickLoop8 => {"state":false,"type":2} -[407754] [51] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[408036] [2] 192.168.2.83:55809 /Engine/Deck1/Track/PlayPauseLEDState => {"state":false,"type":1} -[408074] [52] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d -[408354] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SampleRate => {"type":14,"value":44100} -[408389] [53] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[408667] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongAnalyzed => {"state":true,"type":1} -[408703] [54] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[408988] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[409029] [55] [svc:undefined] [StateMap] (while) undefined 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[409304] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[409352] [56] [svc:undefined] [StateMap] (while) undefined 206 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f0075006e0064005300770069007400630068004700750069006400000078007b00220073007400720069006e00670022003a0022007b00300030003000300030003000300030002d0030003000300030002d0030003000300030002d0030003000300030002d003000300030003000300030003000300030003000300030007d0022002c002200740079007000650022003a0038007d -[409828] [2] 192.168.2.83:55809 /Engine/Deck1/Track/SoundSwitchGuid => {"string":"{00000000-0000-0000-0000-000000000000}","type":8} -[409884] [57] [svc:undefined] [StateMap] (while) undefined 132 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0042007900740065007300000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310036003700320039003600370035007d -[410207] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackBytes => {"type":10,"value":16729675} -[410250] [58] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[410553] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[410594] [59] [svc:undefined] [StateMap] (while) undefined 134 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e00670074006800000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310038003100300033003700320037007d -[410885] [2] 192.168.2.83:55809 /Engine/Deck1/Track/TrackLength => {"type":10,"value":18103727} -[411431] [1] [svc:undefined] [FileTransfer] (p_data) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff -[411652] [1] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff -[411913] [0] [svc:undefined] [FileTransfer] (preSvc) undefined 70 000000005d9493e178fb461581f9da612621ffa80000001800460069006c0065005400720061006e0073006600650072b69100000010666c74780000000000000008ffffffff -[412402] [0] [svc:undefined] [FileTransfer] (postSvc) 5d9493e1-78fb-4615-81f9-da612621ffa8 16 666c74780000000000000008ffffffff -[412414] [0] [svc:true] [FileTransfer] (ff-pre) 5d9493e1-78fb-4615-81f9-da612621ffa8 16 666c74780000000000000008ffffffff -[412728] [0] [svc:true] [FileTransfer] (mag-post) 5d9493e1-78fb-4615-81f9-da612621ffa8 12 0000000000000008ffffffff -[412867] [2] [svc:undefined] [FileTransfer] (p_data) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 -[412888] [2] [svc:undefined] [FileTransfer] (buffQueue) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 -[412908] [1] [svc:undefined] [FileTransfer] (preSvc) undefined 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072de0900000012666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 -[413317] [1] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 38 666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 -[413330] [1] [svc:true] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 38 666c7478000000000000000800000002003200000010666c7478000004e4000007d200000000 -[413369] [1] [svc:true] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 34 000000000000000800000002003200000010666c7478000004e4000007d200000000 -[413698] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e -[414260] [3] [svc:undefined] [FileTransfer] (p_data) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff -[414290] [3] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff -[414309] [2] [svc:undefined] [FileTransfer] (preSvc) undefined 70 000000003e5df2e822404938bdf3478dda8c4fa90000001800460069006c0065005400720061006e0073006600650072e31b00000010666c74780000000000000008ffffffff -[414727] [2] [svc:undefined] [FileTransfer] (postSvc) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 16 666c74780000000000000008ffffffff -[414740] [2] [svc:true] [FileTransfer] (ff-pre) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 16 666c74780000000000000008ffffffff -[414997] [2] [svc:true] [FileTransfer] (mag-post) 3e5df2e8-2240-4938-bdf3-478dda8c4fa9 12 0000000000000008ffffffff -[415091] [4] [svc:undefined] [FileTransfer] (p_data) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff -[415109] [4] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff -[415124] [3] [svc:undefined] [FileTransfer] (preSvc) undefined 70 0000000019ad6b7bb34f452abc646295a103dd0c0000001800460069006c0065005400720061006e00730066006500728fc300000010666c74780000000000000008ffffffff -[415488] [3] [svc:undefined] [FileTransfer] (postSvc) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 16 666c74780000000000000008ffffffff -[415498] [3] [svc:true] [FileTransfer] (ff-pre) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 16 666c74780000000000000008ffffffff -[415527] [3] [svc:true] [FileTransfer] (mag-post) 19ad6b7b-b34f-452a-bc64-6295a103dd0c 12 0000000000000008ffffffff -[415619] [5] [svc:undefined] [FileTransfer] (p_data) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 -[415634] [5] [svc:undefined] [FileTransfer] (buffQueue) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 -[415649] [4] [svc:undefined] [FileTransfer] (preSvc) undefined 92 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072d14700000012666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 -[416006] [4] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 38 666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 -[416017] [4] [svc:true] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 38 666c7478000000000000000800000002003100000010666c7478000002bb000007d200000000 -[416042] [4] [svc:true] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 34 000000000000000800000002003100000010666c7478000002bb000007d200000000 -[416349] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[416675] [6] [svc:undefined] [FileTransfer] (p_data) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff -[416695] [6] [svc:undefined] [FileTransfer] (buffQueue) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff -[416712] [5] [svc:undefined] [FileTransfer] (preSvc) undefined 70 0000000038e00963fc1a48c0ab93fc689fa2e4550000001800460069006c0065005400720061006e0073006600650072cbff00000010666c74780000000000000008ffffffff -[417082] [5] [svc:undefined] [FileTransfer] (postSvc) 38e00963-fc1a-48c0-ab93-fc689fa2e455 16 666c74780000000000000008ffffffff -[417093] [5] [svc:true] [FileTransfer] (ff-pre) 38e00963-fc1a-48c0-ab93-fc689fa2e455 16 666c74780000000000000008ffffffff -[417119] [5] [svc:true] [FileTransfer] (mag-post) 38e00963-fc1a-48c0-ab93-fc689fa2e455 12 0000000000000008ffffffff -[417903] [60] [svc:undefined] [StateMap] (p_data) undefined 7386 0122736d6161000000000000003a002f0045006e... -[418069] [60] [svc:undefined] [StateMap] (buffQueue) undefined 7388 00000122736d6161000000000000003a002f0045... -[418145] [61] [svc:undefined] [StateMap] (while) undefined 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[418572] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[418656] [62] [svc:undefined] [StateMap] (while) undefined 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[418988] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[419034] [63] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[419336] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackUri => {"string":"","type":8} -[419380] [64] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[419680] [59] 192.168.2.83:55809 /Engine/Deck1/Track/TrackWasPlayed => {"state":false,"type":1} -[419721] [65] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[420017] [59] 192.168.2.83:55809 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[420058] [66] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[420345] [59] 192.168.2.83:55809 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[420388] [67] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[420675] [59] 192.168.2.83:55809 /Engine/Deck2/ExternalScratchWheelTouch => {"state":false,"type":2} -[420715] [68] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d -[421014] [59] 192.168.2.83:55809 /Engine/Deck2/Pads/View => {"string":"CUES","type":4} -[421052] [69] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[421432] [59] 192.168.2.83:55809 /Engine/Deck2/Play => {"state":false,"type":1} -[421511] [70] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[421893] [59] 192.168.2.83:55809 /Engine/Deck2/PlayState => {"state":false,"type":1} -[421945] [71] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d -[423753] [59] 192.168.2.83:55809 /Engine/Deck2/Speed => {"type":0,"value":0.500030517578125} -[423807] [72] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[424144] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedNeutral => {"state":true,"type":1} -[424189] [73] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[424495] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedOffsetDown => {"state":false,"type":1} -[424540] [74] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[424842] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedOffsetUp => {"state":false,"type":1} -[424885] [75] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d -[425183] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedRange => {"string":"8","type":4} -[425227] [76] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[425522] [59] 192.168.2.83:55809 /Engine/Deck2/SpeedState => {"type":0,"value":0} -[425563] [77] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d -[425865] [59] 192.168.2.83:55809 /Engine/Deck2/SyncMode => {"string":"Off","type":4} -[425906] [78] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[426203] [59] 192.168.2.83:55809 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[426474] [79] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[426783] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Bleep => {"state":false,"type":2} -[426828] [80] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[427123] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CuePosition => {"type":14,"value":0} -[427166] [81] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[427767] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentBPM => {"type":0,"value":120} -[428017] [82] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[428855] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentKeyIndex => {"type":10,"value":0} -[428901] [83] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[429219] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopInPosition => {"type":14,"value":0} -[429261] [84] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[429573] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopOutPosition => {"type":14,"value":0} -[429610] [85] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[429905] [59] 192.168.2.83:55809 /Engine/Deck2/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} -[429942] [86] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[430244] [59] 192.168.2.83:55809 /Engine/Deck2/Track/KeyLock => {"state":true,"type":1} -[430284] [87] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[430580] [59] 192.168.2.83:55809 /Engine/Deck2/Track/LoopEnableState => {"state":false,"type":1} -[430615] [88] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[430904] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop1 => {"state":false,"type":2} -[430940] [89] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[431234] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop2 => {"state":false,"type":2} -[431273] [90] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[431561] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop3 => {"state":false,"type":2} -[431594] [91] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[431889] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop4 => {"state":false,"type":2} -[431925] [92] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[432213] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop5 => {"state":false,"type":2} -[432246] [93] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[432534] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop6 => {"state":false,"type":2} -[432571] [94] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[432861] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop7 => {"state":false,"type":2} -[432896] [95] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[433204] [59] 192.168.2.83:55809 /Engine/Deck2/Track/Loop/QuickLoop8 => {"state":false,"type":2} -[433243] [96] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[433540] [59] 192.168.2.83:55809 /Engine/Deck2/Track/PlayPauseLEDState => {"state":false,"type":1} -[433575] [97] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d -[433942] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SampleRate => {"type":14,"value":44100} -[434060] [98] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a0065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[434469] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongAnalyzed => {"state":false,"type":1} -[434515] [99] [svc:undefined] [StateMap] (while) undefined 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[434850] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[434891] [100] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[435196] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[435240] [101] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f0075006e006400530077006900740063006800470075006900640000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[435544] [59] 192.168.2.83:55809 /Engine/Deck2/Track/SoundSwitchGuid => {"string":"","type":8} -[435584] [102] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004200790074006500730000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[435878] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackBytes => {"type":10,"value":0} -[435916] [103] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[436216] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[436257] [104] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e0067007400680000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[436640] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackLength => {"type":10,"value":0} -[436699] [105] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[437098] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[437143] [106] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[437485] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[437525] [107] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[437858] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackUri => {"string":"","type":8} -[437895] [108] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[438662] [59] 192.168.2.83:55809 /Engine/Deck2/Track/TrackWasPlayed => {"state":false,"type":1} -[438704] [109] [svc:undefined] [StateMap] (while) undefined 92 736d61610000000000000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e00740000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0032007d -[439005] [59] 192.168.2.83:55809 /Engine/DeckCount => {"type":10,"value":2} -[439038] [110] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006b0000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0038007d -[439334] [59] 192.168.2.83:55809 /GUI/Decks/Deck/ActiveDeck => {"string":"1","type":8} -[439367] [111] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[439660] [59] 192.168.2.83:55809 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[439696] [112] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[439984] [59] 192.168.2.83:55809 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[440015] [113] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[440292] [59] 192.168.2.83:55809 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[440325] [114] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[440608] [59] 192.168.2.83:55809 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[441083] [115] [svc:undefined] [StateMap] (p_data) undefined 15638 00000110736d61610000000000000062002f0043... -[441111] [115] [svc:undefined] [StateMap] (buffQueue) undefined 15638 00000110736d61610000000000000062002f0043... -[441150] [116] [svc:undefined] [StateMap] (while) undefined 272 736d61610000000000000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e00740044006500760069006300650000009e007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a002000280055005300420020003100290022002c002200740079007000650022003a0038007d -[441509] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/CurrentDevice => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)","type":8} -[441547] [117] [svc:undefined] [StateMap] (while) undefined 172 736d6161000000000000006c002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730053004400430061007200640043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[441829] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/HasSDCardConnected => {"state":false,"type":1} -[441863] [118] [svc:undefined] [StateMap] (while) undefined 178 736d61610000000000000072002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f0048006100730055007300620044006500760069006300650043006f006e006e0065006300740065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[442133] [114] 192.168.2.84:45125 /Client/Librarian/DevicesController/HasUsbDeviceConnected => {"state":false,"type":1} -[442165] [119] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c006100790065007200420000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[442439] [114] 192.168.2.84:45125 /Client/Preferences/LayerB => {"state":true,"type":1} -[442469] [120] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[442746] [114] 192.168.2.84:45125 /Client/Preferences/Player => {"string":"1","type":4} -[443318] [121] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200310000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[443656] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1 => {"color":"#ff2b84ef","type":16} -[443693] [122] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[443994] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1A => {"color":"#ff2b84ef","type":16} -[444033] [123] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003100420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[444318] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor1B => {"color":"#ff02c63e","type":16} -[444352] [124] [svc:undefined] [StateMap] (while) undefined 182 736d61610000000000000068002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f007200320000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[444638] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2 => {"color":"#ff2b84ef","type":16} -[444674] [125] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[444961] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2A => {"color":"#ff2b84ef","type":16} -[444999] [126] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[445628] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor2B => {"color":"#ff02c63e","type":16} -[445787] [127] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[446701] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor3A => {"color":"#ff2b84ef","type":16} -[446751] [128] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003300420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[447066] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor3B => {"color":"#ff02c63e","type":16} -[447137] [129] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[447554] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor4A => {"color":"#ff2b84ef","type":16} -[447597] [130] [svc:undefined] [StateMap] (while) undefined 184 736d6161000000000000006a002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f0050006c00610079006500720043006f006c006f0072003400420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[447917] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/PlayerColor4B => {"color":"#ff02c63e","type":16} -[447952] [131] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f0064006500000036007b00220073007400720069006e00670022003a002200540065006d0070006f0022002c002200740079007000650022003a0034007d -[448244] [114] 192.168.2.84:45125 /Client/Preferences/Profile/Application/SyncMode => {"string":"Tempo","type":4} -[448273] [132] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[448563] [114] 192.168.2.84:45125 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} -[448593] [133] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[448958] [114] 192.168.2.84:45125 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[449006] [134] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[449360] [114] 192.168.2.84:45125 /Engine/Deck1/ExternalScratchWheelTouch => {"state":false,"type":2} -[449394] [135] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d -[449714] [114] 192.168.2.84:45125 /Engine/Deck1/Pads/View => {"string":"CUES","type":4} -[449745] [136] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[450039] [114] 192.168.2.84:45125 /Engine/Deck1/Play => {"state":false,"type":1} -[450071] [137] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[450353] [114] 192.168.2.84:45125 /Engine/Deck1/PlayState => {"state":false,"type":1} -[450383] [138] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d -[450667] [114] 192.168.2.84:45125 /Engine/Deck1/Speed => {"type":0,"value":0.500030517578125} -[450698] [139] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[450985] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedNeutral => {"state":true,"type":1} -[451013] [140] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[451296] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedOffsetDown => {"state":false,"type":1} -[451325] [141] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[451614] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedOffsetUp => {"state":false,"type":1} -[451640] [142] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d -[451917] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedRange => {"string":"8","type":4} -[451944] [143] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[452231] [114] 192.168.2.84:45125 /Engine/Deck1/SpeedState => {"type":0,"value":0} -[452256] [144] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d -[452617] [114] 192.168.2.84:45125 /Engine/Deck1/SyncMode => {"string":"Off","type":4} -[452646] [145] [svc:undefined] [StateMap] (while) undefined 140 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000040007b00220073007400720069006e00670022003a00220053007000610063006500200046006f006f00640022002c002200740079007000650022003a0038007d -[452942] [114] 192.168.2.84:45125 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} -[452967] [146] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[453243] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Bleep => {"state":false,"type":2} -[453268] [147] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[453547] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CuePosition => {"type":14,"value":0} -[453575] [148] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[453858] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentBPM => {"type":0,"value":122} -[453886] [149] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002c007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310037007d -[454162] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentKeyIndex => {"type":10,"value":17} -[454194] [150] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[454469] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopInPosition => {"type":14,"value":0} -[454498] [151] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[454784] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopOutPosition => {"type":14,"value":0} -[454814] [152] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[455084] [114] 192.168.2.84:45125 /Engine/Deck1/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} -[455114] [153] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006b0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[455392] [114] 192.168.2.84:45125 /Engine/Deck1/Track/KeyLock => {"state":true,"type":1} -[455418] [154] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[455700] [114] 192.168.2.84:45125 /Engine/Deck1/Track/LoopEnableState => {"state":false,"type":1} -[455728] [155] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[456005] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop1 => {"state":false,"type":2} -[456030] [156] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[456297] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop2 => {"state":false,"type":2} -[456324] [157] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[456597] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop3 => {"state":false,"type":2} -[456625] [158] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[456897] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop4 => {"state":false,"type":2} -[456925] [159] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[457204] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop5 => {"state":false,"type":2} -[457234] [160] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[457508] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop6 => {"state":false,"type":2} -[457536] [161] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[457809] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop7 => {"state":false,"type":2} -[457836] [162] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[458110] [114] 192.168.2.84:45125 /Engine/Deck1/Track/Loop/QuickLoop8 => {"state":false,"type":2} -[458137] [163] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[458412] [114] 192.168.2.84:45125 /Engine/Deck1/Track/PlayPauseLEDState => {"state":false,"type":1} -[458440] [164] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d -[458721] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SampleRate => {"type":14,"value":44100} -[458750] [165] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[459024] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongAnalyzed => {"state":true,"type":1} -[459051] [166] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[459344] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[459375] [167] [svc:undefined] [StateMap] (while) undefined 166 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005e007b00220073007400720069006e00670022003a0022004400610072006b00200046006f00720063006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[459751] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SongName => {"string":"Dark Force (Original Mix)","type":8} -[459800] [168] [svc:undefined] [StateMap] (while) undefined 206 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f0075006e0064005300770069007400630068004700750069006400000078007b00220073007400720069006e00670022003a0022007b00300030003000300030003000300030002d0030003000300030002d0030003000300030002d0030003000300030002d003000300030003000300030003000300030003000300030007d0022002c002200740079007000650022003a0038007d -[460121] [114] 192.168.2.84:45125 /Engine/Deck1/Track/SoundSwitchGuid => {"string":"{00000000-0000-0000-0000-000000000000}","type":8} -[460157] [169] [svc:undefined] [StateMap] (while) undefined 132 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0042007900740065007300000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310035003300340030003400340035007d -[460463] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackBytes => {"type":10,"value":15340445} -[460494] [170] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[460796] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[460827] [171] [svc:undefined] [StateMap] (while) undefined 134 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e00670074006800000038007b002200740079007000650022003a00310030002c002200760061006c007500650022003a00310036003200320033003600360033007d -[461125] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackLength => {"type":10,"value":16223663} -[461170] [172] [svc:undefined] [StateMap] (while) undefined 366 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d006500000124007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f005300740061007900200049006e002f00310034003700380036003600350030005f004400610072006b00200046006f007200630065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[461467] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} -[461509] [173] [svc:undefined] [StateMap] (while) undefined 380 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000124007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f005300740061007900200049006e002f00310034003700380036003600350030005f004400610072006b00200046006f007200630065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[461798] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} -[461826] [174] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[462109] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackUri => {"string":"","type":8} -[462137] [175] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[462423] [114] 192.168.2.84:45125 /Engine/Deck1/Track/TrackWasPlayed => {"state":false,"type":1} -[462452] [176] [svc:undefined] [StateMap] (while) undefined 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[462737] [114] 192.168.2.84:45125 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[462768] [177] [svc:undefined] [StateMap] (while) undefined 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[463053] [114] 192.168.2.84:45125 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[463083] [178] [svc:undefined] [StateMap] (while) undefined 142 736d6161000000000000004e002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c00530063007200610074006300680057006800650065006c0054006f00750063006800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[463369] [114] 192.168.2.84:45125 /Engine/Deck2/ExternalScratchWheelTouch => {"state":false,"type":2} -[463397] [179] [svc:undefined] [StateMap] (while) undefined 114 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f005600690065007700000034007b00220073007400720069006e00670022003a002200430055004500530022002c002200740079007000650022003a0034007d -[463683] [114] 192.168.2.84:45125 /Engine/Deck2/Pads/View => {"string":"CUES","type":4} -[463714] [180] [svc:undefined] [StateMap] (while) undefined 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[463989] [114] 192.168.2.84:45125 /Engine/Deck2/Play => {"state":false,"type":1} -[464016] [181] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[464293] [114] 192.168.2.84:45125 /Engine/Deck2/PlayState => {"state":false,"type":1} -[464321] [182] [svc:undefined] [StateMap] (while) undefined 126 736d61610000000000000026002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400000048007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e003500300030003000330030003500310037003500370038003100320035007d -[464621] [114] 192.168.2.84:45125 /Engine/Deck2/Speed => {"type":0,"value":0.500030517578125} -[464647] [183] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004e00650075007400720061006c0000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[464931] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedNeutral => {"state":true,"type":1} -[464964] [184] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740044006f0077006e00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[465250] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedOffsetDown => {"state":false,"type":1} -[465279] [185] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f00530070006500650064004f006600660073006500740055007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[465565] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedOffsetUp => {"state":false,"type":1} -[465590] [186] [svc:undefined] [StateMap] (while) undefined 110 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f0053007000650065006400520061006e006700650000002e007b00220073007400720069006e00670022003a002200380022002c002200740079007000650022003a0034007d -[465869] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedRange => {"string":"8","type":4} -[465900] [187] [svc:undefined] [StateMap] (while) undefined 104 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f005300700065006500640053007400610074006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[466182] [114] 192.168.2.84:45125 /Engine/Deck2/SpeedState => {"type":0,"value":0} -[466206] [188] [svc:undefined] [StateMap] (while) undefined 110 736d6161000000000000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f0064006500000032007b00220073007400720069006e00670022003a0022004f006600660022002c002200740079007000650022003a0034007d -[466492] [114] 192.168.2.84:45125 /Engine/Deck2/SyncMode => {"string":"Off","type":4} -[466521] [189] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[466803] [114] 192.168.2.84:45125 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[466831] [190] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c00650065007000000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[467112] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Bleep => {"state":false,"type":2} -[467138] [191] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0043007500650050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[467426] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CuePosition => {"type":14,"value":0} -[467460] [192] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[467743] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentBPM => {"type":0,"value":120} -[467770] [193] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e0064006500780000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[468047] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentKeyIndex => {"type":10,"value":0} -[468076] [194] [svc:undefined] [StateMap] (while) undefined 140 736d61610000000000000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[468350] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopInPosition => {"type":14,"value":0} -[468383] [195] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006e0000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[468668] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopOutPosition => {"type":14,"value":0} -[468695] [196] [svc:undefined] [StateMap] (while) undefined 142 736d61610000000000000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f007000530069007a00650049006e004200650061007400730000002a007b002200740079007000650022003a00310034002c002200760061006c007500650022003a0030007d -[468962] [114] 192.168.2.84:45125 /Engine/Deck2/Track/CurrentLoopSizeInBeats => {"type":14,"value":0} -[468989] [197] [svc:undefined] [StateMap] (while) undefined 118 736d61610000000000000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006b00000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[469261] [114] 192.168.2.84:45125 /Engine/Deck2/Track/KeyLock => {"state":false,"type":1} -[469287] [198] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[469624] [114] 192.168.2.84:45125 /Engine/Deck2/Track/LoopEnableState => {"state":false,"type":1} -[469664] [199] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[469988] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop1 => {"state":false,"type":2} -[470020] [200] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003200000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[470313] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop2 => {"state":false,"type":2} -[470341] [201] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[470626] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop3 => {"state":false,"type":2} -[470654] [202] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[470927] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop4 => {"state":false,"type":2} -[470954] [203] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[471228] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop5 => {"state":false,"type":2} -[471254] [204] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003600000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[471535] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop6 => {"state":false,"type":2} -[471565] [205] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003700000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[472278] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop7 => {"state":false,"type":2} -[472322] [206] [svc:undefined] [StateMap] (while) undefined 134 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f0070002f0051007500690063006b004c006f006f0070003800000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0032007d -[472655] [114] 192.168.2.84:45125 /Engine/Deck2/Track/Loop/QuickLoop8 => {"state":false,"type":2} -[472692] [207] [svc:undefined] [StateMap] (while) undefined 138 736d6161000000000000004a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0050006c0061007900500061007500730065004c004500440053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[473012] [114] 192.168.2.84:45125 /Engine/Deck2/Track/PlayPauseLEDState => {"state":false,"type":1} -[473043] [208] [svc:undefined] [StateMap] (while) undefined 126 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00530061006d0070006c0065005200610074006500000032007b002200740079007000650022003a00310034002c002200760061006c007500650022003a00340034003100300030007d -[473335] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SampleRate => {"type":14,"value":44100} -[473364] [209] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a0065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[473652] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongAnalyzed => {"state":false,"type":1} -[473681] [210] [svc:undefined] [StateMap] (while) undefined 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[473971] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[473997] [211] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[474274] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[474302] [212] [svc:undefined] [StateMap] (while) undefined 130 736d61610000000000000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f0075006e006400530077006900740063006800470075006900640000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[474585] [114] 192.168.2.84:45125 /Engine/Deck2/Track/SoundSwitchGuid => {"string":"","type":8} -[474611] [213] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004200790074006500730000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[474889] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackBytes => {"type":10,"value":0} -[474917] [214] [svc:undefined] [StateMap] (while) undefined 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[475194] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[475219] [215] [svc:undefined] [StateMap] (while) undefined 120 736d6161000000000000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e0067007400680000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0030007d -[475490] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackLength => {"type":10,"value":0} -[475520] [216] [svc:undefined] [StateMap] (while) undefined 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[475794] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[475822] [217] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[476099] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[476126] [218] [svc:undefined] [StateMap] (while) undefined 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0055007200690000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[476405] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackUri => {"string":"","type":8} -[476437] [219] [svc:undefined] [StateMap] (while) undefined 132 736d61610000000000000044002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b0057006100730050006c006100790065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[476722] [114] 192.168.2.84:45125 /Engine/Deck2/Track/TrackWasPlayed => {"state":false,"type":1} -[476749] [220] [svc:undefined] [StateMap] (while) undefined 92 736d61610000000000000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e00740000002a007b002200740079007000650022003a00310030002c002200760061006c007500650022003a0032007d -[477029] [114] 192.168.2.84:45125 /Engine/DeckCount => {"type":10,"value":2} -[477055] [221] [svc:undefined] [StateMap] (while) undefined 114 736d61610000000000000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006b0000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0038007d -[477327] [114] 192.168.2.84:45125 /GUI/Decks/Deck/ActiveDeck => {"string":"1","type":8} -[477353] [222] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[477632] [114] 192.168.2.84:45125 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[477658] [223] [svc:undefined] [StateMap] (while) undefined 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[477930] [114] 192.168.2.84:45125 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[477957] [224] [svc:undefined] [StateMap] (while) undefined 128 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d006100730074006500720053007400610074007500730000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[478235] [114] 192.168.2.84:45125 /Engine/Sync/Network/MasterStatus => {"state":true,"type":1} -[478260] [225] [svc:undefined] [StateMap] (while) undefined 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[478644] [114] 192.168.2.84:45125 /Engine/Master/MasterTempo => {"type":0,"value":122} -[479678] [7] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff -[479703] [7] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff -[479729] [6] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[479738] [6] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[479746] [6] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[479778] [6] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 47 0000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[480358] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e -[481036] [8] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[481058] [6] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff -[481068] [6] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff -[481076] [6] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff -[481105] [6] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 21 000000000000000201000000007fffffffffffffff -[481122] [9] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 25 666c7478000000000000000201000000007fffffffffffffff -[481376] [10] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff -[481393] [10] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff -[481407] [9] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 -[481415] [9] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 -[481422] [9] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 -[481447] [9] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 15 000000000000000300000000010101 -[481465] [11] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 19 666c7478000000000000000300000000010101 -[481493] [9] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff -[481501] [9] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff -[481509] [9] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff -[481529] [9] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 21 000000000000000201000000007fffffffffffffff -[481541] [12] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 25 666c7478000000000000000201000000007fffffffffffffff -[489725] [13] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489879] [13] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489897] [12] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489910] [12] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489919] [12] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489954] [12] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 61 00000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[489981] [14] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d30375e5100000000000002588d4044aa200000000000000040000 -[490630] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e -[492749] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) -[495580] [object Object] -[501801] [15] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 28 00000018666c74780000000000000004000000000004000000000001 -[501974] [15] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 28 00000018666c74780000000000000004000000000004000000000001 -[501995] [14] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 -[502005] [14] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 -[502014] [14] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 -[502051] [14] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 0000000000000004000000000004000000000001 -[502095] [16] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 24 666c74780000000000000004000000000004000000000001 -[503212] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/262144 -[510992] [17] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 5792 00001018666c7478000000000000000500000000... -[511139] [17] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 5792 00001018666c7478000000000000000500000000... -[511165] [16] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... -[511188] [16] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... -[511203] [16] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... -[511223] [16] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000000000001000... -[511272] [18] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000000000... -[511293] [18] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1668 00001018666c7478000000000000000500000000... -[514940] [19] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 8688 0000000000000000000000000000000000000000... -[515306] [19] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 10356 00001018666c7478000000000000000500000000... -[515329] [18] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... -[515344] [18] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... -[515358] [18] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... -[515378] [18] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000100000001000... -[515405] [20] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000001000... -[515426] [18] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... -[515439] [18] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... -[515452] [18] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... -[515468] [18] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000200000001000... -[515487] [21] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000002000... -[515501] [21] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2108 00001018666c7478000000000000000500000000... -[518731] [22] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 2896 6c20496e204c6f76655f2854686f6d6173204761... -[518841] [22] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 5004 00001018666c7478000000000000000500000000... -[518862] [21] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... -[518875] [21] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... -[518891] [21] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... -[518907] [21] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000300000001000... -[518927] [23] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000003000... -[518945] [23] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 880 00001018666c7478000000000000000500000000... -[523462] [24] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 10136 0000000000000000000000000000000000000000... -[523621] [24] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 11016 00001018666c7478000000000000000500000000... -[523655] [23] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... -[523671] [23] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... -[523685] [23] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... -[523708] [23] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000400000001000... -[523736] [25] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000004000... -[523764] [23] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... -[523788] [23] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... -[523806] [23] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... -[523827] [23] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000500000001000... -[523851] [26] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000005000... -[523875] [26] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2768 00001018666c7478000000000000000500000000... -[525356] [27] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 13032 0000000000000000000000000000000000000000... -[525507] [27] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 15800 00001018666c7478000000000000000500000000... -[525534] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... -[525549] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... -[525564] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... -[525585] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000600000001000... -[525610] [28] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000006000... -[525635] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... -[525653] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... -[525672] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... -[525693] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000700000001000... -[525718] [29] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000007000... -[525752] [26] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... -[525770] [26] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... -[525789] [26] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... -[525810] [26] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000800000001000... -[525835] [30] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000008000... -[525864] [30] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 3428 00001018666c7478000000000000000500000000... -[529283] [31] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 7240 697829191c033d0145784d616368696e6520284f... -[529446] [31] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 10668 00001018666c7478000000000000000500000000... -[529478] [30] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... -[529495] [30] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... -[529513] [30] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... -[529535] [30] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000900000001000... -[529559] [32] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000009000... -[529582] [30] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... -[529599] [30] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... -[529614] [30] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... -[529633] [30] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000a00000001000... -[529654] [33] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000a000... -[529673] [33] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2420 00001018666c7478000000000000000500000000... -[532398] [34] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 23168 0000000000000000000000000000000000000000... -[532573] [34] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 25588 00001018666c7478000000000000000500000000... -[532599] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... -[532616] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... -[532633] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... -[532655] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000b00000001000... -[532680] [35] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000b000... -[532705] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... -[532722] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... -[532739] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... -[532759] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000c00000001000... -[532784] [36] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000c000... -[532809] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... -[532826] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... -[532845] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... -[532863] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000d00000001000... -[532888] [37] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000d000... -[532911] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... -[532927] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... -[532945] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... -[532964] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000e00000001000... -[532988] [38] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000e000... -[533010] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... -[533029] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... -[533045] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... -[533064] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000000f00000001000... -[533088] [39] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000000f000... -[533111] [33] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... -[533128] [33] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... -[533145] [33] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... -[533163] [33] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001000000001000... -[533188] [40] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000010000... -[533204] [40] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 844 00001018666c7478000000000000000500000000... -[534251] [41] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 14480 0000000000000000000000000000000000000000... -[534392] [41] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 15324 00001018666c7478000000000000000500000000... -[534417] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... -[534434] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... -[534448] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... -[534464] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001100000001000... -[534487] [42] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000011000... -[534511] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... -[534528] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... -[534620] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... -[534641] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001200000001000... -[534665] [43] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000012000... -[534691] [40] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... -[534708] [40] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... -[534725] [40] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... -[534743] [40] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001300000001000... -[534767] [44] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000013000... -[534786] [44] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2952 00001018666c7478000000000000000500000000... -[541441] [45] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 24616 20424f4f4c45414e2c200a0969734d6574616461... -[541632] [45] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 27568 00001018666c7478000000000000000500000000... -[541661] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... -[541678] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... -[541693] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... -[541714] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001400000001000... -[541738] [46] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000014000... -[541759] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... -[541777] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... -[541792] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... -[541809] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001500000001000... -[541830] [47] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000015000... -[541849] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... -[541864] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... -[541878] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... -[541894] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001600000001000... -[541915] [48] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000016000... -[541934] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... -[541948] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... -[541964] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... -[541981] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001700000001000... -[542003] [49] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000017000... -[542022] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... -[542039] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... -[542056] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... -[542073] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001800000001000... -[542093] [50] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000018000... -[542112] [44] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... -[542127] [44] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... -[542143] [44] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... -[542163] [44] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001900000001000... -[542189] [51] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000019000... -[542207] [51] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2824 00001018666c7478000000000000000500000000... -[543665] [52] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20272 0000000000000000000000000000000000000000... -[543944] [52] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 23096 00001018666c7478000000000000000500000000... -[543974] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... -[543995] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... -[544012] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... -[544035] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001a00000001000... -[544061] [53] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001a000... -[544087] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... -[544104] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... -[544121] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... -[544141] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001b00000001000... -[544166] [54] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001b000... -[544189] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... -[544207] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... -[544232] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... -[544252] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001c00000001000... -[544276] [55] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001c000... -[544360] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... -[544378] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... -[544395] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... -[544414] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001d00000001000... -[544441] [56] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001d000... -[544464] [51] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... -[544481] [51] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... -[544498] [51] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... -[544517] [51] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001e00000001000... -[544542] [57] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001e000... -[544562] [57] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 2476 00001018666c7478000000000000000500000000... -[552302] [58] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 31856 206c2e706f736974696f6e202b2031200a094652... -[552583] [58] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 34332 00001018666c7478000000000000000500000000... -[552622] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... -[552644] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... -[552665] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... -[552693] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000001f00000001000... -[552734] [59] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000001f000... -[552764] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... -[552787] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... -[552806] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... -[552845] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002000000001000... -[553323] [60] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000020000... -[553361] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... -[553379] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... -[553400] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... -[553425] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002100000001000... -[553449] [61] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000021000... -[553473] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... -[553489] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... -[553505] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... -[553530] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002200000001000... -[553551] [62] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000022000... -[553577] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... -[553594] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... -[553616] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... -[553644] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002300000001000... -[553678] [63] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000023000... -[553703] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... -[553722] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... -[553737] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... -[553753] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002400000001000... -[553773] [64] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000024000... -[553792] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... -[553806] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... -[553821] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... -[553837] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002500000001000... -[553857] [65] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000025000... -[553875] [57] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... -[553890] [57] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... -[553905] [57] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... -[553921] [57] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002600000001000... -[553942] [66] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000026000... -[553966] [66] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1340 00001018666c7478000000000000000500000000... -[554203] [67] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 33304 925d535dd14b3a420a41bea48fac3a608b8884d4... -[554333] [67] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 34644 00001018666c7478000000000000000500000000... -[554354] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... -[554369] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... -[554383] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... -[554401] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002700000001000... -[554422] [68] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000027000... -[554444] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... -[554459] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... -[554476] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... -[554497] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002800000001000... -[554520] [69] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000028000... -[554544] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... -[554559] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... -[554579] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... -[554594] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002900000001000... -[554618] [70] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000029000... -[554639] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... -[554657] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... -[554672] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... -[554690] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002a00000001000... -[554713] [71] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002a000... -[554734] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... -[554751] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... -[554770] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... -[554786] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002b00000001000... -[554807] [72] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002b000... -[554828] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... -[554843] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... -[554859] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... -[554876] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002c00000001000... -[554896] [73] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002c000... -[554917] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... -[554935] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... -[554950] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... -[554969] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002d00000001000... -[554992] [74] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002d000... -[555014] [66] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... -[555029] [66] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... -[555048] [66] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... -[555065] [66] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002e00000001000... -[555093] [75] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002e000... -[555108] [75] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 1652 00001018666c7478000000000000000500000000... -[555369] [76] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 11584 0000000000000000000000000000000000000000... -[555422] [76] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 13236 00001018666c7478000000000000000500000000... -[555444] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... -[555459] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... -[555473] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... -[555490] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000002f00000001000... -[555512] [77] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000002f000... -[555532] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... -[555547] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... -[555562] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... -[555578] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003000000001000... -[555602] [78] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000030000... -[555627] [75] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... -[555641] [75] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... -[555656] [75] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... -[555672] [75] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003100000001000... -[555693] [79] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000031000... -[555707] [79] [svc:undefined] [FileTransfer] (toqueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 864 00001018666c7478000000000000000500000000... -[558601] [80] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 56872 0000000000000000000000000000000000000000... -[558929] [80] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 57736 00001018666c7478000000000000000500000000... -[558968] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... -[558985] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... -[559002] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... -[559022] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003200000001000... -[559047] [81] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000032000... -[559069] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... -[559085] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... -[559099] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... -[559116] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003300000001000... -[559139] [82] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000033000... -[559159] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... -[559174] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... -[559191] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... -[559208] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003400000001000... -[559229] [83] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000034000... -[559249] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... -[559284] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... -[559300] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... -[559317] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003500000001000... -[559338] [84] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000035000... -[559357] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... -[559372] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... -[559386] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... -[559403] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003600000001000... -[559423] [85] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000036000... -[559441] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... -[559457] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... -[559471] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... -[559487] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003700000001000... -[559508] [86] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000037000... -[559527] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... -[559541] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... -[559556] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... -[559572] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003800000001000... -[559592] [87] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000038000... -[559610] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... -[559624] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... -[559638] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... -[559654] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003900000001000... -[559674] [88] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c747800000000000000050000000000039000... -[559693] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... -[559707] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... -[559722] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... -[559737] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003a00000001000... -[559758] [89] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003a000... -[559777] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... -[559791] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... -[559806] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... -[559830] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003b00000001000... -[559851] [90] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003b000... -[559870] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... -[559885] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... -[559900] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... -[559916] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003c00000001000... -[559937] [91] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003c000... -[559955] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... -[559970] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... -[559984] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... -[560000] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003d00000001000... -[560021] [92] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003d000... -[560039] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... -[560054] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... -[560068] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... -[560084] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003e00000001000... -[560105] [93] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003e000... -[560123] [79] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... -[560138] [79] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... -[560152] [79] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... -[560168] [79] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 4116 0000000000000005000000000003f00000001000... -[560188] [94] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 4120 666c74780000000000000005000000000003f000... -[708506] Download complete. -[709132] Signaling transfer complete. -[710053] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[711030] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[1054782] [8] [svc:undefined] [Directory] (p_data) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008215d17d5c78 -[1055236] [8] [svc:undefined] [Directory] (buffQueue) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008215d17d5c78 -[1055592] [9] [svc:undefined] [Directory] (p_data) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008215d17d7464 -[1055632] [9] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008215d17d7464 -[2394042] [95] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 -[2395216] [95] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 -[2395379] [94] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[2395456] [94] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[2395528] [94] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[2395803] [94] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 12 000004e4000007d200000000 -[2396060] [96] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[2396752] [97] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 -[2396842] [97] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 -[2396943] [96] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[2397036] [96] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[2397115] [96] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[2397301] [96] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 12 000002bb000007d200000000 -[2397428] [98] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[5049590] [10] [svc:undefined] [Directory] (p_data) undefined 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000006dc4617bc0b9 -[5050588] [10] [svc:undefined] [Directory] (buffQueue) undefined 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000006dc4617bc0b9 -[5051287] [11] [svc:undefined] [Directory] (p_data) undefined 44 0000000138e00963fc1a48c0ab93fc689fa2e4550000000000000000000000000000000000006dc43f4bb23e -[5051389] [11] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000138e00963fc1a48c0ab93fc689fa2e4550000000000000000000000000000000000006dc43f4bb23e -[5051836] [12] [svc:undefined] [Directory] (p_data) undefined 44 000000013e5df2e822404938bdf3478dda8c4fa90000000000000000000000000000000000006dc43f5b2384 -[5051939] [12] [svc:undefined] [Directory] (buffQueue) undefined 44 000000013e5df2e822404938bdf3478dda8c4fa90000000000000000000000000000000000006dc43f5b2384 -[5056526] [13] [svc:undefined] [Directory] (p_data) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008216e2464302 -[5056886] [13] [svc:undefined] [Directory] (buffQueue) undefined 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000008216e2464302 -[5098724] [226] [svc:undefined] [StateMap] (p_data) undefined 874 00000058736d6161000007d200000048002f0045... -[5099389] [226] [svc:undefined] [StateMap] (buffQueue) undefined 874 00000058736d6161000007d200000048002f0045... -[5100258] [227] [svc:undefined] [StateMap] (while) undefined 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5100482] [228] [svc:undefined] [StateMap] (while) undefined 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5100635] [229] [svc:undefined] [StateMap] (while) undefined 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5100812] [230] [svc:undefined] [StateMap] (while) undefined 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5100951] [231] [svc:undefined] [StateMap] (while) undefined 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5101100] [232] [svc:undefined] [StateMap] (while) undefined 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5101254] [233] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5101422] [234] [svc:undefined] [StateMap] (while) undefined 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5101542] [235] [svc:undefined] [StateMap] (while) undefined 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5101673] [236] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5102183] [237] [svc:undefined] [StateMap] (p_data) undefined 1448 00000042736d6161000007d200000032002f0045... -[5102278] [237] [svc:undefined] [StateMap] (buffQueue) undefined 1448 00000042736d6161000007d200000032002f0045... -[5102400] [238] [svc:undefined] [StateMap] (while) undefined 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff -[5102532] [239] [svc:undefined] [StateMap] (while) undefined 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff -[5102645] [240] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff -[5102733] [241] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff -[5102818] [242] [svc:undefined] [StateMap] (while) undefined 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff -[5102909] [243] [svc:undefined] [StateMap] (while) undefined 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5102996] [244] [svc:undefined] [StateMap] (while) undefined 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5103083] [245] [svc:undefined] [StateMap] (while) undefined 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5103177] [246] [svc:undefined] [StateMap] (while) undefined 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5103269] [247] [svc:undefined] [StateMap] (while) undefined 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5103360] [248] [svc:undefined] [StateMap] (while) undefined 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5103449] [249] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5103537] [250] [svc:undefined] [StateMap] (while) undefined 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5103638] [251] [svc:undefined] [StateMap] (while) undefined 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5103742] [252] [svc:undefined] [StateMap] (while) undefined 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5103830] [253] [svc:undefined] [StateMap] (while) undefined 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff -[5103896] [254] [svc:undefined] [StateMap] (while) undefined 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff -[5103962] [255] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff -[5104021] [255] [svc:undefined] [StateMap] (toqueue) undefined 36 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f00440065 -[5105675] [256] [svc:undefined] [StateMap] (p_data) undefined 2526 00000058736d6161000007d200000048002f0045... -[5106038] [256] [svc:undefined] [StateMap] (buffQueue) undefined 2562 0000003e736d6161000007d20000002e002f0045... -[5106450] [257] [svc:undefined] [StateMap] (while) undefined 62 736d6161000007d20000002e002f0045006e00670069006e0065002f0044006500000058736d6161000007d200000048002f0045006e00670069006e0065 -[5106522] [257] [svc:undefined] [StateMap] (toqueue) undefined 2496 002f004400650063006b0031002f005400720061... -[5107140] [258] [svc:undefined] [StateMap] (p_data) undefined 1302 0063006b0032002f0050006100640073002f0056... -[5107226] [258] [svc:undefined] [StateMap] (buffQueue) undefined 3798 002f004400650063006b0031002f005400720061... -[5107305] [258] [svc:undefined] [StateMap] (toqueue) undefined 3798 002f004400650063006b0031002f005400720061... -[5108632] [259] [svc:undefined] [StateMap] (p_data) undefined 1348 0045006e00670069006e0065002f004400650063... -[5109005] [259] [svc:undefined] [StateMap] (buffQueue) undefined 5146 002f004400650063006b0031002f005400720061... -[5109082] [259] [svc:undefined] [StateMap] (toqueue) undefined 5146 002f004400650063006b0031002f005400720061... -[5110528] [260] [svc:undefined] [StateMap] (p_data) undefined 1208 00000058736d6161000007d200000048002f0045... -[5110872] [260] [svc:undefined] [StateMap] (buffQueue) undefined 6354 002f004400650063006b0031002f005400720061... -[5110936] [260] [svc:undefined] [StateMap] (toqueue) undefined 6354 002f004400650063006b0031002f005400720061... -[5116304] [261] [svc:undefined] [StateMap] (p_data) undefined 1084 0000004c736d6161000007d20000003c002f0045... -[5116640] [261] [svc:undefined] [StateMap] (buffQueue) undefined 7438 002f004400650063006b0031002f005400720061... -[5116706] [261] [svc:undefined] [StateMap] (toqueue) undefined 7438 002f004400650063006b0031002f005400720061... -[5117607] [262] [svc:undefined] [StateMap] (p_data) undefined 360 00000032736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff00000044736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff00000072736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5117941] [262] [svc:undefined] [StateMap] (buffQueue) undefined 7798 002f004400650063006b0031002f005400720061... -[5118008] [262] [svc:undefined] [StateMap] (toqueue) undefined 7798 002f004400650063006b0031002f005400720061... -[5122630] [263] [svc:undefined] [StateMap] (p_data) undefined 234 00000072736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5123086] [263] [svc:undefined] [StateMap] (buffQueue) undefined 8032 002f004400650063006b0031002f005400720061... -[5123155] [263] [svc:undefined] [StateMap] (toqueue) undefined 8032 002f004400650063006b0031002f005400720061... -[6058299] [14] [svc:undefined] [Directory] (p_data) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008216fb8488a4 -[6059243] [14] [svc:undefined] [Directory] (buffQueue) undefined 44 000000015d9493e178fb461581f9da612621ffa80000000000000000000000000000000000008216fb8488a4 -[6059851] [15] [svc:undefined] [Directory] (p_data) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008216fb849897 -[6059921] [15] [svc:undefined] [Directory] (buffQueue) undefined 44 0000000119ad6b7bb34f452abc646295a103dd0c0000000000000000000000000000000000008216fb849897 -[6489976] [99] [svc:undefined] [FileTransfer] (p_data) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 -[6490744] [99] [svc:undefined] [FileTransfer] (buffQueue) 4be14112-5ead-4848-a07d-b37ca8a7220e 20 00000010666c7478000004e4000007d200000000 -[6490818] [98] [svc:undefined] [FileTransfer] (preSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[6490867] [98] [svc:undefined] [FileTransfer] (postSvc) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[6490908] [98] [svc:undefined] [FileTransfer] (ff-pre) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[6491067] [98] [svc:undefined] [FileTransfer] (mag-post) 4be14112-5ead-4848-a07d-b37ca8a7220e 12 000004e4000007d200000000 -[6491126] [100] [svc:undefined] [FileTransfer] (while) 4be14112-5ead-4848-a07d-b37ca8a7220e 16 666c7478000004e4000007d200000000 -[6491579] [101] [svc:undefined] [FileTransfer] (p_data) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 -[6491807] [101] [svc:undefined] [FileTransfer] (buffQueue) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 20 00000010666c7478000002bb000007d200000000 -[6491961] [100] [svc:undefined] [FileTransfer] (preSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[6492001] [100] [svc:undefined] [FileTransfer] (postSvc) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[6492043] [100] [svc:undefined] [FileTransfer] (ff-pre) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 -[6492170] [100] [svc:undefined] [FileTransfer] (mag-post) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 12 000002bb000007d200000000 -[6492216] [102] [svc:undefined] [FileTransfer] (while) 1e6c417a-b674-4c87-b4aa-fb7ad2298976 16 666c7478000002bb000007d200000000 +[14013] Announced myself on 49743 +[39717] [Directory] connection from 192.168.2.84:37177 +[40813] [Directory] connection from 192.168.2.84:40341 +[41346] [Directory] connection from 192.168.2.84:51727 +[42122] [1] [Directory] 192.168.2.84:37177 (p_data) 20 0000000227ad20951ef64d119fd690d285032922 +[42356] [1] [Directory] 192.168.2.84:37177 (buffQueue) 20 0000000227ad20951ef64d119fd690d285032922 +[42376] [1] [Directory] 192.168.2.84:37177 (toparse) 20 0000000227ad20951ef64d119fd690d285032922 +[43466] [2] [Directory] 192.168.2.84:40341 (p_data) 20 00000002bfd411d804794da8aeac8430b69067fe +[43523] [2] [Directory] 192.168.2.84:40341 (buffQueue) 20 00000002bfd411d804794da8aeac8430b69067fe +[43546] [2] [Directory] 192.168.2.84:40341 (toparse) 20 00000002bfd411d804794da8aeac8430b69067fe +[43754] [3] [Directory] 192.168.2.84:51727 (p_data) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[43791] [3] [Directory] 192.168.2.84:51727 (buffQueue) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[43804] [3] [Directory] 192.168.2.84:51727 (toparse) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[45209] [Directory] connection from 192.168.2.83:36397 +[45700] [Directory] connection from 192.168.2.83:59639 +[46168] [Directory] connection from 192.168.2.83:55487 +[46350] [4] [Directory] 192.168.2.83:36397 (p_data) 20 0000000221ffc994f8c84729aef346f9808373ed +[46382] [4] [Directory] 192.168.2.83:36397 (buffQueue) 20 0000000221ffc994f8c84729aef346f9808373ed +[46399] [4] [Directory] 192.168.2.83:36397 (toparse) 20 0000000221ffc994f8c84729aef346f9808373ed +[46589] [5] [Directory] 192.168.2.83:59639 (p_data) 20 000000024be141125ead4848a07db37ca8a7220e +[46608] [5] [Directory] 192.168.2.83:59639 (buffQueue) 20 000000024be141125ead4848a07db37ca8a7220e +[46618] [5] [Directory] 192.168.2.83:59639 (toparse) 20 000000024be141125ead4848a07db37ca8a7220e +[46791] [6] [Directory] 192.168.2.83:55487 (p_data) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[46810] [6] [Directory] 192.168.2.83:55487 (buffQueue) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[46823] [6] [Directory] 192.168.2.83:55487 (toparse) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[88121] [Directory] connection from 192.168.2.99:49246 +[88380] [7] [Directory] 192.168.2.99:49246 (p_data) 20 000000020000000000000000800000059501ab6f +[88501] [7] [Directory] 192.168.2.99:49246 (buffQueue) 20 000000020000000000000000800000059501ab6f +[88515] [7] [Directory] 192.168.2.99:49246 (toparse) 20 000000020000000000000000800000059501ab6f +[301149] [Directory] sent ServiceAnnouncement to 192.168.2.84:37177 +[303066] [Directory] sent ServiceAnnouncement to 192.168.2.84:40341 +[304796] [Directory] sent ServiceAnnouncement to 192.168.2.84:51727 +[306707] [Directory] sent ServiceAnnouncement to 192.168.2.83:36397 +[309641] [Directory] sent ServiceAnnouncement to 192.168.2.83:59639 +[310954] [Directory] sent ServiceAnnouncement to 192.168.2.83:55487 +[320830] [StateMap] connection from 192.168.2.84:48157 +[322357] [StateMap] connection from 192.168.2.83:34687 +[322920] [1] [StateMap] 192.168.2.84:48157 (p_data) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d +[323009] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d +[323266] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d +[324835] Sending Statemap subscriptions to 192.168.2.84:48157 +[333555] [2] [StateMap] 192.168.2.83:34687 (p_data) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f +[333611] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f +[333650] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f +[334622] Sending Statemap subscriptions to 192.168.2.83:34687 +[343076] [Directory] sent ServiceAnnouncement to 192.168.2.99:49246 +[349185] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1462 00000072736d61610000000000000034002f0043... +[349700] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1462 00000072736d61610000000000000034002f0043... +[349931] [4] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[352228] [2] 192.168.2.83:34687 /Client/Preferences/Player => {"string":"1","type":4} +[352370] [5] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[353034] [2] 192.168.2.83:34687 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[353146] [6] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[353764] [2] 192.168.2.83:34687 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[353882] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[354495] [2] 192.168.2.83:34687 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[354612] [8] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[355202] [2] 192.168.2.83:34687 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[355284] [9] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[355869] [2] 192.168.2.83:34687 /Engine/Deck1/Play => {"state":false,"type":1} +[355945] [10] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[356522] [2] 192.168.2.83:34687 /Engine/Deck1/PlayState => {"state":false,"type":1} +[356607] [11] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[357181] [2] 192.168.2.83:34687 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[357330] [12] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[357919] [2] 192.168.2.83:34687 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[358261] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 3668 00000072736d61610000000000000034002f0043... +[358315] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 3668 00000072736d61610000000000000034002f0043... +[358390] [14] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d +[359120] [12] 192.168.2.84:48157 /Client/Preferences/Player => {"string":"2","type":4} +[359223] [15] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[359779] [12] 192.168.2.84:48157 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[359853] [16] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[360355] [12] 192.168.2.84:48157 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[360422] [17] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[360910] [12] 192.168.2.84:48157 /Engine/Master/MasterTempo => {"type":0,"value":122} +[360977] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[361476] [12] 192.168.2.84:48157 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[361539] [19] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[362049] [12] 192.168.2.84:48157 /Engine/Deck1/Play => {"state":false,"type":1} +[362119] [20] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[362649] [12] 192.168.2.84:48157 /Engine/Deck1/PlayState => {"state":false,"type":1} +[362749] [21] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 136 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d00650000003c007b00220073007400720069006e00670022003a00220062006c0061006b0074006f006e00650022002c002200740079007000650022003a0038007d +[363282] [12] 192.168.2.84:48157 /Engine/Deck1/Track/ArtistName => {"string":"blaktone","type":8} +[363420] [22] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 388 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[363951] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} +[364029] [23] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[364536] [12] 192.168.2.84:48157 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[364615] [24] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 164 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005c007b00220073007400720069006e00670022003a002200450078004d0061006300680069006e006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[365135] [12] 192.168.2.84:48157 /Engine/Deck1/Track/SongName => {"string":"ExMachine (Original Mix)","type":8} +[365203] [25] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[365706] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[365840] [26] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 374 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d00650000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[366340] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} +[366409] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[366904] [12] 192.168.2.84:48157 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} +[366994] [28] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[367505] [12] 192.168.2.84:48157 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[367568] [29] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[368078] [12] 192.168.2.84:48157 /Engine/Deck2/Play => {"state":false,"type":1} +[368147] [30] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[368647] [12] 192.168.2.84:48157 /Engine/Deck2/PlayState => {"state":false,"type":1} +[368720] [31] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[369446] [12] 192.168.2.84:48157 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[369556] [32] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[370111] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[370184] [33] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[370683] [12] 192.168.2.84:48157 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[370751] [34] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[371233] [12] 192.168.2.84:48157 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[371299] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[371765] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[371826] [36] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[372287] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[372359] [37] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[372817] [12] 192.168.2.84:48157 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[372886] [38] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[373351] [12] 192.168.2.84:48157 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[374620] [StateMap] connection from 192.168.2.99:49247 +[374887] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 2166 0000007a736d6161000000000000003c002f0045... +[374940] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 2166 0000007a736d6161000000000000003c002f0045... +[375002] [40] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[375575] [38] 192.168.2.83:34687 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[375654] [41] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[376111] [38] 192.168.2.83:34687 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[376174] [42] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[376734] [38] 192.168.2.83:34687 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[376836] [43] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[377312] [38] 192.168.2.83:34687 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[377371] [44] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[377773] [38] 192.168.2.83:34687 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[377829] [45] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[378219] [38] 192.168.2.83:34687 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[378269] [46] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[378662] [38] 192.168.2.83:34687 /Engine/Deck2/Play => {"state":false,"type":1} +[378716] [47] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[379117] [38] 192.168.2.83:34687 /Engine/Deck2/PlayState => {"state":false,"type":1} +[379192] [48] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[379589] [38] 192.168.2.83:34687 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[379643] [49] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[380039] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[380094] [50] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[380554] [38] 192.168.2.83:34687 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[380634] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[381157] [38] 192.168.2.83:34687 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[381222] [52] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[381675] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[381737] [53] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[382173] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[382238] [54] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[382653] [38] 192.168.2.83:34687 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[382711] [55] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[383118] [38] 192.168.2.83:34687 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} diff --git a/services/Directory.ts b/services/Directory.ts index 32921f1..82ef69d 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -33,18 +33,30 @@ export class Directory extends Service { async init() { } - protected parseData(ctx: ReadContext, socket: Socket, msgId:number): ServiceMessage { + protected parseData(ctx: ReadContext, socket: Socket, msgId:number, svcMsg:boolean): ServiceMessage { let deviceId: string = ""; let servicePorts: ServicePorts = {}; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); const deviceId = deviceIdFromBuff(token) + const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(":"); + //if (!this.deviceIps.has(ipAddressPort) { + + this.deviceIps.set(ipAddressPort, deviceId); + //} this.connections.set(deviceId, socket); + //this.testPoint(ctx, this.getDeviceIdFromSocket(socket), msgId, "switch", false, svcMsg ); + //console.log(msgId, id, deviceId); switch (id) { case MessageId.TimeStamp: ctx.seek(16); this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); + if (ctx.isEOF() === false ){ + //console.log(ctx.readRemainingAsNewBuffer().toString('hex')); + ctx.readRemaining(); + } + this.sendTimeStampReply(token,socket); break; case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); @@ -95,28 +107,32 @@ export class Directory extends Service { Logger.debug(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`) } -/* - private async sendTimeStampReply(socket: Socket): Promise { - await sleep(250); + + private async sendTimeStampReply(token: Uint8Array ,socket: Socket) { + //await sleep(250); //const ctx = new WriteContext(); const wtx3 = new WriteContext(); wtx3.writeUInt32(MessageId.TimeStamp); + wtx3.write(token); wtx3.write(Tokens.Listen); - wtx3.write(new Uint8Array(16)); - wtx3.writeUInt64(BigInt(new Date().getTime()-this.timeConnected)); + wtx3.writeUInt64(0n); + + const message = wtx3.getBuffer(); + assert(message.length === 44); + //wtx3.writeUInt64(BigInt(new Date().getTime()-this.timeConnected)); //ctx.writeUInt32(MessageId.ServicesAnnouncement); //ctx.write(Tokens.Listen); //ctx.writeNetworkStringUTF16('DirectoryService'); //ctx.writeUInt16(this.serverInfo.port); - // await socket.write(wtx3.getBuffer()); + await socket.write(message); //console.log(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) } - + /* private async sendServiceRequest(socket?: Socket): Promise { await sleep(1500); diff --git a/services/Service.ts b/services/Service.ts index 260f591..aebc7a4 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -24,6 +24,10 @@ export declare type ServiceData = { service?: InstanceType; } +type ServiceBuffer = { + [key: string]: Buffer; +} + export abstract class Service extends EventEmitter { //private address: string; //private port: number; @@ -35,6 +39,7 @@ export abstract class Service extends EventEmitter { public deviceIds: Map = new Map(); public deviceIps: Map = new Map(); public serviceList: Map = new Map(); + protected serviceBuffers: Map = new Map(); //protected controller: NetworkDevice; //protected connection: tcp.Connection = null; protected connection: Socket = null; @@ -49,60 +54,30 @@ export abstract class Service extends EventEmitter { this.parent = p_initMsg.parent; this.serInitMsg = p_initMsg; } - protected isSubMsg(ctx: ReadContext): boolean { - //return new Promise((resolve, reject) => { - //const ttx = ctx.readRemainingAsNewBuffer(); - //ctx.rewind(); - - + protected isSubMsg(_ctx: ReadContext): string { + + const ctx = _ctx.readRemainingAsNewCtx(); const messageId = ctx.readUInt32() - //console.log(messageId) const token = ctx.read(16); - - if (messageId === 0 && this.parent.peers.has(deviceIdFromBuff(token))) { - return true + const deviceId = deviceIdFromBuff(token); + if (messageId === 0 && this.parent.peers.has(deviceId)) { + + return deviceId } else { - return false + return } - - /* - while (ctx.isEOF() === false) { - //console.log(ctx.sizeLeft()); - if (ctx.sizeLeft() <= 20) {break;} - const messageId = ctx.readUInt32() - //console.log(messageId) - if (messageId !== 0) {break;} - const token = ctx.read(16); - //console.log(Buffer.from(token).toString('hex')) - if (ctx.sizeLeft() < 4) {break;} - const length = ctx.readUInt32(); - //console.log(length, ctx.sizeLeft()); - if (length > ctx.sizeLeft()) {break;} - ctx.seek(-4); - - const service = ctx.readNetworkStringUTF16() - //console.log(service); - //if (ctx.sizeLeft() <= 4) {break;} - //ctx.rewind(); - return true - //resolve(new ReadContext(ttx, false)); - } - //reject(new ReadContext(ttx, false)) - //}); - //ctx.rewind(); - return false - */ - //const messageId = ctx.readUInt32; - } async createServer(serviceName: string): Promise { return await new Promise((resolve, reject) => { - let queue: Buffer = null; + //let queue: Buffer = null; const server = net.createServer((socket) => { //const deviceId = this.deviceIps.set([socket.rem]) Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + const ipAddressPort = [socket.remoteAddress,socket.remotePort].join(":"); + this.serviceBuffers.set(ipAddressPort,null); + let deviceId = (this.deviceIps.has(ipAddressPort)) ? this.deviceIps.get(ipAddressPort) : ipAddressPort; socket.on('error', (err) => { reject(err); @@ -110,13 +85,26 @@ export abstract class Service extends EventEmitter { socket.on('data', p_data => { //let messages:ReadContext[] = []; + + let queue: Buffer = this.serviceBuffers.get(ipAddressPort); const thisMsgId = this.msgId; this.msgId++ + //if (p_data.buffer) { + + //} const testArrayBuffer = p_data.buffer.slice(p_data.byteOffset, p_data.byteOffset + p_data.byteLength); const ttx = new ReadContext(testArrayBuffer,false); - this.testPoint(ttx, this.getDeviceIdFromSocket(socket), this.msgId, "p_data", true ); + this.testPoint(ttx, deviceId, this.msgId, "p_data", true ); + //let queue const isSub = this.isSubMsg(ttx); + if (isSub && isSub !== deviceId) { + deviceId = isSub + } + + if (this.deviceIps.has(ipAddressPort) && deviceId === ipAddressPort) { + deviceId = this.deviceIps.get(ipAddressPort); + } let buffer: Buffer = null; if (queue && queue.length > 0) { @@ -128,7 +116,7 @@ export abstract class Service extends EventEmitter { // FIXME: Clean up this arraybuffer confusion mess const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); - this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "buffQueue", true ); + this.testPoint(ctx, deviceId, this.msgId, "buffQueue", true ); queue = null; //ctx = await this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "data", true ); /* @@ -155,14 +143,14 @@ export abstract class Service extends EventEmitter { //const messageId = ctx.readUInt32(); //ctx.rewind(); //console.warn(socket.localPort, " ", this.parent.directoryPort); - if (!this.preparseData || socket.localPort === this.parent.directoryPort || isSub) { + if (!this.preparseData || socket.localPort === this.parent.directoryPort || !!isSub) { try { - //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); - const parsedData = this.parseData(ctx, socket,thisMsgId, isSub); + this.testPoint(ctx, deviceId, this.msgId, "toparse", true ); + const parsedData = this.parseData(ctx, socket,thisMsgId); this.emit('message', parsedData); this.messageHandler(parsedData); } catch (err) { - Logger.error(this.msgId, err); + Logger.error(this.name, this.msgId, deviceId, err); } } else { try { @@ -184,7 +172,7 @@ export abstract class Service extends EventEmitter { this.msgId++ const parsedData = this.parseData(new ReadContext(data,false), socket, thisMsgId); - this.testPoint(new ReadContext(data,false), this.getDeviceIdFromSocket(socket), this.msgId, "while", true ); + this.testPoint(new ReadContext(data,false), deviceId, this.msgId, "while", true ); //messages.push(new ReadContext(data, false)) // Forward parsed data to message handler @@ -192,7 +180,7 @@ export abstract class Service extends EventEmitter { this.emit('message', parsedData); } else { ctx.seek(-4); // Rewind 4 bytes to include the length again - this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "toqueue", true ); + this.testPoint(ctx, deviceId, this.msgId, "toqueue", true ); queue = ctx.readRemainingAsNewBuffer(); break; } @@ -202,7 +190,7 @@ export abstract class Service extends EventEmitter { // console.log(stringMsg); //} } catch (err) { - Logger.error(this.msgId, err); + Logger.error(this.name, this.msgId, deviceId, err); } } @@ -339,19 +327,23 @@ export abstract class Service extends EventEmitter { return thisEntry.keys.toString(); } - protected testPoint(_ctx: ReadContext, deviceId: string, msgId: number, name: string, silent?:boolean, isSvc?: boolean) { + protected testPoint(_ctx: ReadContext, deviceId: string, msgId: number, name: string, silent?:boolean) { const ctx = _ctx.readRemainingAsNewCtx(); const length = ctx.sizeLeft(); - let buff = ctx.readRemainingAsNewBuffer().toString('hex'); + let buff = "" + if (!ctx.isEOF()) { + buff = ctx.readRemainingAsNewBuffer().toString('hex'); + } + ctx.seek(0- length); if (buff.length > 1000) { buff = buff.substring(0,40); buff += "..."; } if (silent) { - Logger.silent(`[${msgId}] [svc:${isSvc}] [${this.name}] (${name}) ${deviceId} ${length} ${buff}`); + Logger.silent(`[${msgId}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } else { - Logger.debug(`[${msgId}] [svc:${isSvc}] [${this.name}] (${name}) ${deviceId} ${length} ${buff}`); + Logger.debug(`[${msgId}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } } diff --git a/services/StateMap.ts b/services/StateMap.ts index 7e8dc4b..cfb8962 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -14,6 +14,22 @@ export const States = [ StageLinqValue.MixerCH2faderPosition, StageLinqValue.MixerCrossfaderPosition, + StageLinqValue.ClientPreferencesLayerA, + StageLinqValue.ClientPreferencesPlayer, + StageLinqValue.ClientPreferencesPlayerJogColorA, + StageLinqValue.ClientPreferencesPlayerJogColorB, + StageLinqValue.EngineDeck1DeckIsMaster, + StageLinqValue.EngineDeck2DeckIsMaster, + + StageLinqValue.EngineMasterMasterTempo, + + StageLinqValue.EngineSyncNetworkMasterStatus, + StageLinqValue.MixerChannelAssignment1, + StageLinqValue.MixerChannelAssignment2, + StageLinqValue.MixerChannelAssignment3, + StageLinqValue.MixerChannelAssignment4, + StageLinqValue.MixerNumberOfChannels, + // Decks StageLinqValue.EngineDeck1Play, StageLinqValue.EngineDeck1PlayState, @@ -63,21 +79,6 @@ export const States = [ StageLinqValue.EngineDeck4CurrentBPM, StageLinqValue.EngineDeck4ExternalMixerVolume, - StageLinqValue.ClientPreferencesLayerA, - StageLinqValue.ClientPreferencesPlayer, - StageLinqValue.ClientPreferencesPlayerJogColorA, - StageLinqValue.ClientPreferencesPlayerJogColorB, - StageLinqValue.EngineDeck1DeckIsMaster, - StageLinqValue.EngineDeck2DeckIsMaster, - - StageLinqValue.EngineMasterMasterTempo, - - StageLinqValue.EngineSyncNetworkMasterStatus, - StageLinqValue.MixerChannelAssignment1, - StageLinqValue.MixerChannelAssignment2, - StageLinqValue.MixerChannelAssignment3, - StageLinqValue.MixerChannelAssignment4, - StageLinqValue.MixerNumberOfChannels, ]; @@ -106,18 +107,18 @@ export class StateMap extends Service { public async subscribe(socket: Socket) { + Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort}`); + /* const keys = Object.keys(StageLinqValueObj); - //console.log(keys); const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) - //console.log(values); + for (const value of values) { - //const stateValue: string = StageLinqValueObj[state]; await this.subscribeState(value, 0, socket); } - - //for (const state of States) { - // await this.subscribeState(state, 0, socket); - //} + */ + for (const state of States) { + await this.subscribeState(state, 0, socket); + } } protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number, isSub: boolean): ServiceMessage { @@ -129,7 +130,7 @@ export class StateMap extends Service { const token = p_ctx.read(16); const svcName = p_ctx.readNetworkStringUTF16(); const svcPort = p_ctx.readUInt16(); - console.log(deviceIdFromBuff(token), svcName, svcPort) + //console.log(deviceIdFromBuff(token), svcName, svcPort) this.subscribe(socket); return } From 3c14ba98dc8c1b36319aad347604b03393d2f392 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 8 Oct 2022 13:13:28 -0400 Subject: [PATCH 009/146] async ondata still occasional errors --- cli/index.ts | 2 +- log.txt | 4146 ++++++++++++++++++++++++++++++++++++-- services/FileTransfer.ts | 6 +- services/Service.ts | 11 +- services/StateMap.ts | 4 + 5 files changed, 4007 insertions(+), 162 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 68d5ae2..b47937d 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -73,7 +73,7 @@ async function main() { services: [ Services.StateMap, - //Services.FileTransfer, + Services.FileTransfer, Services.Directory, ], } diff --git a/log.txt b/log.txt index 577089d..0f9cff9 100644 --- a/log.txt +++ b/log.txt @@ -1,155 +1,3993 @@ -[42] [BEGIN] +[49] [BEGIN] -[14013] Announced myself on 49743 -[39717] [Directory] connection from 192.168.2.84:37177 -[40813] [Directory] connection from 192.168.2.84:40341 -[41346] [Directory] connection from 192.168.2.84:51727 -[42122] [1] [Directory] 192.168.2.84:37177 (p_data) 20 0000000227ad20951ef64d119fd690d285032922 -[42356] [1] [Directory] 192.168.2.84:37177 (buffQueue) 20 0000000227ad20951ef64d119fd690d285032922 -[42376] [1] [Directory] 192.168.2.84:37177 (toparse) 20 0000000227ad20951ef64d119fd690d285032922 -[43466] [2] [Directory] 192.168.2.84:40341 (p_data) 20 00000002bfd411d804794da8aeac8430b69067fe -[43523] [2] [Directory] 192.168.2.84:40341 (buffQueue) 20 00000002bfd411d804794da8aeac8430b69067fe -[43546] [2] [Directory] 192.168.2.84:40341 (toparse) 20 00000002bfd411d804794da8aeac8430b69067fe -[43754] [3] [Directory] 192.168.2.84:51727 (p_data) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[43791] [3] [Directory] 192.168.2.84:51727 (buffQueue) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[43804] [3] [Directory] 192.168.2.84:51727 (toparse) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[45209] [Directory] connection from 192.168.2.83:36397 -[45700] [Directory] connection from 192.168.2.83:59639 -[46168] [Directory] connection from 192.168.2.83:55487 -[46350] [4] [Directory] 192.168.2.83:36397 (p_data) 20 0000000221ffc994f8c84729aef346f9808373ed -[46382] [4] [Directory] 192.168.2.83:36397 (buffQueue) 20 0000000221ffc994f8c84729aef346f9808373ed -[46399] [4] [Directory] 192.168.2.83:36397 (toparse) 20 0000000221ffc994f8c84729aef346f9808373ed -[46589] [5] [Directory] 192.168.2.83:59639 (p_data) 20 000000024be141125ead4848a07db37ca8a7220e -[46608] [5] [Directory] 192.168.2.83:59639 (buffQueue) 20 000000024be141125ead4848a07db37ca8a7220e -[46618] [5] [Directory] 192.168.2.83:59639 (toparse) 20 000000024be141125ead4848a07db37ca8a7220e -[46791] [6] [Directory] 192.168.2.83:55487 (p_data) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[46810] [6] [Directory] 192.168.2.83:55487 (buffQueue) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[46823] [6] [Directory] 192.168.2.83:55487 (toparse) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[88121] [Directory] connection from 192.168.2.99:49246 -[88380] [7] [Directory] 192.168.2.99:49246 (p_data) 20 000000020000000000000000800000059501ab6f -[88501] [7] [Directory] 192.168.2.99:49246 (buffQueue) 20 000000020000000000000000800000059501ab6f -[88515] [7] [Directory] 192.168.2.99:49246 (toparse) 20 000000020000000000000000800000059501ab6f -[301149] [Directory] sent ServiceAnnouncement to 192.168.2.84:37177 -[303066] [Directory] sent ServiceAnnouncement to 192.168.2.84:40341 -[304796] [Directory] sent ServiceAnnouncement to 192.168.2.84:51727 -[306707] [Directory] sent ServiceAnnouncement to 192.168.2.83:36397 -[309641] [Directory] sent ServiceAnnouncement to 192.168.2.83:59639 -[310954] [Directory] sent ServiceAnnouncement to 192.168.2.83:55487 -[320830] [StateMap] connection from 192.168.2.84:48157 -[322357] [StateMap] connection from 192.168.2.83:34687 -[322920] [1] [StateMap] 192.168.2.84:48157 (p_data) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d -[323009] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d -[323266] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070bc1d -[324835] Sending Statemap subscriptions to 192.168.2.84:48157 -[333555] [2] [StateMap] 192.168.2.83:34687 (p_data) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f -[333611] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f -[333650] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070877f -[334622] Sending Statemap subscriptions to 192.168.2.83:34687 -[343076] [Directory] sent ServiceAnnouncement to 192.168.2.99:49246 -[349185] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1462 00000072736d61610000000000000034002f0043... -[349700] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1462 00000072736d61610000000000000034002f0043... -[349931] [4] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[352228] [2] 192.168.2.83:34687 /Client/Preferences/Player => {"string":"1","type":4} -[352370] [5] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[353034] [2] 192.168.2.83:34687 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[353146] [6] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[353764] [2] 192.168.2.83:34687 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[353882] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[354495] [2] 192.168.2.83:34687 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[354612] [8] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[355202] [2] 192.168.2.83:34687 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[355284] [9] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[355869] [2] 192.168.2.83:34687 /Engine/Deck1/Play => {"state":false,"type":1} -[355945] [10] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[356522] [2] 192.168.2.83:34687 /Engine/Deck1/PlayState => {"state":false,"type":1} -[356607] [11] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[357181] [2] 192.168.2.83:34687 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[357330] [12] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[357919] [2] 192.168.2.83:34687 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[358261] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 3668 00000072736d61610000000000000034002f0043... -[358315] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 3668 00000072736d61610000000000000034002f0043... -[358390] [14] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d -[359120] [12] 192.168.2.84:48157 /Client/Preferences/Player => {"string":"2","type":4} -[359223] [15] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[359779] [12] 192.168.2.84:48157 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[359853] [16] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[360355] [12] 192.168.2.84:48157 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[360422] [17] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[360910] [12] 192.168.2.84:48157 /Engine/Master/MasterTempo => {"type":0,"value":122} -[360977] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[361476] [12] 192.168.2.84:48157 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[361539] [19] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[362049] [12] 192.168.2.84:48157 /Engine/Deck1/Play => {"state":false,"type":1} -[362119] [20] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[362649] [12] 192.168.2.84:48157 /Engine/Deck1/PlayState => {"state":false,"type":1} -[362749] [21] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 136 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d00650000003c007b00220073007400720069006e00670022003a00220062006c0061006b0074006f006e00650022002c002200740079007000650022003a0038007d -[363282] [12] 192.168.2.84:48157 /Engine/Deck1/Track/ArtistName => {"string":"blaktone","type":8} -[363420] [22] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 388 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[363951] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} -[364029] [23] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[364536] [12] 192.168.2.84:48157 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[364615] [24] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 164 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005c007b00220073007400720069006e00670022003a002200450078004d0061006300680069006e006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[365135] [12] 192.168.2.84:48157 /Engine/Deck1/Track/SongName => {"string":"ExMachine (Original Mix)","type":8} -[365203] [25] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[365706] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[365840] [26] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 374 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d00650000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[366340] [12] 192.168.2.84:48157 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} -[366409] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[366904] [12] 192.168.2.84:48157 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} -[366994] [28] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[367505] [12] 192.168.2.84:48157 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[367568] [29] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[368078] [12] 192.168.2.84:48157 /Engine/Deck2/Play => {"state":false,"type":1} -[368147] [30] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[368647] [12] 192.168.2.84:48157 /Engine/Deck2/PlayState => {"state":false,"type":1} -[368720] [31] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[369446] [12] 192.168.2.84:48157 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[369556] [32] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[370111] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[370184] [33] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[370683] [12] 192.168.2.84:48157 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[370751] [34] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[371233] [12] 192.168.2.84:48157 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[371299] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[371765] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[371826] [36] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[372287] [12] 192.168.2.84:48157 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[372359] [37] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[372817] [12] 192.168.2.84:48157 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[372886] [38] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[373351] [12] 192.168.2.84:48157 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[374620] [StateMap] connection from 192.168.2.99:49247 -[374887] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 2166 0000007a736d6161000000000000003c002f0045... -[374940] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 2166 0000007a736d6161000000000000003c002f0045... -[375002] [40] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[375575] [38] 192.168.2.83:34687 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[375654] [41] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[376111] [38] 192.168.2.83:34687 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[376174] [42] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[376734] [38] 192.168.2.83:34687 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[376836] [43] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[377312] [38] 192.168.2.83:34687 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[377371] [44] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[377773] [38] 192.168.2.83:34687 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[377829] [45] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[378219] [38] 192.168.2.83:34687 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[378269] [46] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[378662] [38] 192.168.2.83:34687 /Engine/Deck2/Play => {"state":false,"type":1} -[378716] [47] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[379117] [38] 192.168.2.83:34687 /Engine/Deck2/PlayState => {"state":false,"type":1} -[379192] [48] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[379589] [38] 192.168.2.83:34687 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[379643] [49] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[380039] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[380094] [50] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[380554] [38] 192.168.2.83:34687 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[380634] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[381157] [38] 192.168.2.83:34687 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[381222] [52] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[381675] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[381737] [53] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[382173] [38] 192.168.2.83:34687 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[382238] [54] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[382653] [38] 192.168.2.83:34687 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[382711] [55] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[383118] [38] 192.168.2.83:34687 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[13850] Announced myself on 51439 +[36837] [Directory] connection from 192.168.2.84:49711 +[38061] [Directory] connection from 192.168.2.84:44231 +[38633] [Directory] connection from 192.168.2.84:36965 +[39159] [Directory] connection from 192.168.2.83:49707 +[40078] [1] [Directory] 192.168.2.84:49711 (p_data) 20 0000000227ad20951ef64d119fd690d285032922 +[40330] [1] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 0 +[40605] [1] [Directory] 192.168.2.84:49711 (buffQueue) 20 0000000227ad20951ef64d119fd690d285032922 +[40625] [1] [Directory] 192.168.2.84:49711 (toparse) 20 0000000227ad20951ef64d119fd690d285032922 +[41713] [2] [Directory] 192.168.2.84:44231 (p_data) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[41775] [2] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 0 +[41964] [2] [Directory] 192.168.2.84:44231 (buffQueue) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[41981] [2] [Directory] 192.168.2.84:44231 (toparse) 20 000000021e6c417ab6744c87b4aafb7ad2298976 +[42137] [3] [Directory] 192.168.2.84:36965 (p_data) 20 00000002bfd411d804794da8aeac8430b69067fe +[42160] [3] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 0 +[42313] [3] [Directory] 192.168.2.84:36965 (buffQueue) 20 00000002bfd411d804794da8aeac8430b69067fe +[42329] [3] [Directory] 192.168.2.84:36965 (toparse) 20 00000002bfd411d804794da8aeac8430b69067fe +[42470] [4] [Directory] 192.168.2.83:49707 (p_data) 20 0000000221ffc994f8c84729aef346f9808373ed +[42492] [4] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 0 +[42636] [4] [Directory] 192.168.2.83:49707 (buffQueue) 20 0000000221ffc994f8c84729aef346f9808373ed +[42650] [4] [Directory] 192.168.2.83:49707 (toparse) 20 0000000221ffc994f8c84729aef346f9808373ed +[43981] [Directory] connection from 192.168.2.83:41865 +[44495] [Directory] connection from 192.168.2.83:41047 +[44748] [5] [Directory] 192.168.2.83:41865 (p_data) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[44775] [5] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 0 +[44915] [5] [Directory] 192.168.2.83:41865 (buffQueue) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[44928] [5] [Directory] 192.168.2.83:41865 (toparse) 20 00000002a2ca1e3196254619a81fe871ad442c5d +[45067] [6] [Directory] 192.168.2.83:41047 (p_data) 20 000000024be141125ead4848a07db37ca8a7220e +[45088] [6] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 0 +[45216] [6] [Directory] 192.168.2.83:41047 (buffQueue) 20 000000024be141125ead4848a07db37ca8a7220e +[45226] [6] [Directory] 192.168.2.83:41047 (toparse) 20 000000024be141125ead4848a07db37ca8a7220e +[109491] [Directory] connection from 192.168.2.99:49298 +[109755] [7] [Directory] 192.168.2.99:49298 (p_data) 20 000000020000000000000000800000059501ab6f +[109867] [7] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 0 +[110036] [7] [Directory] 192.168.2.99:49298 (buffQueue) 20 000000020000000000000000800000059501ab6f +[110048] [7] [Directory] 192.168.2.99:49298 (toparse) 20 000000020000000000000000800000059501ab6f +[294045] [Directory] sent ServiceAnnouncement to 192.168.2.84:49711 +[295070] [Directory] sent ServiceAnnouncement to 192.168.2.84:44231 +[295885] [Directory] sent ServiceAnnouncement to 192.168.2.84:36965 +[296579] [Directory] sent ServiceAnnouncement to 192.168.2.83:49707 +[297729] [Directory] sent ServiceAnnouncement to 192.168.2.83:41865 +[298563] [Directory] sent ServiceAnnouncement to 192.168.2.83:41047 +[311123] [FileTransfer] connection from 192.168.2.84:45931 +[312553] [1] [FileTransfer] 192.168.2.84:45931 (p_data) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[312730] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[312955] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[313105] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[313425] [0] [FileTransfer] undefined (preSvc) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[313444] [0] [FileTransfer] undefined (postSvc) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[313458] [0] [FileTransfer] undefined (ff-pre) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff +[315096] [0] fastForwarded 58 bytes +[315144] [0] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff +[316158] [FileTransfer] connection from 192.168.2.84:38535 +[316904] [FileTransfer] connection from 192.168.2.84:51929 +[317608] [FileTransfer] connection from 192.168.2.83:37339 +[318274] [FileTransfer] connection from 192.168.2.83:32915 +[318902] [FileTransfer] connection from 192.168.2.83:56419 +[319594] [StateMap] connection from 192.168.2.84:60179 +[320366] [StateMap] connection from 192.168.2.83:33277 +[320782] [2] [FileTransfer] 192.168.2.84:38535 (p_data) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[320835] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[321066] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[321094] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[321113] [1] [FileTransfer] undefined (preSvc) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[321127] [1] [FileTransfer] undefined (postSvc) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[321141] [1] [FileTransfer] undefined (ff-pre) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff +[322103] [1] fastForwarded 58 bytes +[322148] [1] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff +[322269] [3] [FileTransfer] 192.168.2.84:51929 (p_data) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322301] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 52 0000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322511] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322538] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322553] [2] [FileTransfer] undefined (preSvc) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322565] [2] [FileTransfer] undefined (postSvc) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[322579] [2] [FileTransfer] undefined (ff-pre) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 +[323192] [2] fastForwarded 58 bytes +[323219] [2] [FileTransfer] undefined (mag-post) 14 0000000000000008000000020032 +[324062] requesting sources from +[324550] [4] [FileTransfer] 192.168.2.83:37339 (p_data) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324589] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 50 0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324764] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324786] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324802] [3] [FileTransfer] undefined (preSvc) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324820] [3] [FileTransfer] undefined (postSvc) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[324844] [3] [FileTransfer] undefined (ff-pre) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff +[325458] [3] fastForwarded 58 bytes +[325483] [3] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff +[325559] [5] [FileTransfer] 192.168.2.83:32915 (p_data) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325584] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325753] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325776] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325789] [4] [FileTransfer] undefined (preSvc) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325802] [4] [FileTransfer] undefined (postSvc) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[325813] [4] [FileTransfer] undefined (ff-pre) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff +[326423] [4] fastForwarded 58 bytes +[326451] [4] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff +[326525] [6] [FileTransfer] 192.168.2.83:56419 (p_data) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326550] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 72 0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326715] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326738] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326751] [5] [FileTransfer] undefined (preSvc) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326762] [5] [FileTransfer] undefined (postSvc) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[326772] [5] [FileTransfer] undefined (ff-pre) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 +[327372] [5] fastForwarded 58 bytes +[327395] [5] [FileTransfer] undefined (mag-post) 34 000000000000000800000002003100000010666c747800000076000007d200000000 +[327792] requesting sources from +[328131] [1] [StateMap] 192.168.2.84:60179 (p_data) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 +[328165] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 22 0000001000530074006100740065004d00610070eb13 +[328347] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 +[328372] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 +[328976] Sending Statemap subscriptions to 192.168.2.84:60179 +[332755] [2] [StateMap] 192.168.2.83:33277 (p_data) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd +[332814] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 22 0000001000530074006100740065004d0061007081fd +[333002] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd +[333030] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd +[333616] Sending Statemap subscriptions to 192.168.2.83:33277 +[338176] [7] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 72 00000010666c74780000009c000007d20000000000000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff +[338244] [7] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff +[338424] [7] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 72 00000010666c74780000009c000007d20000000000000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff +[338457] [6] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[338467] [6] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[338477] [6] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[338514] [6] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[338549] [8] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[338565] [6] [FileTransfer] undefined (preSvc) 19 666c7478000000000000000300000000010101 +[338577] [6] [FileTransfer] undefined (postSvc) 19 666c7478000000000000000300000000010101 +[338586] [6] [FileTransfer] undefined (ff-pre) 19 666c7478000000000000000300000000010101 +[338619] [6] [FileTransfer] undefined (mag-post) 15 000000000000000300000000010101 +[338728] [9] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 19 666c7478000000000000000300000000010101 +[338744] [6] [FileTransfer] undefined (preSvc) 25 666c7478000000000000000201000000007fffffffffffffff +[338754] [6] [FileTransfer] undefined (postSvc) 25 666c7478000000000000000201000000007fffffffffffffff +[338764] [6] [FileTransfer] undefined (ff-pre) 25 666c7478000000000000000201000000007fffffffffffffff +[338791] [6] [FileTransfer] undefined (mag-post) 21 000000000000000201000000007fffffffffffffff +[338808] [10] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 25 666c7478000000000000000201000000007fffffffffffffff +[338847] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff +[338869] [11] [FileTransfer] 666c7478-0000-0000-0000-000300000001 (isSub) 64 0000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff +[339021] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff +[339040] [10] [FileTransfer] undefined (preSvc) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[339051] [10] [FileTransfer] undefined (postSvc) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[339067] [10] [FileTransfer] undefined (ff-pre) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[339095] [10] [FileTransfer] undefined (mag-post) 47 0000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[340462] getting sources for +[341082] [12] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[341106] [10] [FileTransfer] undefined (preSvc) 25 666c7478000000000000000201000000007fffffffffffffff +[341119] [10] [FileTransfer] undefined (postSvc) 25 666c7478000000000000000201000000007fffffffffffffff +[341129] [10] [FileTransfer] undefined (ff-pre) 25 666c7478000000000000000201000000007fffffffffffffff +[341162] [10] [FileTransfer] undefined (mag-post) 21 000000000000000201000000007fffffffffffffff +[341178] [13] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff +[342829] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 422 00000072736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[343191] [3] [StateMap] 736d6161-0000-0000-0000-0034002f0043 (isSub) 402 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[343389] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 422 00000072736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[343488] [4] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[343974] [2] 192.168.2.83:33277 /Client/Preferences/Player => {"string":"1","type":4} +[344042] [5] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[344373] [2] 192.168.2.83:33277 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[344435] [6] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[344741] [2] 192.168.2.83:33277 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[346889] [7] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1548 00000072736d61610000000000000034002f0043... +[347033] [7] [StateMap] 736d6161-0000-0000-0000-0034002f0043 (isSub) 1528 006c00690065006e0074002f0050007200650066... +[347209] [7] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1548 00000072736d61610000000000000034002f0043... +[347274] [8] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d +[347764] [6] 192.168.2.84:60179 /Client/Preferences/Player => {"string":"2","type":4} +[347847] [9] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[348175] [6] 192.168.2.84:60179 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[348232] [10] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[348540] [6] 192.168.2.84:60179 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[348600] [11] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[348898] [6] 192.168.2.84:60179 /Engine/Master/MasterTempo => {"type":0,"value":122} +[348949] [12] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[349250] [6] 192.168.2.84:60179 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[349293] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[349589] [6] 192.168.2.84:60179 /Engine/Deck1/Play => {"state":false,"type":1} +[349637] [14] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[349923] [6] 192.168.2.84:60179 /Engine/Deck1/PlayState => {"state":false,"type":1} +[349972] [15] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 136 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d00650000003c007b00220073007400720069006e00670022003a00220062006c0061006b0074006f006e00650022002c002200740079007000650022003a0038007d +[350257] [6] 192.168.2.84:60179 /Engine/Deck1/Track/ArtistName => {"string":"blaktone","type":8} +[350341] [16] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 388 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[350672] [6] 192.168.2.84:60179 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} +[350716] [17] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[350990] [6] 192.168.2.84:60179 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[351172] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1448 000000a4736d61610000000000000038002f0045... +[351209] [18] [StateMap] 736d6161-0000-0000-0000-0038002f0045 (isSub) 1428 006e00670069006e0065002f004400650063006b... +[351371] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1448 000000a4736d61610000000000000038002f0045... +[351425] [19] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 164 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005c007b00220073007400720069006e00670022003a002200450078004d0061006300680069006e006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[351826] [17] 192.168.2.84:60179 /Engine/Deck1/Track/SongName => {"string":"ExMachine (Original Mix)","type":8} +[351879] [20] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[352183] [17] 192.168.2.84:60179 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[352270] [21] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 374 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d00650000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[352556] [17] 192.168.2.84:60179 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} +[352598] [22] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[352874] [17] 192.168.2.84:60179 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} +[352918] [23] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[353206] [17] 192.168.2.84:60179 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[353247] [24] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[353519] [17] 192.168.2.84:60179 /Engine/Deck2/Play => {"state":false,"type":1} +[353566] [25] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[353834] [17] 192.168.2.84:60179 /Engine/Deck2/PlayState => {"state":false,"type":1} +[353878] [26] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[354157] [17] 192.168.2.84:60179 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[354203] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[354473] [17] 192.168.2.84:60179 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[354495] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toqueue) 62 0000007c736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e +[354624] [14] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354653] [14] [FileTransfer] 666c7478-0000-0000-0000-000101000000 (isSub) 49 66448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354802] [14] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354821] [13] [FileTransfer] undefined (preSvc) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354831] [13] [FileTransfer] undefined (postSvc) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354843] [13] [FileTransfer] undefined (ff-pre) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354873] [13] [FileTransfer] undefined (mag-post) 61 00000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[354901] [15] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 +[357481] [object Object] +[357662] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1040 0000008e736d61610000000000000034002f0045... +[357885] [28] [StateMap] 736d6161-0000-0000-0000-0034002f0045 (isSub) 1020 006e00670069006e0065002f004d006100730074... +[358050] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1040 0000008e736d61610000000000000034002f0045... +[358116] [29] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[358526] [27] 192.168.2.83:33277 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[358580] [30] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[358874] [27] 192.168.2.83:33277 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[358913] [31] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[359203] [27] 192.168.2.83:33277 /Engine/Deck1/Play => {"state":false,"type":1} +[359246] [32] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[359518] [27] 192.168.2.83:33277 /Engine/Deck1/PlayState => {"state":false,"type":1} +[359565] [33] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[359823] [27] 192.168.2.83:33277 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[359901] [34] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[360155] [27] 192.168.2.83:33277 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[360795] [Directory] sent ServiceAnnouncement to 192.168.2.99:49298 +[360896] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 672 0067004c006f006100640065006400000030007b... +[360930] [35] [StateMap] 006f0061-0064-0065-0064-00000030007b (isSub) 652 0022007300740061007400650022003a00660061... +[361095] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 672 0067004c006f006100640065006400000030007b... +[361112] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toqueue) 672 0067004c006f006100640065006400000030007b... +[361986] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1928 0000007a736d6161000000000000003c002f0045... +[362020] [36] [StateMap] 736d6161-0000-0000-0000-003c002f0045 (isSub) 1908 006e00670069006e0065002f004400650063006b... +[362183] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1928 0000007a736d6161000000000000003c002f0045... +[362232] [37] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[362632] [35] 192.168.2.83:33277 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[362681] [38] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[362950] [35] 192.168.2.83:33277 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[362992] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[363251] [35] 192.168.2.83:33277 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[363319] [40] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[363571] [35] 192.168.2.83:33277 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[363611] [41] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[363856] [35] 192.168.2.83:33277 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[363893] [42] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[364140] [35] 192.168.2.83:33277 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[364174] [43] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[364413] [35] 192.168.2.83:33277 /Engine/Deck2/Play => {"state":false,"type":1} +[364451] [44] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[364697] [35] 192.168.2.83:33277 /Engine/Deck2/PlayState => {"state":false,"type":1} +[364733] [45] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[364968] [35] 192.168.2.83:33277 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[365005] [46] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[365251] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[365290] [47] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[365549] [35] 192.168.2.83:33277 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[365588] [48] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[365834] [35] 192.168.2.83:33277 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[365870] [49] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[366111] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[366148] [50] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[366396] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[367927] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 238 0000006c736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[368065] [51] [StateMap] 736d6161-0000-0000-0000-0030002f0045 (isSub) 218 006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[368217] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 238 0000006c736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[368264] [52] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[368936] [50] 192.168.2.83:33277 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[368984] [53] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[369901] [50] 192.168.2.83:33277 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[376256] [StateMap] connection from 192.168.2.99:49299 +[376452] [54] [StateMap] 192.168.2.99:49299 (p_data) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b +[376749] [54] [StateMap] 00000000-0000-0000-8000-00059501ab6f (isSub) 22 0000001000530074006100740065004d00610070c35b +[376895] [54] [StateMap] 192.168.2.99:49299 (buffQueue) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b +[378673] StateMap 54 192.168.2.99:49299 TypeError: Cannot read property 'buffer' of null +[467861] [55] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[468068] [55] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[468277] [55] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[468457] [56] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[525927] [57] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[526124] [57] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[526356] [57] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[526434] [58] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[567988] [59] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[568233] [59] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[568527] [59] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[568596] [60] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[626157] [61] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[626490] [61] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[626857] [61] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[626953] [62] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[666116] [63] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[666422] [63] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[666765] [63] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[666848] [64] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[728391] [65] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[729138] [65] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[729795] [65] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[729953] [66] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[766704] [67] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[767729] [67] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[768773] [67] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[769008] [68] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[828549] [69] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[829517] [69] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[830465] [69] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[830684] [70] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[866460] [71] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[866933] [71] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[867488] [71] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[867623] [72] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[926752] [73] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[927354] [73] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[927936] [73] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[928124] [74] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[967218] [75] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[968217] [75] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[969309] [75] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[969591] [76] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1031105] [77] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1031424] [77] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1031820] [77] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1031944] [78] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1066819] [79] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[1067382] [79] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[1067989] [79] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[1068184] [80] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[1226704] [8] [Directory] 192.168.2.99:49298 (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 +[1226889] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000045c7ab0700000000 +[1227064] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 +[1227075] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 +[2340547] [16] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[2341451] [16] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[2342350] [16] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[2342480] [15] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[2342554] [15] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[2342622] [15] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[2342827] [15] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[2342945] [17] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[2343176] [18] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[2343291] [18] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[2344132] [18] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[2344238] [17] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[2344315] [17] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[2344390] [17] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[2344578] [17] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[2344691] [19] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[2750355] [9] [Directory] 192.168.2.83:41047 (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 +[2751173] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb0fa4f5bc6 +[2751975] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 +[2752057] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 +[2752903] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 +[2752982] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000df01ac0700000000 +[2753463] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 +[2753505] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 +[3771509] [11] [Directory] 192.168.2.83:41865 (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 +[3771854] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb113167a68 +[3772183] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 +[3772212] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 +[3772642] [12] [Directory] 192.168.2.83:49707 (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 +[3772685] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb113343f51 +[3772935] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 +[3772957] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 +[3785260] [13] [Directory] 192.168.2.84:49711 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c +[3785507] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb2264d066c +[3785800] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c +[3785823] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c +[3786192] [14] [Directory] 192.168.2.84:36965 (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b +[3786235] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb22639eb4b +[3786496] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b +[3786516] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b +[3786821] [15] [Directory] 192.168.2.84:44231 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 +[3786864] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb248418532 +[3787134] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 +[3787155] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 +[4230289] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 +[4230790] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000783cac0700000000 +[4231351] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 +[4231403] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 +[5573799] [81] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1144 00000058736d6161000007d200000048002f0045... +[5574934] [81] [StateMap] 736d6161-0000-07d2-0000-0048002f0045 (isSub) 1124 006e00670069006e0065002f004400650063006b... +[5575925] [81] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1144 00000058736d6161000007d200000048002f0045... +[5577381] [82] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5577540] [83] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5577665] [84] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5577793] [85] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5577938] [86] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5578143] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5578304] [88] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5578435] [89] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5578562] [90] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5578718] [91] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5578834] [92] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff +[5578958] [93] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff +[5579056] [94] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff +[5579150] [95] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff +[5579680] [96] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 874 00000058736d6161000007d200000048002f0045... +[5579794] [96] [StateMap] 736d6161-0000-07d2-0000-0048002f0045 (isSub) 854 006e00670069006e0065002f004400650063006b... +[5580902] [96] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 874 00000058736d6161000007d200000048002f0045... +[5581428] [97] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5581608] [98] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5581695] [99] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5581789] [100] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5581901] [101] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5582033] [102] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5582115] [103] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5582186] [104] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5582298] [105] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5582439] [106] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5584563] [107] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 2686 00000042736d6161000007d200000032002f0045... +[5585608] [107] [StateMap] 736d6161-0000-07d2-0000-0032002f0045 (isSub) 2666 006e00670069006e0065002f004400650063006b... +[5586174] [107] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 2686 00000042736d6161000007d200000032002f0045... +[5586281] [108] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff +[5586357] [109] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff +[5586430] [110] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff +[5586497] [111] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff +[5586566] [112] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff +[5586646] [113] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5586715] [114] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5586788] [115] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5586857] [116] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5586934] [117] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5587003] [118] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5587065] [119] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5587138] [120] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5587190] [121] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5587250] [122] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5587304] [123] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff +[5587354] [124] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff +[5587412] [125] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff +[5587463] [126] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff +[5587514] [127] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff +[5587581] [128] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5587637] [129] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5587694] [130] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5587749] [131] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5587810] [132] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5587870] [133] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5587931] [134] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5587988] [135] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5588039] [136] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5588108] [137] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5588158] [138] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff +[5588212] [139] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff +[5588276] [140] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff +[5588338] [141] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff +[5588483] [142] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 3256 0000003c736d6161000007d20000002c002f0045... +[5588559] [142] [StateMap] 736d6161-0000-07d2-0000-002c002f0045 (isSub) 3236 006e00670069006e0065002f004400650063006b... +[5588928] [142] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 3256 0000003c736d6161000007d20000002c002f0045... +[5589004] [143] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff +[5589062] [144] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5589120] [145] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5589189] [146] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5589242] [147] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5589313] [148] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5589376] [149] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5589438] [150] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5589493] [151] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5589550] [152] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5589607] [153] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5589667] [154] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff +[5589718] [155] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff +[5589773] [156] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff +[5589835] [157] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff +[5589885] [158] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff +[5589943] [159] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5590003] [160] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5590064] [161] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5591644] [162] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5591717] [163] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5591780] [164] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5591839] [165] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5591893] [166] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5591950] [167] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5592007] [168] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5592067] [169] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff +[5592121] [170] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff +[5592171] [171] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff +[5592224] [172] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff +[5592274] [173] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff +[5592338] [174] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5592418] [175] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5592475] [176] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5592531] [177] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5592611] [178] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5592689] [179] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5592749] [180] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5592806] [181] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5592834] [181] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 66 00000046736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f +[5593144] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 792 0063006bffffffff00000056736d6161000007d2... +[5593216] [182] [StateMap] ffffffff-0000-0056-736d-6161000007d2 (isSub) 772 00000046002f0045006e00670069006e0065002f... +[5593614] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 792 0063006bffffffff00000056736d6161000007d2... +[5593661] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 792 0063006bffffffff00000056736d6161000007d2... +[5593748] [183] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1516 0000003c736d6161000007d20000002c002f0045... +[5593807] [183] [StateMap] 736d6161-0000-07d2-0000-002c002f0045 (isSub) 1496 006e00670069006e0065002f004400650063006b... +[5594167] [183] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1516 0000003c736d6161000007d20000002c002f0045... +[5594239] [184] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff +[5594314] [185] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5594371] [186] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5594445] [187] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5594502] [188] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5594564] [189] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5594635] [190] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5594690] [191] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5594755] [192] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5594808] [193] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5594885] [194] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5594955] [195] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff +[5595010] [196] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff +[5595087] [197] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff +[5595138] [198] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff +[5595200] [199] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff +[5595248] [200] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff +[5595301] [201] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff +[5595375] [202] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff +[5599276] [203] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 116 00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5599955] [203] [StateMap] 736d6161-0000-07d2-0000-0060002f0043 (isSub) 96 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5600312] [203] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 116 00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5600763] [204] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[5727343] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 +[5727913] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001177ac0700000000 +[5728775] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 +[5728844] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 +[6188352] [205] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6189465] [205] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6190679] [205] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6190912] [206] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6229759] [207] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6230685] [207] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6231853] [207] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6232032] [208] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6290570] [20] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[6291758] [20] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[6292947] [20] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[6293092] [19] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[6293171] [19] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[6293278] [19] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[6293571] [19] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[6293684] [21] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[6293935] [209] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[6294036] [209] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[6294717] [209] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[6294851] [210] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[6295062] [22] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[6295150] [22] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[6295742] [22] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[6295816] [21] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[6295869] [21] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[6295957] [21] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[6296062] [21] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[6296110] [23] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[6328286] [211] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[6329126] [211] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[6330000] [211] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[6330254] [212] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[6388410] [213] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[6389493] [213] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[6390434] [213] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[6390659] [214] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[6430203] [215] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[6430922] [215] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[6431877] [215] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[6432137] [216] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[6488609] [217] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[6489622] [217] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[6490833] [217] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[6491080] [218] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[6528658] [219] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[6529468] [219] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[6530667] [219] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[6530823] [220] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[6588368] [221] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[6588820] [221] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[6589251] [221] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[6589332] [222] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[6628260] [223] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[6628658] [223] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[6629116] [223] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[6629201] [224] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[6689709] [225] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6690155] [225] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6690625] [225] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6690713] [226] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6728438] [227] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6728893] [227] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6729448] [227] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6729545] [228] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6788386] [229] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[6788660] [229] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[6788915] [229] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[6788961] [230] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[7229452] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 +[7230532] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a9b1ac0700000000 +[7231673] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 +[7231771] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 +[7681887] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 +[7682973] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb22447a577 +[7684108] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 +[7684226] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 +[8792230] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 +[8792681] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb23d1ec732 +[8793181] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 +[8793229] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 +[8793862] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f +[8793919] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb23d3cce2f +[8794314] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f +[8794347] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f +[8794801] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 +[8794872] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000041ecac0700000000 +[8795213] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 +[8795240] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 +[8795642] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 +[8795690] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb3503dfbb9 +[8796013] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 +[8796039] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 +[8796427] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 +[8796548] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb350526ca1 +[8797145] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 +[8797201] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 +[8797741] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 +[8797885] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb372467856 +[8798409] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 +[8798445] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 +[10228348] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 +[10229418] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000db26ad0700000000 +[10230376] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 +[10230466] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 +[10249933] [24] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[10250614] [24] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[10251472] [24] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[10251629] [23] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[10251713] [23] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[10251779] [23] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[10252106] [23] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[10252204] [25] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[10288474] [26] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[10289492] [26] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[10290692] [26] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[10290843] [25] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[10290945] [25] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[10291046] [25] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[10291295] [25] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[10291469] [27] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[11761237] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 +[11762568] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007361ad0700000000 +[11763160] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 +[11763249] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 +[11889595] [231] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11890029] [231] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11890479] [231] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11890615] [232] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11952028] [233] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11952989] [233] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11953656] [233] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11953838] [234] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11990198] [235] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[11991325] [235] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[11992378] [235] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[11992704] [236] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[12052087] [237] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[12052739] [237] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[12053179] [237] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[12053356] [238] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[12090278] [239] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[12091296] [239] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[12092310] [239] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[12092579] [240] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[12152441] [241] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[12153671] [241] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[12154728] [241] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[12154981] [242] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[12190230] [243] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[12191194] [243] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[12192259] [243] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[12192526] [244] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[12250434] [245] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[12251583] [245] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[12252618] [245] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[12252884] [246] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[12290457] [247] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[12293342] [247] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[12294384] [247] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[12294611] [248] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[12350553] [249] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[12351708] [249] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[12352901] [249] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[12353238] [250] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[12390225] [251] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12391327] [251] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12392413] [251] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12392692] [252] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12452648] [253] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12453798] [253] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12454679] [253] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12454914] [254] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12490402] [255] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[12491229] [255] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[12492194] [255] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[12492456] [256] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[12686478] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 +[12687567] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb34e56fb73 +[12688541] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 +[12688626] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 +[13231154] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 +[13232243] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000b9cad0700000000 +[13233376] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 +[13233488] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 +[13708544] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 +[13709228] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb3672590a4 +[13709954] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 +[13710013] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 +[13711331] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a +[13711450] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb36743459a +[13712008] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a +[13712071] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a +[13785563] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 +[13785909] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb49c444c69 +[13786228] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 +[13786254] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 +[13793560] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 +[13793827] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb47a4201a9 +[13794142] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 +[13794166] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 +[13794524] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 +[13794565] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb47a564cf9 +[13794816] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 +[13794839] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 +[14212365] [28] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[14213179] [28] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[14214059] [28] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[14214177] [27] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[14214255] [27] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[14214328] [27] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[14214539] [27] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[14214630] [29] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[14290138] [30] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[14291067] [30] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[14291667] [30] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[14291735] [29] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[14291776] [29] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[14291821] [29] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[14291974] [29] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[14292024] [31] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[14833195] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 +[14833972] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a3d6ad0700000000 +[14834611] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 +[14834656] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 +[16230702] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 +[16231165] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003c11ae0700000000 +[16231608] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 +[16231643] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 +[17702365] [257] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17702988] [257] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17703467] [257] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17703581] [258] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17703668] [259] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17703806] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d +[17703872] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb47855385d +[17704341] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d +[17704391] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d +[17709450] [260] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[17709784] [260] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[17710313] [260] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[17710556] [261] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[17729694] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 +[17731002] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d74bae0700000000 +[17731489] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 +[17731528] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 +[17749623] [262] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[17750490] [262] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[17751008] [262] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[17751180] [263] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[17809812] [264] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[17810319] [264] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[17810754] [264] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[17810865] [265] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[17876743] [266] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[17877607] [266] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[17878444] [266] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[17878685] [267] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[17912140] [268] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[17913219] [268] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[17913980] [268] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[17914159] [269] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[17949721] [270] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[17950257] [270] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[17950784] [270] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[17950910] [271] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[18010209] [272] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[18011134] [272] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[18011924] [272] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[18012109] [273] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[18051982] [274] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[18052629] [274] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[18053257] [274] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[18053476] [275] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[18112294] [276] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18113035] [276] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18113831] [276] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18114022] [277] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18150610] [278] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18151431] [278] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18152038] [278] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18152218] [279] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18190034] [32] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[18190473] [32] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[18190983] [32] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[18191055] [31] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[18191098] [31] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[18191143] [31] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[18191276] [31] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[18191334] [33] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[18212253] [280] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[18212966] [280] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[18213693] [280] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[18213809] [281] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[18296752] [34] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[18297764] [34] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[18298614] [34] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[18298720] [33] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[18298785] [33] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[18298884] [33] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[18299087] [33] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[18299155] [35] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[18724756] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 +[18725585] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb49129ae89 +[18726366] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 +[18726425] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 +[18727212] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda +[18727344] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb491474dda +[18727934] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda +[18728036] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda +[18786784] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb +[18787259] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb5c64622bb +[18787710] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb +[18787750] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb +[18788402] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 +[18788488] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb5a45b0c61 +[18788861] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 +[18788902] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 +[18789409] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b +[18789483] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb5a44d374b +[18789936] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b +[18789986] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b +[19231852] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 +[19232388] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007286ae0700000000 +[19233148] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 +[19233205] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 +[20772762] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 +[20773756] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000ac1ae0700000000 +[20774862] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 +[20774950] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 +[22186985] [36] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[22188019] [36] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[22188782] [36] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[22188964] [35] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[22189043] [35] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[22189099] [35] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[22189252] [35] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[22189313] [37] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[22234135] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 +[22234936] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a2fbae0700000000 +[22235674] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 +[22235750] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 +[22292614] [38] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[22293423] [38] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[22294174] [38] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[22294263] [37] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[22294337] [37] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[22294388] [37] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[22294575] [37] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[22294658] [39] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[22722098] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 +[22722971] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb5a258fc44 +[22723720] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 +[22723795] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 +[23333366] [282] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23334427] [282] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23335429] [282] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23335632] [283] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23377335] [284] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23378035] [284] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23378902] [284] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23379111] [285] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23415717] [286] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[23416615] [286] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[23417601] [286] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[23417829] [287] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[23477597] [288] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[23478553] [288] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[23479524] [288] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[23479779] [289] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[23517856] [290] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[23518923] [290] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[23519935] [290] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[23520086] [291] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[23575319] [292] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[23575678] [292] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[23576068] [292] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[23576156] [293] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[23615328] [294] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[23615736] [294] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[23616265] [294] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[23616373] [295] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[23675762] [296] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[23676992] [296] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[23677879] [296] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[23678076] [297] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[23682430] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c +[23682856] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb5bb4eba3c +[23683455] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c +[23683526] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c +[23684337] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 +[23684487] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb5bb3baef7 +[23685251] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 +[23685326] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 +[23715504] [298] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[23716000] [298] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[23716624] [298] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[23716762] [299] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[23735593] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 +[23736229] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003a36af0700000000 +[23736943] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 +[23737017] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 +[23775649] [300] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[23776380] [300] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[23777278] [300] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[23777486] [301] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[23785785] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc +[23786350] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb6ce6145cc +[23787140] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc +[23787223] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc +[23788264] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c +[23788406] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb6f053035c +[23789223] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c +[23789291] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c +[23790181] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b +[23790318] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb6ce4eca2b +[23791135] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b +[23791234] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b +[23815901] [302] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23816811] [302] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23817831] [302] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23818086] [303] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23876459] [304] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23877310] [304] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23878143] [304] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23878359] [305] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23917969] [306] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[23918754] [306] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[23919743] [306] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[23920086] [307] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[25237501] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 +[25237916] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d270af0700000000 +[25238339] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 +[25238375] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 +[26184781] [40] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[26185642] [40] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[26186559] [40] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[26186667] [39] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[26186724] [39] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[26186781] [39] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[26186939] [39] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[26187020] [41] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[26288619] [42] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[26289645] [42] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[26290719] [42] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[26290863] [41] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[26290958] [41] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[26291073] [41] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[26291343] [41] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[26291456] [43] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[26789807] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 +[26790904] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006aabaf0700000000 +[26791858] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 +[26791940] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 +[27735606] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 +[27736292] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb6cc664be9 +[27736925] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 +[27736972] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 +[28240570] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 +[28241726] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000003e6af0700000000 +[28242721] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 +[28242804] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 +[28759625] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 +[28760534] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb6e53ccbe0 +[28761512] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 +[28761593] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 +[28762732] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 +[28762879] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb6e55ab8a9 +[28763674] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 +[28763754] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 +[28788023] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b +[28788832] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb7f86b829b +[28789706] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b +[28789778] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b +[28790842] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b +[28790981] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb7f857374b +[28791764] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b +[28791835] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b +[28792716] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 +[28792852] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb81a5e5ab6 +[28793632] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 +[28793711] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 +[29067466] [308] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29067894] [308] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29068314] [308] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29068413] [309] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29074223] [310] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29074497] [310] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29074870] [310] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29074940] [311] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29121050] [312] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[29121546] [312] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[29121998] [312] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[29122103] [313] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[29179518] [314] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[29180586] [314] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[29181551] [314] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[29181767] [315] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[29221424] [316] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[29222406] [316] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[29223119] [316] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[29223252] [317] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[29279092] [318] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[29279652] [318] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[29280143] [318] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[29280245] [319] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[29319675] [320] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[29320813] [320] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[29321969] [320] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[29322197] [321] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[29381280] [322] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[29382180] [322] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[29383006] [322] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[29383156] [323] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[29424070] [324] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[29424887] [324] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[29425703] [324] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[29425904] [325] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[29481661] [326] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[29482468] [326] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[29483288] [326] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[29483472] [327] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[29521812] [328] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29523454] [328] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29524247] [328] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29524422] [329] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29580776] [330] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29582681] [330] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29583762] [330] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29584721] [331] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29622082] [332] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[29623287] [332] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[29624852] [332] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[29625074] [333] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[29740008] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 +[29740850] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009d20b00700000000 +[29741544] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 +[29741606] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 +[30182588] [44] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[30183442] [44] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[30184268] [44] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[30184361] [43] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[30184428] [43] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[30184484] [43] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[30184693] [43] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[30184772] [45] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[30288643] [46] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[30289494] [46] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[30290283] [46] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[30290418] [45] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[30290500] [45] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[30290582] [45] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[30290885] [45] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[30290982] [47] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[31239789] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 +[31240938] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000365bb00700000000 +[31242079] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 +[31242177] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 +[32755255] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac +[32756107] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb7f673d5ac +[32757025] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac +[32757112] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac +[32758349] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 +[32758499] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ce95b00700000000 +[32759302] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 +[32759400] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 +[33779607] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 +[33780427] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb80f5a0b97 +[33781309] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 +[33781390] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 +[33782613] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a +[33782776] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb80f3ea15a +[33783655] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a +[33783739] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a +[33789934] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 +[33790582] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb9445dc5b8 +[33791587] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 +[33791665] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 +[33792702] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 +[33792844] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb9226d33c9 +[33793646] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 +[33793763] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 +[33794651] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 +[33794780] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb9225eb4f2 +[33795517] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 +[33795596] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 +[34191164] [48] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[34191985] [48] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[34192717] [48] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[34192804] [47] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[34192860] [47] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[34192909] [47] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[34193095] [47] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[34193157] [49] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[34240601] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 +[34241418] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000068d0b00700000000 +[34242091] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 +[34242146] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 +[34296279] [50] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[34296935] [50] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[34297536] [50] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[34297617] [49] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[34297669] [49] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[34297718] [49] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[34297867] [49] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[34297923] [51] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[34803807] [334] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34804617] [334] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34805311] [334] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34805455] [335] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34805572] [336] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34841514] [337] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[34842092] [337] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[34842656] [337] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[34842781] [338] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[34880724] [339] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[34881082] [339] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[34881420] [339] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[34881486] [340] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[34942959] [341] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[34943417] [341] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[34943851] [341] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[34943943] [342] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[34981002] [343] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[34981653] [343] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[34982207] [343] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[34982329] [344] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[35039229] [345] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[35039980] [345] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[35040791] [345] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[35040944] [346] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[35083408] [347] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[35084158] [347] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[35084706] [347] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[35084821] [348] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[35141293] [349] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[35141965] [349] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[35142565] [349] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[35142701] [350] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[35181579] [351] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[35182315] [351] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[35183162] [351] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[35183318] [352] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[35241334] [353] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35242297] [353] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35243168] [353] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35243434] [354] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35282419] [355] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35283344] [355] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35284594] [355] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35284818] [356] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35341442] [357] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[35342062] [357] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[35342718] [357] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[35342870] [358] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[35740591] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 +[35741689] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000020bb10700000000 +[35742700] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 +[35742803] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 +[37243365] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 +[37244001] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009c45b10700000000 +[37244543] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 +[37244583] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 +[37683422] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e +[37684760] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb92074f96e +[37685514] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e +[37685567] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e +[38192889] [52] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[38194012] [52] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[38194991] [52] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[38195100] [51] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[38195185] [51] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[38195246] [51] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[38195471] [51] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[38195567] [53] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[38292245] [54] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[38293105] [54] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[38294014] [54] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[38294139] [53] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[38294234] [53] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[38294352] [53] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[38294553] [53] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[38294637] [55] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[38692993] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 +[38693469] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb939491eb9 +[38693912] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 +[38693950] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 +[38694677] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 +[38694748] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb93966fdd6 +[38695267] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 +[38695305] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 +[38743141] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 +[38744041] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003580b10700000000 +[38744777] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 +[38744836] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 +[38785944] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac +[38786838] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bba4c752fac +[38787652] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac +[38787706] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac +[38788582] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 +[38788669] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bba4c632964 +[38789185] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 +[38789251] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 +[38789770] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 +[38789849] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bba6e693b61 +[38790785] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 +[38790876] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 +[40242898] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 +[40243593] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cebab10700000000 +[40244062] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 +[40244094] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 +[40442965] [359] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40444076] [359] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40445011] [359] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40445232] [360] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40506782] [361] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40507705] [361] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40508497] [361] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40508682] [362] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40542970] [363] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[40543818] [363] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[40544452] [363] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[40544613] [364] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[40602852] [365] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[40603344] [365] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[40603809] [365] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[40603912] [366] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[40642754] [367] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[40643261] [367] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[40643780] [367] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[40643878] [368] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[40704131] [369] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[40705174] [369] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[40705929] [369] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[40706089] [370] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[40742769] [371] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[40743486] [371] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[40744208] [371] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[40744359] [372] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[40803112] [373] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[40804116] [373] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[40805050] [373] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[40805270] [374] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[40842725] [375] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[40843525] [375] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[40844117] [375] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[40844234] [376] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[40903108] [377] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[40903802] [377] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[40904460] [377] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[40904646] [378] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[40970040] [379] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[40970915] [379] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[40971949] [379] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[40972141] [380] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[41003407] [381] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[41004320] [381] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[41005181] [381] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[41005385] [382] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[41043531] [383] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[41044331] [383] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[41044955] [383] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[41045081] [384] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[41764625] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 +[41765407] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000066f5b10700000000 +[41765988] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 +[41766032] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 +[42184557] [56] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[42185297] [56] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[42186182] [56] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[42186348] [55] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[42186415] [55] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[42186495] [55] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[42186771] [55] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[42186864] [57] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[42290409] [58] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[42291273] [58] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[42291986] [58] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[42292089] [57] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[42292141] [57] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[42292196] [57] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[42292377] [57] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[42292442] [59] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[42788791] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c +[42789627] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bba4a7ed62c +[42791579] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c +[42791678] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c +[43243840] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 +[43244981] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ff2fb20700000000 +[43245936] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 +[43246013] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 +[43710240] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 +[43710879] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bba63712931 +[43711548] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 +[43711607] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 +[43712428] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 +[43712522] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bba63539e62 +[43713088] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 +[43713157] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 +[43788393] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb +[43789483] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbb7669f3bb +[43790448] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb +[43790543] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb +[43791691] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff +[43791828] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbb767ea8ff +[43792628] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff +[43792738] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff +[43793609] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 +[43793744] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbb98720541 +[43794486] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 +[43794609] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 +[44836575] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 +[44837095] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000986ab20700000000 +[44837610] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 +[44837651] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 +[46149736] [385] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46150521] [385] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46151374] [385] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46151579] [386] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46182359] [60] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[46183015] [60] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[46183710] [60] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[46183798] [59] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[46183856] [59] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[46183906] [59] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[46184107] [59] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[46184221] [61] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[46208694] [387] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46209489] [387] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46210505] [387] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46210685] [388] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46230740] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 +[46231431] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000030a5b20700000000 +[46231977] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 +[46232013] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 +[46251035] [389] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[46252433] [389] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[46253159] [389] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[46254030] [390] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[46287541] [62] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[46288234] [62] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[46289049] [62] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[46289144] [61] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[46289201] [61] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[46289330] [61] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[46289659] [61] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[46289715] [63] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[46308715] [391] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[46309463] [391] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[46310026] [391] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[46310179] [392] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[46346913] [393] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[46347717] [393] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[46348423] [393] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[46348586] [394] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[46410664] [395] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[46411590] [395] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[46412539] [395] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[46412735] [396] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[46446900] [397] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[46447926] [397] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[46448733] [397] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[46448913] [398] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[46510802] [399] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[46511557] [399] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[46512358] [399] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[46512578] [400] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[46549020] [401] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[46549786] [401] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[46550389] [401] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[46550534] [402] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[46607111] [403] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[46608004] [403] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[46608776] [403] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[46608970] [404] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[46649317] [405] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46650271] [405] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46651169] [405] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46651360] [406] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46707217] [407] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46708122] [407] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46708984] [407] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46709168] [408] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46753062] [409] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[46753804] [409] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[46754583] [409] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[46754757] [410] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[47706113] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 +[47707087] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbb74830537 +[47708053] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 +[47708124] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 +[47727840] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 +[47728476] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cadfb20700000000 +[47729252] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 +[47729395] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 +[48728658] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef +[48729193] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbb8d4ce3ef +[48729706] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef +[48729753] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef +[48730455] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 +[48730539] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbb8d6a4a49 +[48730995] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 +[48731043] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 +[48787488] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 +[48788391] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbcc26b4ff5 +[48789148] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 +[48789201] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 +[48790170] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 +[48790275] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbca069c378 +[48790775] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 +[48790839] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 +[48791703] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 +[48791794] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbca07e3461 +[48792264] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 +[48792304] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 +[49229434] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 +[49230304] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000631ab30700000000 +[49231221] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 +[49231293] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 +[50191167] [64] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[50192003] [64] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[50192621] [64] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[50192698] [63] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[50192782] [63] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[50192823] [63] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[50192959] [63] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[50193014] [65] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[50294882] [66] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[50295881] [66] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[50296833] [66] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[50296932] [65] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[50296995] [65] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[50297044] [65] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[50297211] [65] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[50297283] [67] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[50777632] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 +[50778465] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000fc54b30700000000 +[50779185] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 +[50779239] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 +[51902734] [411] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51903652] [411] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51904427] [411] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51904647] [412] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51907894] [413] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51908470] [413] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51909286] [413] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51909444] [414] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51969165] [415] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[51970314] [415] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[51971298] [415] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[51971462] [416] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[52008282] [417] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[52009094] [417] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[52009683] [417] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[52009834] [418] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[52070362] [419] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[52070941] [419] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[52071393] [419] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[52071510] [420] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[52110317] [421] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[52111112] [421] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[52112001] [421] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[52112209] [422] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[52170728] [423] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[52171633] [423] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[52172427] [423] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[52172615] [424] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[52210446] [425] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[52211090] [425] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[52211825] [425] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[52211988] [426] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[52230527] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 +[52231137] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000958fb30700000000 +[52231748] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 +[52231794] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 +[52270694] [427] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[52271590] [427] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[52272404] [427] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[52272601] [428] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[52310233] [429] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[52311036] [429] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[52311765] [429] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[52311915] [430] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[52371511] [431] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52372214] [431] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52372823] [431] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52372967] [432] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52413057] [433] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52413752] [433] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52414412] [433] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52414570] [434] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52471163] [435] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[52472033] [435] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[52472680] [435] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[52472823] [436] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[52721585] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c +[52722343] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbc9e7d642c +[52722953] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c +[52722996] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c +[53746155] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 +[53747010] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbcb7538eb3 +[53747830] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 +[53747893] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 +[53748777] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 +[53748883] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbcb7712975 +[53749430] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 +[53749486] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 +[53750209] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 +[53750313] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002dcab30700000000 +[53750873] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 +[53750921] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 +[53786348] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 +[53787005] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbdec7249b6 +[53787661] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 +[53787724] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 +[53788625] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 +[53788725] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbdca8436e8 +[53789328] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 +[53789378] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 +[53790043] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 +[53790151] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbdca704904 +[53790721] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 +[53790810] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 +[54187113] [68] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[54188008] [68] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[54188766] [68] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[54188864] [67] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[54188911] [67] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[54188963] [67] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[54189120] [67] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[54189175] [69] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[54292814] [70] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[54293660] [70] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[54294329] [70] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[54294407] [69] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[54294458] [69] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[54294497] [69] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[54294649] [69] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[54294707] [71] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[55233976] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 +[55234760] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c504b40700000000 +[55235637] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 +[55235702] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 +[56817809] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 +[56818650] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005d3fb40700000000 +[56819404] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 +[56819457] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 +[57636711] [437] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57637193] [437] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57637632] [437] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57637729] [438] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57637793] [439] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57674520] [440] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[57675266] [440] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[57675726] [440] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[57676099] [441] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[57681698] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd +[57681999] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbdc88c7ddd +[57682374] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd +[57682406] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd +[57713853] [442] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[57714253] [442] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[57714662] [442] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[57714761] [443] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[57776206] [444] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[57777058] [444] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[57778125] [444] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[57778265] [445] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[57814483] [446] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[57815043] [446] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[57815719] [446] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[57815909] [447] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[57882194] [448] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[57882697] [448] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[57883148] [448] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[57883251] [449] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[57914103] [450] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[57915027] [450] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[57915810] [450] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[57915981] [451] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[57974149] [452] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[57974871] [452] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[57975706] [452] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[57975866] [453] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[58015610] [454] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[58016458] [454] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[58017335] [454] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[58017513] [455] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[58074741] [456] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58075575] [456] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58076549] [456] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58076738] [457] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58112703] [458] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58113414] [458] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58114289] [458] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58114471] [459] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58172574] [460] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[58173326] [460] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[58174022] [460] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[58174169] [461] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[58183086] [72] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[58183564] [72] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[58184273] [72] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[58184363] [71] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[58184429] [71] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[58184520] [71] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[58184678] [71] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[58184745] [73] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[58232836] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 +[58233685] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f579b40700000000 +[58234619] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 +[58234711] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 +[58288895] [74] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[58289771] [74] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[58290548] [74] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[58290637] [73] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[58290695] [73] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[58290740] [73] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[58290915] [73] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[58290994] [75] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[58763664] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 +[58764151] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbde159bf92 +[58764571] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 +[58764607] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 +[58765099] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 +[58765154] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbde177a462 +[58765506] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 +[58765537] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 +[58785247] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 +[58785821] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbef4763da8 +[58786300] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 +[58786340] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 +[58786891] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 +[58786948] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbef48ab8d1 +[58787319] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 +[58787351] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 +[58787765] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 +[58787836] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbf16840602 +[58788192] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 +[58788228] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 +[59787837] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 +[59788834] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008db4b40700000000 +[59789831] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 +[59789910] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 +[61235533] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 +[61236206] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000026efb40700000000 +[61236910] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 +[61236975] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 +[62183534] [76] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[62184622] [76] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[62185601] [76] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[62185716] [75] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[62185800] [75] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[62185860] [75] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[62186104] [75] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[62186208] [77] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[62288985] [78] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[62289886] [78] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[62290644] [78] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[62290738] [77] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[62290795] [77] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[62290843] [77] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[62291035] [77] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[62291097] [79] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[62757187] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 +[62757925] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbef2956c89 +[62758654] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 +[62758707] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 +[62759540] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 +[62759637] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c029b50700000000 +[62760225] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 +[62760283] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 +[63276068] [462] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63276943] [462] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63277914] [462] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63278108] [463] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63340251] [464] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63340873] [464] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63341609] [464] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63341793] [465] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63375538] [466] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[63376189] [466] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[63377008] [466] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[63377158] [467] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[63435943] [468] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[63436721] [468] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[63437611] [468] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[63437834] [469] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[63475941] [470] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[63476741] [470] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[63477613] [470] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[63477815] [471] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[63536072] [472] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[63536940] [472] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[63537872] [472] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[63538063] [473] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[63579093] [474] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[63579941] [474] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[63580655] [474] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[63580802] [475] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[63638066] [476] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[63638641] [476] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[63639187] [476] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[63639307] [477] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[63677899] [478] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[63678687] [478] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[63679456] [478] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[63679672] [479] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[63680324] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa +[63680441] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbf0b5cfbfa +[63681072] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa +[63681129] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa +[63681966] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf +[63682061] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbf0b7a3ddf +[63682602] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf +[63682648] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf +[63736385] [480] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[63737021] [480] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[63737668] [480] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[63737816] [481] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[63776196] [482] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63776986] [482] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63777659] [482] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63777832] [483] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63792253] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc +[63792762] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc01e7e44fc +[63793369] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc +[63793431] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc +[63794235] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 +[63794329] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc01e92bb97 +[63794902] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 +[63794949] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 +[63795790] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 +[63795903] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc040883073 +[63796490] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 +[63796551] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 +[63836584] [484] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63837566] [484] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63838763] [484] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63838957] [485] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63876343] [486] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[63877077] [486] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[63877844] [486] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[63878008] [487] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[64236576] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 +[64237204] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006464b50700000000 +[64237773] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 +[64237819] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 +[65829150] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 +[65830974] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ff9eb50700000000 +[65831530] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 +[65831572] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 +[66227065] [80] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[66228050] [80] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[66228966] [80] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[66229077] [79] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[66229148] [79] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[66229213] [79] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[66229549] [79] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[66229612] [81] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[66295445] [82] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[66296512] [82] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[66297432] [82] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[66297574] [81] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[66297645] [81] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[66297716] [81] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[66297967] [81] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[66298064] [83] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[67237961] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 +[67238916] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009ad9b50700000000 +[67239744] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 +[67239809] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 +[67774572] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 +[67775245] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc01c942802 +[67775782] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 +[67775825] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 +[68698368] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 +[68699327] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc0356b0320 +[68700214] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 +[68700295] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 +[68701360] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c +[68701498] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc03588474c +[68702215] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c +[68702300] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c +[68737182] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 +[68738013] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003314b60700000000 +[68738926] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 +[68738996] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 +[68787563] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 +[68788565] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc148963783 +[68789573] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 +[68789653] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 +[68790704] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 +[68790818] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc16a8a1911 +[68791568] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 +[68791653] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 +[68792632] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 +[68792773] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc14885aee2 +[68793537] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 +[68793646] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 +[68975797] [488] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[68976945] [488] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[68978029] [488] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[68978264] [489] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69037495] [490] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69038313] [490] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69039212] [490] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69039427] [491] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69077588] [492] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[69078424] [492] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[69079329] [492] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[69079510] [493] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[69138796] [494] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[69139844] [494] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[69140853] [494] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[69141139] [495] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[69179936] [496] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[69180918] [496] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[69181981] [496] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[69182176] [497] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[69235528] [498] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[69236187] [498] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[69236894] [498] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[69237046] [499] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[69279851] [500] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[69280749] [500] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[69281690] [500] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[69281897] [501] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[69337852] [502] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[69338589] [502] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[69339277] [502] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[69339453] [503] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[69376261] [504] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[69379130] [504] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[69380042] [504] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[69380258] [505] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[69435960] [506] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[69436766] [506] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[69437703] [506] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[69437888] [507] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[69478327] [508] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69479453] [508] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69480460] [508] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69480664] [509] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69535845] [510] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69536355] [510] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69536869] [510] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69536991] [511] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69580224] [512] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[69581123] [512] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[69582144] [512] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[69582353] [513] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[70186977] [84] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[70188050] [84] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[70188682] [84] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[70188761] [83] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[70188805] [83] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[70188850] [83] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[70188991] [83] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[70189048] [85] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[70236546] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 +[70237062] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cd4eb60700000000 +[70237593] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 +[70237632] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 +[70292988] [86] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[70293871] [86] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[70294659] [86] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[70294755] [85] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[70294806] [85] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[70294863] [85] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[70295044] [85] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[70295109] [87] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[71767627] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 +[71768099] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006589b60700000000 +[71768513] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 +[71768547] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 +[72792403] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 +[72793072] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc146a4e2b3 +[72793562] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 +[72793601] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 +[73238039] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 +[73239020] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000fdc3b60700000000 +[73239816] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 +[73239879] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 +[73684592] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b +[73685554] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc15f71265b +[73686505] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b +[73686592] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b +[73687816] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd +[73687966] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc15f8f10dd +[73688742] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd +[73688817] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd +[73788981] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 +[73790055] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc2729f1253 +[73791063] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 +[73791138] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 +[73792238] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 +[73792371] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc29491c840 +[73793178] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 +[73793251] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 +[73794142] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f +[73794260] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc272908a5f +[73795071] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f +[73796854] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f +[74183031] [88] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[74183916] [88] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[74184896] [88] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[74185004] [87] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[74185091] [87] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[74185189] [87] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[74185428] [87] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[74185519] [89] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[74289147] [90] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[74290297] [90] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[74291513] [90] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[74291637] [89] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[74291709] [89] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[74291784] [89] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[74292027] [89] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[74292122] [91] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[74737492] [514] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74738238] [514] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74739104] [514] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74739262] [515] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74739474] [516] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74739596] [516] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74740384] [516] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74740541] [517] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74740721] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 +[74740832] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000095feb60700000000 +[74741607] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 +[74741680] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 +[74797689] [518] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[74798649] [518] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[74799785] [518] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[74800016] [519] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[74838131] [520] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[74838754] [520] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[74839371] [520] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[74839525] [521] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[74897647] [522] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[74898452] [522] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[74899180] [522] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[74899348] [523] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[74937654] [524] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[74938513] [524] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[74939276] [524] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[74939436] [525] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[74997632] [526] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[74998444] [526] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[74999127] [526] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[74999285] [527] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[75037448] [528] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[75038096] [528] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[75038716] [528] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[75038853] [529] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[75097865] [530] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[75098794] [530] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[75099552] [530] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[75099719] [531] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[75137843] [532] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[75138572] [532] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[75139448] [532] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[75139631] [533] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[75198773] [534] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75199680] [534] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75200484] [534] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75200801] [535] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75237631] [536] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75238279] [536] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75238942] [536] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75239083] [537] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75298307] [538] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[75299174] [538] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[75300077] [538] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[75300252] [539] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[76242693] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 +[76243292] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002d39b70700000000 +[76243860] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 +[76243907] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 +[77708556] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 +[77709399] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc270a08f82 +[77710206] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 +[77710256] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 +[77740273] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 +[77740897] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c573b70700000000 +[77741559] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 +[77741638] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 +[78188346] [92] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[78189087] [92] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[78189834] [92] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[78189929] [91] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[78189982] [91] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[78190041] [91] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[78190199] [91] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[78190262] [93] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[78287006] [94] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[78287805] [94] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[78288574] [94] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[78288666] [93] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[78288720] [93] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[78288771] [93] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[78288941] [93] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[78289012] [95] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[78836555] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f +[78837154] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc2898cb65f +[78837782] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f +[78837839] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f +[78838667] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c +[78838772] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc28971541c +[78839363] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c +[78839419] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c +[78840076] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff +[78840171] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc39ca33aff +[78840723] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff +[78840771] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff +[78841444] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 +[78841539] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc39c8f21d0 +[78842126] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 +[78842180] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 +[78842789] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 +[78842870] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc3be975460 +[78843414] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 +[78843473] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 +[79420415] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 +[79421494] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005faeb70700000000 +[79422270] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 +[79422331] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 +[80472772] [540] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80473417] [540] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80474055] [540] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80474188] [541] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80474299] [542] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80501336] [543] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[80506403] [543] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[80506952] [543] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[80507053] [544] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[80562892] [545] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[80564625] [545] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[80565341] [545] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[80565999] [546] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[80601447] [547] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[80602401] [547] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[80603171] [547] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[80603339] [548] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[80661523] [549] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[80662465] [549] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[80663356] [549] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[80663527] [550] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[80701418] [551] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[80702295] [551] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[80703017] [551] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[80703171] [552] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[80742214] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 +[80743124] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f8e8b70700000000 +[80743824] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 +[80743867] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 +[80761292] [553] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[80761869] [553] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[80762564] [553] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[80762754] [554] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[80801389] [555] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[80802082] [555] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[80802702] [555] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[80802848] [556] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[80861756] [557] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[80862687] [557] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[80863454] [557] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[80863623] [558] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[80900697] [559] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80901637] [559] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80902323] [559] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80902466] [560] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80959922] [561] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80961061] [561] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80962003] [561] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80962206] [562] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[81000064] [563] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[81001139] [563] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[81002058] [563] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[81002158] [564] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[82194232] [96] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[82196527] [96] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[82197502] [96] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[82197704] [95] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[82197747] [95] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[82197790] [95] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[82198024] [95] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[82198080] [97] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[82241097] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 +[82242018] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009223b80700000000 +[82242771] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 +[82242811] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 +[82296877] [98] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[82297643] [98] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[82298342] [98] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[82298425] [97] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[82298466] [97] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[82298505] [97] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[82298664] [97] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[82298726] [99] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[82725647] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 +[82726659] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc39aaab1d2 +[82727366] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 +[82727418] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 +[83749390] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc +[83750059] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc3b374e4dc +[83750531] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc +[83750569] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc +[83751359] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 +[83751457] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc3b392a8a1 +[83751992] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 +[83752029] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 +[83752747] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 +[83752834] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002a5eb80700000000 +[83753560] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 +[83753613] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 +[83789444] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 +[83790125] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc4e8995fb0 +[83790947] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 +[83791007] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 +[83791925] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a +[83792056] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc4c6b5714a +[83792807] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a +[83792856] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a +[83793689] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd +[83793796] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc4c6a866fd +[83794515] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd +[83794565] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd +[85247291] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 +[85248331] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c298b80700000000 +[85249379] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 +[85249439] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 +[86176712] [565] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86177720] [565] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86178642] [565] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86178813] [566] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86178938] [567] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86185004] [100] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[86185686] [100] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[86186507] [100] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[86186606] [99] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[86186671] [99] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[86186718] [99] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[86186896] [99] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[86186972] [101] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[86205513] [568] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[86206247] [568] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[86207003] [568] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[86207137] [569] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[86265166] [570] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[86266107] [570] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[86266935] [570] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[86267102] [571] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[86293022] [102] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[86293720] [102] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[86294625] [102] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[86294714] [101] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[86294778] [101] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[86294830] [101] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[86295040] [101] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[86295109] [103] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[86304934] [572] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[86305586] [572] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[86306385] [572] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[86306537] [573] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[86365338] [574] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[86366448] [574] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[86367467] [574] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[86367676] [575] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[86407617] [576] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[86408605] [576] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[86409574] [576] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[86409772] [577] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[86467500] [578] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[86468585] [578] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[86469550] [578] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[86469740] [579] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[86507286] [580] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[86508224] [580] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[86509169] [580] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[86509351] [581] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[86567595] [582] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[86568565] [582] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[86569540] [582] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[86569747] [583] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[86605199] [584] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86605875] [584] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86606682] [584] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86606860] [585] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86667549] [586] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86668632] [586] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86669594] [586] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86669780] [587] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86707651] [588] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[86708609] [588] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[86709509] [588] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[86709678] [589] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[86747500] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 +[86748377] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005ad3b80700000000 +[86749200] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 +[86749262] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 +[87742933] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 +[87743716] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc4c4b8f9f1 +[87744476] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 +[87744531] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 +[88246927] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 +[88247590] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f50db90700000000 +[88248250] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 +[88248292] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 +[88766921] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 +[88767389] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc4dd7ca241 +[88767814] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 +[88767846] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 +[88768347] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 +[88768395] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc4dd9a7f16 +[88768747] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 +[88768770] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 +[88785699] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c +[88786310] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc5f09c433c +[88787037] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c +[88787086] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c +[88788126] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c +[88788232] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc5f0b0b66c +[88788903] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c +[88788945] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c +[88789944] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 +[88790000] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc612a34908 +[88790401] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 +[88790455] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 +[89790032] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 +[89790864] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008e48b90700000000 +[89791635] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 +[89791680] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 +[90182769] [104] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[90183248] [104] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[90183669] [104] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[90183713] [103] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[90183739] [103] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[90183774] [103] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[90183866] [103] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[90183901] [105] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[90289176] [106] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[90290105] [106] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[90290862] [106] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[90290939] [105] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[90290986] [105] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[90291021] [105] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[90291179] [105] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[90291234] [107] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[91246575] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 +[91247250] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002683b90700000000 +[91247925] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 +[91247969] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 +[91839705] [590] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91840556] [590] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91841273] [590] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91841400] [591] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91866453] [592] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91867012] [592] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91867825] [592] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91867962] [593] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91906687] [594] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[91907652] [594] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[91908568] [594] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[91908759] [595] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[91967081] [596] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[91968173] [596] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[91969194] [596] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[91969413] [597] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[92007827] [598] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[92008796] [598] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[92009614] [598] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[92009765] [599] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[92069021] [600] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[92070013] [600] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[92070938] [600] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[92071130] [601] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[92107133] [602] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[92108233] [602] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[92109176] [602] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[92109371] [603] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[92167139] [604] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[92168049] [604] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[92168794] [604] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[92168955] [605] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[92207189] [606] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[92208235] [606] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[92209190] [606] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[92209366] [607] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[92267494] [608] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[92268497] [608] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[92269356] [608] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[92269541] [609] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[92305191] [610] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92306060] [610] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92306890] [610] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92307103] [611] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92367136] [612] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92368189] [612] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92369127] [612] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92369306] [613] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92407653] [614] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[92408570] [614] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[92409451] [614] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[92409630] [615] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[92760897] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef +[92761906] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc5eec21bef +[92762830] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef +[92762888] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef +[92763948] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 +[92764058] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000bebdb90700000000 +[92764782] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 +[92766407] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 +[93784510] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 +[93785292] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc6078a00d5 +[93785935] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 +[93785982] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 +[93786935] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 +[93787027] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc607a7aa67 +[93787643] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 +[93787690] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 +[93788855] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f +[93788961] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc71aa0a31f +[93789580] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f +[93789628] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f +[93790313] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 +[93790402] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc71ab51773 +[93791018] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 +[93791059] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 +[93791706] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f +[93791790] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc73ca8fd8f +[93792331] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f +[93792382] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f +[94200692] [108] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[94201507] [108] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[94202304] [108] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[94202414] [107] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[94202471] [107] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[94202518] [107] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[94202691] [107] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[94202766] [109] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[94229157] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 +[94229930] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000057f8b90700000000 +[94230731] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 +[94230790] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 +[94288184] [110] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[94289048] [110] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[94289957] [110] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[94290071] [109] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[94290124] [109] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[94290183] [109] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[94290381] [109] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[94290463] [111] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[95729655] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 +[95730455] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f032ba0700000000 +[95731215] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 +[95731264] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 +[97228852] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 +[97229796] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000896dba0700000000 +[97230649] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 +[97230733] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 +[97573084] [616] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97573819] [616] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97574490] [616] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97574642] [617] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97574741] [618] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97628566] [619] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[97629454] [619] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[97630251] [619] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[97630461] [620] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[97668744] [621] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[97669644] [621] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[97670451] [621] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[97670610] [622] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[97683167] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 +[97683651] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc718be1d16 +[97684266] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 +[97684315] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 +[97728514] [623] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[97729194] [623] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[97729966] [623] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[97730123] [624] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[97768516] [625] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[97769040] [625] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[97769481] [625] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[97769571] [626] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[97830540] [627] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[97831347] [627] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[97832076] [627] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[97832225] [628] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[97868888] [629] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[97869802] [629] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[97870622] [629] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[97870813] [630] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[97930819] [631] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[97931490] [631] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[97931987] [631] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[97932086] [632] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[97968802] [633] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[97969701] [633] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[97970624] [633] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[97970830] [634] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[98029833] [635] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98030807] [635] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98031592] [635] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98031758] [636] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98069156] [637] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98070057] [637] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98070864] [637] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98071032] [638] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98129097] [639] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[98129954] [639] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[98130720] [639] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[98130846] [640] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[98192434] [112] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[98193048] [112] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[98193663] [112] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[98193749] [111] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[98193787] [111] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[98193832] [111] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[98193966] [111] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[98194014] [113] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[98295277] [114] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[98295888] [114] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[98296293] [114] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[98296414] [113] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[98296440] [113] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[98296461] [113] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[98296535] [113] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[98296567] [115] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[98700044] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b +[98700819] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc73187e07b +[98701548] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b +[98701587] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b +[98702934] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 +[98703043] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc731a57c61 +[98703655] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 +[98703700] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 +[98729684] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 +[98730297] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000022a8ba0700000000 +[98730902] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 +[98730944] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 +[98787496] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 +[98787931] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc844aaebc3 +[98788356] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 +[98788381] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 +[98788904] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 +[98788956] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc866b10db4 +[98789289] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 +[98789315] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 +[98789736] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe +[98789786] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc844c172fe +[98790154] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe +[98790176] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe +[100234751] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 +[100235471] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000bae2ba0700000000 +[100236274] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 +[100236325] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 +[101772344] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 +[101773333] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000521dbb0700000000 +[101774280] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 +[101774333] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 +[102196178] [116] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[102196916] [116] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[102197801] [116] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[102197908] [115] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[102197981] [115] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[102198027] [115] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[102198201] [115] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[102198271] [117] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[102292931] [118] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[102293938] [118] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[102294901] [118] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[102295002] [117] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[102295050] [117] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[102295110] [117] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[102295292] [117] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[102295363] [119] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[102693780] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada +[102694758] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc842c12ada +[102695688] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada +[102695743] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada +[103354433] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 +[103355609] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ea57bb0700000000 +[103356780] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 +[103356884] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 +[103417836] [641] [StateMap] 192.168.2.99:49299 (p_data) 340 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[103418948] [641] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 320 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[103419959] [641] [StateMap] 192.168.2.99:49299 (buffQueue) 340 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[103420173] [642] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[103420304] [643] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[103420415] [644] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[103420525] [645] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[103426217] [646] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[103426823] [646] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[103427630] [646] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[103427762] [647] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[103474657] [648] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[103475701] [648] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[103476761] [648] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[103476934] [649] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[103534436] [650] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[103535109] [650] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[103535660] [650] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[103535766] [651] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[103574486] [652] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[103575120] [652] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[103575900] [652] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[103576042] [653] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[103634667] [654] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[103635447] [654] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[103636099] [654] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[103636239] [655] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[103678865] [656] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[103682526] [656] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[103683638] [656] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[103686644] [657] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[103689315] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 +[103690058] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc85b908897 +[103690656] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 +[103690713] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 +[103691747] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 +[103691817] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc85bae5332 +[103692338] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 +[103692376] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 +[103732533] [658] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103733074] [658] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103733598] [658] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103735519] [659] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103774946] [660] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103775871] [660] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103777019] [660] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103777222] [661] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[103802902] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e +[103803565] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc990ae9f3e +[103804433] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e +[103804542] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e +[103805801] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 +[103805920] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc96ec06920 +[103806747] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 +[103806799] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 +[103807726] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f +[103807843] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc96eac2c9f +[103808629] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f +[103808675] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f +[103834678] [662] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[103835185] [662] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[103835791] [662] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[103835898] [663] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[104844460] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 +[104845456] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008492bb0700000000 +[104846437] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 +[104846489] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 +[106202268] [120] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[106203087] [120] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[106203898] [120] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[106203989] [119] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[106204051] [119] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[106204098] [119] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[106204261] [119] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[106204324] [121] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[106234989] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 +[106235461] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001ecdbb0700000000 +[106235974] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 +[106236012] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 +[106289084] [122] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[106290058] [122] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[106291034] [122] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[106291131] [121] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[106291194] [121] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[106291240] [121] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[106291425] [121] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[106291489] [123] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[107712511] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe +[107713428] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc96cc63efe +[107714081] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe +[107714126] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe +[107734859] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 +[107735890] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b607bc0700000000 +[107736760] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 +[107736820] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 +[108735217] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 +[108736114] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc9859392f3 +[108736974] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 +[108737033] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 +[108738119] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 +[108738224] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc985bad957 +[108738951] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 +[108739009] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 +[108794479] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 +[108795421] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcabab17336 +[108796307] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 +[108796370] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 +[108799044] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc +[108799220] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bca98c966fc +[108800084] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc +[108800159] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc +[108801819] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 +[108801932] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bca98b89fb2 +[108802661] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 +[108802725] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 +[108940701] [664] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108941812] [664] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108942822] [664] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108943009] [665] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108977901] [666] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108978632] [666] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108979513] [666] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[108979661] [667] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[109038094] [668] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[109038883] [668] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[109039503] [668] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[109039650] [669] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[109082322] [670] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[109083415] [670] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[109084394] [670] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[109084615] [671] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[109138818] [672] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[109140000] [672] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[109140959] [672] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[109141160] [673] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[109180153] [674] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[109180944] [674] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[109181780] [674] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[109181947] [675] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[109240586] [676] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[109241704] [676] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[109242574] [676] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[109242753] [677] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[109242981] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 +[109243084] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005142bc0700000000 +[109244079] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 +[109244197] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 +[109278383] [678] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[109279336] [678] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[109280309] [678] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[109280499] [679] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[109340613] [680] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[109341758] [680] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[109342715] [680] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[109342898] [681] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[109380302] [682] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[109381049] [682] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[109381884] [682] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[109382053] [683] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[109438611] [684] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109439582] [684] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109440499] [684] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109440695] [685] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109480817] [686] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109481851] [686] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109482869] [686] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109483090] [687] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[109540100] [688] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[109542823] [688] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[109543670] [688] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[109544442] [689] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[110214240] [124] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[110215035] [124] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[110215840] [124] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[110215935] [123] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[110215982] [123] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[110216021] [123] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[110216182] [123] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[110216250] [125] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[110289154] [126] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[110290083] [126] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[110290973] [126] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[110291071] [125] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[110291132] [125] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[110291179] [125] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[110291352] [125] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[110291427] [127] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[110739994] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 +[110741049] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e97cbc0700000000 +[110742053] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 +[110742095] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 +[112241534] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 +[112242404] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000082b7bc0700000000 +[112243197] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 +[112243238] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 +[112729135] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce +[112729864] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bca96d110ce +[112730408] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce +[112730435] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce +[113753642] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d +[113754623] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcaafba321d +[113755526] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d +[113755578] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d +[113756817] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 +[113757005] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcaafa27ce4 +[113757905] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 +[113757954] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 +[113759316] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 +[113759448] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001af2bc0700000000 +[113760310] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 +[113760355] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 +[113784869] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede +[113785679] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcbe4bceede +[113786636] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede +[113786715] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede +[113787929] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf +[113788032] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bcbc2b7a8cf +[113789027] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf +[113789154] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf +[113792021] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 +[113792768] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bcbc2cd9089 +[113793862] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 +[113794040] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 +[114211695] [128] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[114212388] [128] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[114213069] [128] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[114213183] [127] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[114213226] [127] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[114213267] [127] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[114213385] [127] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[114213431] [129] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[114297452] [130] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[114298231] [130] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[114298966] [130] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[114299042] [129] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[114299083] [129] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[114299113] [129] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[114299276] [129] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[114299325] [131] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[114675924] [690] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114676738] [690] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114677599] [690] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114677778] [691] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114681657] [692] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114682318] [692] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114682970] [692] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114683101] [693] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[114745989] [694] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[114747054] [694] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[114747767] [694] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[114747938] [695] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[114789451] [696] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[114790133] [696] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[114790784] [696] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[114790909] [697] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[114840115] [698] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[114840983] [698] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[114841716] [698] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[114841850] [699] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[114879635] [700] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[114880277] [700] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[114881069] [700] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[114881207] [701] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[114940302] [702] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[114941531] [702] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[114942610] [702] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[114942799] [703] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[114980282] [704] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[114981145] [704] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[114982173] [704] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[114982357] [705] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[115040209] [706] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[115040990] [706] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[115041558] [706] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[115041713] [707] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[115080367] [708] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[115081463] [708] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[115082488] [708] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[115082694] [709] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[115140410] [710] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115141558] [710] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115142533] [710] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115142738] [711] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115180343] [712] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115181132] [712] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115182030] [712] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115182207] [713] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[115240550] [714] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[115241276] [714] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[115241770] [714] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[115241892] [715] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[115242060] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 +[115242102] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b32cbd0700000000 +[115243704] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 +[115243734] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 +[116825064] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 +[116825883] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000004d67bd0700000000 +[116826733] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 +[116826785] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 +[117747161] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 +[117747680] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bcbc0e0e0e3 +[117748100] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 +[117748122] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 +[118223903] [132] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[118226517] [132] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[118227365] [132] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[118227574] [131] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[118227611] [131] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[118227640] [131] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[118227768] [131] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[118227817] [133] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[118241684] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 +[118242605] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e8a1bd0700000000 +[118243657] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 +[118243704] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 +[118291513] [134] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[118292337] [134] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[118293153] [134] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[118293242] [133] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[118293278] [133] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[118293322] [133] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[118293470] [133] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[118293527] [135] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[118771837] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 +[118772593] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcbd9be3cd3 +[118773574] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 +[118773640] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 +[118774670] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f +[118774777] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcbd9a7060f +[118775521] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f +[118775576] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f +[118786859] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 +[118787497] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcd0ec071e5 +[118788323] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 +[118788371] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 +[118789536] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 +[118789644] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bccecbea7e3 +[118790430] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 +[118790471] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 +[118791353] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e +[118791473] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bccecd4310e +[118792203] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e +[118792242] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e +[119793325] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 +[119793733] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000080dcbd0700000000 +[119794149] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 +[119794169] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 +[120342324] [716] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120343460] [716] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120344610] [716] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120344923] [717] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120381451] [718] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120382125] [718] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120383066] [718] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120383210] [719] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[120441368] [720] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[120441861] [720] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[120442328] [720] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[120442419] [721] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[120481887] [722] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[120482794] [722] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[120483691] [722] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[120483884] [723] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[120541780] [724] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[120542613] [724] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[120543269] [724] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[120543407] [725] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[120582993] [726] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[120584088] [726] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[120585148] [726] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[120585323] [727] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[120642009] [728] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[120642580] [728] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[120643089] [728] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[120643197] [729] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[120702004] [730] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[120703127] [730] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[120704197] [730] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[120704399] [731] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[120742379] [732] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[120743497] [732] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[120744536] [732] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[120744710] [733] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[120802215] [734] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[120803077] [734] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[120804369] [734] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[120804512] [735] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[120841888] [736] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120842531] [736] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120843197] [736] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120843325] [737] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120902512] [738] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120903297] [738] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120903909] [738] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120904080] [739] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[120942249] [740] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[120943287] [740] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[120943988] [740] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[120944135] [741] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[121240828] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 +[121241629] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001817be0700000000 +[121242386] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 +[121242430] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 +[122181750] [136] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[122182731] [136] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[122183678] [136] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[122183775] [135] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[122183822] [135] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[122183906] [135] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[122184107] [135] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[122184173] [137] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[122290012] [138] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[122291091] [138] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[122291913] [138] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[122291980] [137] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[122292017] [137] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[122292048] [137] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[122292204] [137] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[122292253] [139] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[122765184] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a +[122765952] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bccead0976a +[122766816] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a +[122766850] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a +[122767674] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 +[122767746] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b051be0700000000 +[122768293] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 +[122768327] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 +[123797092] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 +[123798024] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcd03a69d82 +[123798902] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 +[123798946] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 +[123800055] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 +[123800172] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcd03c37697 +[123800971] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 +[123801015] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 +[123801906] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 +[123801998] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bce38c76441 +[123802745] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 +[123802793] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 +[123803724] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 +[123803821] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bce16c38ac2 +[123804528] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 +[123804585] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 +[123805405] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 +[123805499] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bce16dabf28 +[123807514] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 +[123807550] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 +[124302676] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 +[124303464] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000498cbe0700000000 +[124304317] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 +[124304361] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 +[125741129] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 +[125742199] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e1c6be0700000000 +[125743261] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 +[125743308] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 +[126063912] [742] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[126064766] [742] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[126065723] [742] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[126065927] [743] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[126216929] [744] [StateMap] 192.168.2.99:49299 (p_data) 260 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[126218007] [744] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 240 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[126218981] [744] [StateMap] 192.168.2.99:49299 (buffQueue) 260 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[126219180] [745] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[126219297] [746] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[126219418] [747] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[126223036] [140] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[126223137] [140] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[126223949] [140] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[126224025] [139] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[126224077] [139] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[126224118] [139] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[126224289] [139] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[126224348] [141] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[126390011] [748] [StateMap] 192.168.2.99:49299 (p_data) 210 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[126390949] [748] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 190 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[126391880] [748] [StateMap] 192.168.2.99:49299 (buffQueue) 210 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[126392052] [749] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[126392152] [750] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[126392264] [751] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[126392500] [142] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[126392596] [142] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[126393309] [142] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[126393380] [141] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[126393434] [141] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[126393473] [141] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[126393628] [141] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[126393686] [143] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[126401492] [752] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[126402211] [752] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[126403034] [752] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[126403194] [753] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[126461950] [754] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[126462838] [754] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[126463588] [754] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[126463734] [755] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[126501678] [756] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[126502459] [756] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[126503295] [756] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[126503465] [757] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[126561484] [758] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126563679] [758] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126564548] [758] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126564713] [759] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126606666] [760] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126611868] [760] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126613433] [760] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126614477] [761] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[126661859] [762] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[126662853] [762] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[126663734] [762] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[126663881] [763] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[127242888] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 +[127243841] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007901bf0700000000 +[127244777] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 +[127244826] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 +[127681058] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b +[127682019] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bce14dca71b +[127682931] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b +[127682976] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b +[128703985] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d +[128704730] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bce2db4760d +[128706485] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d +[128706535] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d +[128707545] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 +[128707640] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bce2dd21b10 +[128708202] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 +[128708230] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 +[128742137] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 +[128743018] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000113cbf0700000000 +[128743579] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 +[128743603] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 +[128786717] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 +[128787128] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bcf40ca21c9 +[128787516] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 +[128787538] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 +[128788010] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e +[128788048] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bcf40de918e +[128788733] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e +[128788775] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e +[128789368] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 +[128789414] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcf62d2dd10 +[128789769] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 +[128789789] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 +[130189732] [144] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[130190911] [144] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[130191946] [144] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[130192040] [143] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[130192079] [143] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[130192122] [143] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[130192313] [143] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[130192381] [145] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[130245247] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 +[130246227] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ab76bf0700000000 +[130247225] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 +[130247271] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 +[130295521] [146] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[130296337] [146] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[130297259] [146] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[130297338] [145] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[130297386] [145] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[130297423] [145] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[130297591] [145] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[130297662] [147] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[131775532] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 +[131776356] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000044b1bf0700000000 +[131777072] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 +[131777102] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 +[131777932] [764] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131777995] [764] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131778756] [764] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131778904] [765] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131800974] [766] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131801726] [766] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131802602] [766] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131802753] [767] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[131861392] [768] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[131862466] [768] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[131863352] [768] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[131863524] [769] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[131900936] [770] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[131901587] [770] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[131902386] [770] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[131902525] [771] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[131961633] [772] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[131962765] [772] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[131963702] [772] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[131963877] [773] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[132001315] [774] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[132002158] [774] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[132003186] [774] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[132003365] [775] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[132061422] [776] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[132062210] [776] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[132062826] [776] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[132062958] [777] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[132102135] [778] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[132103012] [778] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[132103782] [778] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[132103944] [779] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[132161399] [780] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[132162099] [780] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[132162913] [780] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[132163016] [781] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[132201511] [782] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[132202164] [782] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[132202784] [782] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[132202894] [783] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[132261704] [784] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132263879] [784] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132264643] [784] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132264808] [785] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132303456] [786] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132304252] [786] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132304957] [786] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132305110] [787] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[132361995] [788] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[132362982] [788] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[132363571] [788] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[132363706] [789] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[132697324] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d +[132698065] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bcf3edc0b4d +[132698778] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d +[132698809] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d +[133246755] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 +[133247699] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000dcebbf0700000000 +[133248432] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 +[133248471] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 +[133721730] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 +[133722732] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcf57b1a1c0 +[133723561] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 +[133723609] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 +[133724838] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 +[133724971] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcf57d6c793 +[133725840] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 +[133725880] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 +[133785321] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 +[133786355] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd08cd35443 +[133787313] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 +[133787358] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 +[133788967] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 +[133789065] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd06ad3a521 +[133789792] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 +[133789828] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 +[133790680] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d +[133790768] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd06ae83f0d +[133791469] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d +[133791516] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d +[134235590] [148] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[134241369] [148] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[134245540] [148] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[134245770] [147] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[134245815] [147] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[134245843] [147] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[134246075] [147] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[134246120] [149] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[134291879] [150] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[134293249] [150] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[134294244] [150] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[134294351] [149] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[134294393] [149] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[134294443] [149] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[134294627] [149] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[134294701] [151] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[134848771] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 +[134849584] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007426c00700000000 +[134850293] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 +[134850336] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 +[136250385] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 +[136251293] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000f61c00700000000 +[136251975] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 +[136252008] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 +[137510123] [790] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137511022] [790] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137511912] [790] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137512103] [791] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137516602] [792] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137517159] [792] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137517899] [792] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137518022] [793] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[137565123] [794] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[137566173] [794] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[137567128] [794] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[137567317] [795] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[137629159] [796] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[137630264] [796] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[137631222] [796] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[137631411] [797] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[137665288] [798] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[137666408] [798] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[137667382] [798] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[137667560] [799] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[137681092] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c +[137681736] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd068e1829c +[137682557] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c +[137682598] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c +[137726977] [800] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[137727558] [800] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[137728184] [800] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[137728291] [801] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[137745235] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 +[137746236] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a89bc00700000000 +[137747266] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 +[137747327] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 +[137764861] [802] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[137765436] [802] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[137766173] [802] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[137766334] [803] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[137825078] [804] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[137826003] [804] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[137826951] [804] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[137827104] [805] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[137865630] [806] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[137866565] [806] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[137867485] [806] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[137867671] [807] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[137927403] [808] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[137928165] [808] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[137928824] [808] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[137929155] [809] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[137965539] [810] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[137966680] [810] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[137967655] [810] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[137967839] [811] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[138027354] [812] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[138028066] [812] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[138028715] [812] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[138028953] [813] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[138063646] [814] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[138064714] [814] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[138065719] [814] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[138065907] [815] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[138181782] [152] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[138182830] [152] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[138183781] [152] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[138183889] [151] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[138183930] [151] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[138183975] [151] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[138184161] [151] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[138184227] [153] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[138287875] [154] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[138288767] [154] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[138289597] [154] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[138289696] [153] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[138289739] [153] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[138289783] [153] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[138289957] [153] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[138290021] [155] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[138738965] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba +[138739999] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd081b80bba +[138740834] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba +[138740876] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba +[138741955] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 +[138742071] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd081d55fd9 +[138742957] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 +[138743026] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 +[138787133] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e +[138788011] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd1b6d9424e +[138788876] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e +[138788931] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e +[138789993] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 +[138790097] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd194dab6d3 +[138790818] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 +[138790874] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 +[138791744] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac +[138791854] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd194f626ac +[138792591] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac +[138792638] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac +[139250485] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 +[139251268] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000043d6c00700000000 +[139252189] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 +[139252228] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 +[140787014] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 +[140788045] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000dc10c10700000000 +[140789047] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 +[140789109] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 +[142220618] [156] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[142221595] [156] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[142222560] [156] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[142222644] [155] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[142222692] [155] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[142222727] [155] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[142222874] [155] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[142222929] [157] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[142244569] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 +[142245167] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000754bc10700000000 +[142245945] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 +[142245984] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 +[142285914] [158] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[142286888] [158] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[142287786] [158] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[142287882] [157] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[142287930] [157] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[142287973] [157] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[142288150] [157] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[142288222] [159] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[142732780] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 +[142733686] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd192e83581 +[142734628] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 +[142734685] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 +[143244609] [816] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[143245280] [816] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[143246082] [816] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[143246244] [817] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[143246343] [818] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[143269001] [819] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[143269953] [819] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[143270936] [819] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[143271120] [820] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[143324856] [821] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[143325789] [821] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[143326763] [821] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[143326957] [822] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[143364940] [823] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[143365942] [823] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[143366928] [823] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[143367118] [824] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[143425006] [825] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[143426058] [825] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[143427008] [825] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[143427209] [826] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[143465060] [827] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[143466096] [827] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[143467092] [827] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[143467269] [828] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[143525168] [829] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[143526204] [829] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[143527153] [829] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[143527334] [830] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[143565253] [831] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[143566332] [831] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[143567329] [831] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[143567517] [832] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[143625558] [833] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[143626550] [833] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[143627355] [833] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[143627510] [834] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[143665052] [835] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143666084] [835] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143667092] [835] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143667248] [836] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143681136] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 +[143681801] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd1abbd7318 +[143682723] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 +[143682775] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 +[143683879] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b +[143683973] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd1abdb181b +[143684760] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b +[143684797] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b +[143730346] [837] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143733873] [837] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143735502] [837] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143736327] [838] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[143745115] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 +[143745931] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000d86c10700000000 +[143746993] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 +[143747045] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 +[143764901] [839] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[143765547] [839] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[143766376] [839] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[143766510] [840] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[143784966] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc +[143785549] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd2e0dcc0fc +[143786313] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc +[143786360] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc +[143787500] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 +[143787585] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd2bef22c82 +[143788325] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 +[143788363] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 +[143789525] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 +[143789624] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd2bee44f72 +[143790650] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 +[143790715] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 +[145263979] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 +[145264755] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a7c0c10700000000 +[145265427] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 +[145265467] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 +[146215744] [160] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[146216567] [160] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[146217337] [160] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[146217423] [159] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[146217487] [159] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[146217516] [159] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[146217643] [159] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[146217688] [161] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[146295914] [162] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[146296892] [162] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[146297650] [162] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[146297717] [161] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[146297752] [161] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[146297783] [161] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[146297930] [161] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[146297970] [163] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[146829334] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 +[146830178] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000041fbc10700000000 +[146830838] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 +[146830872] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 +[147751665] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d +[147752377] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd2bcf70f8d +[147753040] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d +[147753079] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d +[148259930] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 +[148260639] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000da35c20700000000 +[148261460] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 +[148261505] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 +[148776086] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 +[148776652] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd2d5c20d67 +[148777368] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 +[148777402] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 +[148778116] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 +[148778160] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd2d5dfc381 +[148778507] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 +[148778527] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 +[148783806] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 +[148784403] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd40ae0bf14 +[148785182] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 +[148785222] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 +[148786388] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 +[148786477] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd3e8e75899 +[148789262] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 +[148789317] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 +[148790354] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 +[148790448] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd3e8fbc982 +[148791169] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 +[148791205] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 +[148885035] [841] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148887404] [841] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148888814] [841] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148889027] [842] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148926362] [843] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148927223] [843] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148927904] [843] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148928039] [844] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[148984430] [845] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[148985349] [845] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[148986089] [845] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[148986229] [846] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[149041556] [847] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[149042293] [847] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[149042917] [847] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[149043084] [848] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[149084862] [849] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[149085379] [849] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[149085839] [849] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[149085923] [850] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[149126335] [851] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[149126836] [851] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[149127249] [851] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[149127325] [852] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[149186454] [853] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[149187170] [853] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[149187989] [853] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[149188132] [854] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[149224548] [855] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[149225161] [855] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[149225869] [855] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[149226003] [856] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[149283840] [857] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[149284460] [857] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[149285071] [857] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[149285177] [858] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[149324611] [859] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[149325035] [859] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[149325458] [859] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[149325535] [860] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[149391155] [861] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149392002] [861] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149392880] [861] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149393031] [862] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149425178] [863] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149425846] [863] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149426505] [863] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149426630] [864] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[149485178] [865] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[149486269] [865] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[149487340] [865] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[149487530] [866] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[149798361] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 +[149799194] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007270c20700000000 +[149799893] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 +[149799928] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 +[150264015] [164] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[150264854] [164] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[150265742] [164] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[150265828] [163] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[150265881] [163] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[150265924] [163] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[150266098] [163] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[150266154] [165] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[150291947] [166] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[150293053] [166] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[150294013] [166] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[150294106] [165] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[150294149] [165] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[150294196] [165] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[150294378] [165] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[150294450] [167] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[151269996] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 +[151270869] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000cabc20700000000 +[151271822] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 +[151271877] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 +[152767997] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 +[152768820] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd3e70021b2 +[152769707] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 +[152769761] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 +[152770964] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 +[152771070] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a5e5c20700000000 +[152771858] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 +[152771919] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 +[153793351] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 +[153794329] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd3ffc84e63 +[153795210] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 +[153795251] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 +[153796312] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d +[153796399] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd3ffe62c5d +[153797997] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d +[153798042] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d +[153799208] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc +[153799322] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd534e8a1dc +[153800171] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc +[153800219] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc +[153801130] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 +[153801213] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd512e6e0f7 +[153801948] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 +[153801996] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 +[153802893] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a +[153802999] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd512fb554a +[153803736] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a +[153803786] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a +[154201297] [168] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[154202142] [168] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[154202865] [168] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[154202938] [167] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[154202968] [167] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[154203001] [167] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[154203128] [167] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[154203179] [169] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[154245855] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 +[154246951] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003f20c30700000000 +[154247813] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 +[154247849] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 +[154288019] [170] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[154288874] [170] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[154289726] [170] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[154289813] [169] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[154289848] [169] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[154289884] [169] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[154290032] [169] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[154290082] [171] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[154613280] [867] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154614271] [867] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154615016] [867] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154615187] [868] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154644432] [869] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154645569] [869] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154646632] [869] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154646810] [870] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[154684254] [871] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[154685141] [871] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[154686035] [871] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[154686194] [872] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[154744473] [873] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[154745449] [873] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[154746528] [873] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[154746749] [874] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[154786330] [875] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[154787187] [875] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[154788100] [875] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[154788267] [876] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[154848570] [877] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[154849634] [877] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[154850698] [877] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[154850880] [878] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[154887475] [879] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[154888093] [879] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[154888871] [879] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[154889008] [880] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[154944753] [881] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[154945810] [881] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[154946807] [881] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[154947006] [882] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[154984794] [883] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[154985500] [883] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[154986302] [883] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[154986465] [884] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[155044847] [885] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[155045947] [885] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[155046874] [885] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[155047083] [886] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[155086637] [887] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155087393] [887] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155088247] [887] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155088414] [888] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155144998] [889] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155146063] [889] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155147021] [889] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155147227] [890] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[155185576] [891] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[155186188] [891] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[155187001] [891] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[155187147] [892] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[155840033] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 +[155840663] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000da5ac30700000000 +[155841319] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 +[155841350] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 +[157272484] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 +[157273169] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007395c30700000000 +[157273797] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 +[157273838] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 +[157785573] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a +[157786510] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd51102261a +[157787397] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a +[157787446] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a +[158194943] [172] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[158195900] [172] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[158196923] [172] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[158197017] [171] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[158197062] [171] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[158197111] [171] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[158197267] [171] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[158197338] [173] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[158287638] [174] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[158288271] [174] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[158288991] [174] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[158289049] [173] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[158289087] [173] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[158289115] [173] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[158289234] [173] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[158289282] [175] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[158708704] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 +[158709514] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd529cdb932 +[158710215] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 +[158710265] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 +[158711069] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 +[158711136] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd529eb63e8 +[158711702] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 +[158711734] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 +[158746632] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 +[158747517] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000bd0c30700000000 +[158748293] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 +[158748325] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 +[158786771] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 +[158787667] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd65ef6d3f3 +[158788423] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 +[158788454] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 +[158789282] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 +[158789350] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd63d0b53a6 +[158789896] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 +[158789923] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 +[158790566] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 +[158790629] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd63cf6ef45 +[158791145] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 +[158791170] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 +[160280743] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 +[160281386] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a30ac40700000000 +[160281980] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 +[160282010] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 +[160287513] [893] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160287954] [893] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160288537] [893] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160288650] [894] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160345628] [895] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160348137] [895] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160359674] [895] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160362337] [896] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[160385774] [897] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[160387328] [897] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[160387794] [897] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[160387868] [898] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[160449628] [899] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[160452240] [899] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[160453610] [899] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[160454306] [900] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[160486369] [901] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[160487040] [901] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[160487762] [901] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[160487878] [902] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[160546218] [903] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[160546957] [903] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[160547708] [903] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[160547832] [904] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[160586070] [905] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[160586634] [905] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[160587226] [905] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[160587323] [906] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[160646546] [907] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[160647459] [907] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[160648274] [907] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[160648412] [908] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[160686182] [909] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[160686833] [909] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[160687530] [909] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[160687686] [910] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[160746392] [911] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[160747344] [911] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[160748085] [911] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[160748209] [912] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[160786493] [913] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160786947] [913] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160787444] [913] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160787527] [914] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160846553] [915] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160847203] [915] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160847687] [915] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160847783] [916] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[160886296] [917] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[160886982] [917] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[160887702] [917] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[160887818] [918] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[161781200] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 +[161782086] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003c45c40700000000 +[161783041] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 +[161783502] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 +[162280972] [176] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[162281605] [176] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[162282271] [176] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[162282331] [175] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[162282361] [175] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[162282386] [175] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[162285607] [175] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[162285666] [177] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[162295685] [178] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[162296206] [178] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[162296851] [178] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[162296902] [177] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[162296940] [177] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[162296967] [177] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[162297072] [177] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[162297108] [179] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[162685534] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f +[162688308] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd63b09d03f +[162690033] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f +[162690271] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f +[163285949] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 +[163286430] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d47fc40700000000 +[163286884] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 +[163286909] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 +[163724999] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 +[163725828] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd653d383b7 +[163726677] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 +[163726716] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 +[163727686] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f +[163727769] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd653f14d2f +[163728335] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f +[163728359] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f +[163790353] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 +[163791205] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd767078535 +[163792081] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 +[163792120] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 +[163793112] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a +[163793195] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd766f3d16a +[163793914] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a +[163793960] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a +[163795038] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a +[163795144] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd788fb690a +[163795933] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a +[163795978] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a +[164851170] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 +[164851970] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006ebac40700000000 +[164852660] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 +[164852687] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 +[166081902] [919] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[166082858] [919] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[166083799] [919] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[166084494] [920] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[166084999] [921] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[166089478] [922] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[166089927] [922] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[166090499] [922] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[166090582] [923] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[166156066] [924] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[166157236] [924] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[166158371] [924] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[166158549] [925] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[166186046] [180] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[166187003] [180] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[166187968] [180] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[166188116] [179] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[166188166] [179] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[166188230] [179] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[166188416] [179] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[166188484] [181] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[166189792] [926] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[166190299] [926] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[166191081] [926] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[166191202] [927] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[166256187] [928] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[166257234] [928] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[166258265] [928] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[166258467] [929] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[166258699] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 +[166258788] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000007f5c40700000000 +[166259630] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 +[166259676] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 +[166289941] [182] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[166290649] [182] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[166291478] [182] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[166291554] [181] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[166291593] [181] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[166291635] [181] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[166291767] [181] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[166291831] [183] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[166292034] [930] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[166292116] [930] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[166292907] [930] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[166293025] [931] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[166352284] [932] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[166353391] [932] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[166359908] [932] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[166360088] [933] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[166394893] [934] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[166397281] [934] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[166399612] [934] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[166399942] [935] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[166456267] [936] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[166457076] [936] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[166457803] [936] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[166457963] [937] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[166489932] [938] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166490572] [938] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166491255] [938] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166491372] [939] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166550391] [940] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166551292] [940] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166552026] [940] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166552200] [941] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[166592052] [942] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[166592820] [942] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[166593677] [942] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[166595346] [943] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[167707580] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 +[167711009] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd7650c3a10 +[167714056] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 +[167714262] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 +[167751665] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 +[167752703] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a02fc50700000000 +[167753849] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 +[167753897] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 +[168742903] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 +[168743744] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd77ddbf8a9 +[168744410] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 +[168744454] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 +[168745594] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 +[168745700] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd77df9ec48 +[168746517] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 +[168746544] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 +[168787537] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b +[168788379] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd8b2fe3f5b +[168788986] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b +[168789016] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b +[168790078] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa +[168790195] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd8910fdbaa +[168790697] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa +[168790717] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa +[168791621] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 +[168791693] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd890fcf063 +[168792115] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 +[168792144] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 +[169291635] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 +[169292363] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000396ac50700000000 +[169293061] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 +[169293097] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 +[170280254] [184] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[170280838] [184] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[170281436] [184] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[170281506] [183] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[170281533] [183] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[170281563] [183] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[170281977] [183] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[170282266] [185] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[170287691] [186] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[170288142] [186] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[170288775] [186] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[170288820] [185] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[170288852] [185] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[170288879] [185] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[170288964] [185] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[170289000] [187] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[170790771] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 +[170791539] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d2a4c50700000000 +[170793406] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 +[170793441] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 +[171819829] [944] [StateMap] 192.168.2.99:49299 (p_data) 250 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[171823362] [944] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 230 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[171825484] [944] [StateMap] 192.168.2.99:49299 (buffQueue) 250 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[171825768] [945] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[171826073] [946] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[171826120] [947] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[171853757] [948] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[171854627] [948] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[171855263] [948] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[171855383] [949] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[171914931] [950] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[171915867] [950] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[171916876] [950] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[171917045] [951] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[171951916] [952] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[171952974] [952] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[171954006] [952] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[171954227] [953] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[172011748] [954] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[172012514] [954] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[172013377] [954] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[172013510] [955] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[172053782] [956] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[172054625] [956] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[172055716] [956] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[172055889] [957] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[172112009] [958] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[172112699] [958] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[172113212] [958] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[172113340] [959] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[172149947] [960] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[172150601] [960] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[172151147] [960] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[172151351] [961] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[172212143] [962] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172213060] [962] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172213825] [962] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172213958] [963] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172252139] [964] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172252948] [964] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172253677] [964] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172253824] [965] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[172254047] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 +[172254147] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006adfc50700000000 +[172254879] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 +[172255286] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 +[172312045] [966] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[172312893] [966] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[172313795] [966] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[172313928] [967] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[172735929] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 +[172736524] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd88f0c3a67 +[172737280] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 +[172737307] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 +[173687723] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 +[173690049] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd8a7e38658 +[173692399] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 +[173692609] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 +[173694328] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 +[173694443] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd8a800d037 +[173695047] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 +[173695067] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 +[173735306] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 +[173736054] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000031ac60700000000 +[173736495] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 +[173736513] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 +[173791480] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab +[173792444] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd9dcfe36ab +[173793395] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab +[173793431] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab +[173794544] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd +[173794629] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd9bb01eccd +[173795423] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd +[173795457] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd +[173796275] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 +[173796345] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd9bb165803 +[173797116] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 +[173797151] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 +[174220285] [188] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 +[174220551] [188] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 +[174220766] [188] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 +[174220781] [187] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 +[174220791] [187] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 +[174220797] [187] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 +[174220896] [187] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 +[174220972] [189] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 +[174287679] [190] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 +[174287898] [190] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 +[174288136] [190] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 +[174288153] [189] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 +[174288162] [189] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 +[174288172] [189] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 +[174288213] [189] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 +[174288227] [191] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 +[175295156] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 +[175296009] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009d54c60700000000 +[175296844] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 +[175296892] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 +[176832614] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 +[176833115] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000368fc60700000000 +[176833670] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 +[176833697] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 106d3b3..5e35b9a 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -154,14 +154,14 @@ export class FileTransfer extends Service { p_ctx.seek(-4); */ - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "ff-pre", true, svcMsg ); + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "ff-pre", true ); if (p_ctx.sizeLeft() < 100) { p_ctx = fastForward(p_ctx, "666c7478", msgId); } const check = p_ctx.getString(4); - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true, svcMsg ); + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true ); if (check !== MAGIC_MARKER) { Logger.error(msgId,svcMsg, assert(check === MAGIC_MARKER)) } @@ -492,7 +492,7 @@ export interface Source { } //} await this.deviceSources.set(msgDeviceId, devices); - this.downloadDb(msgDeviceId); + //this.downloadDb(msgDeviceId); const testDev = this.deviceSources.get(msgDeviceId); Logger.info(testDev); return result; diff --git a/services/Service.ts b/services/Service.ts index aebc7a4..05022a5 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -54,14 +54,17 @@ export abstract class Service extends EventEmitter { this.parent = p_initMsg.parent; this.serInitMsg = p_initMsg; } - protected isSubMsg(_ctx: ReadContext): string { + protected async isSubMsg(_ctx: ReadContext): Promise { const ctx = _ctx.readRemainingAsNewCtx(); const messageId = ctx.readUInt32() const token = ctx.read(16); const deviceId = deviceIdFromBuff(token); - if (messageId === 0 && this.parent.peers.has(deviceId)) { + + this.testPoint(ctx, deviceId, this.msgId, "isSub", true ); + const hasPeer = await this.parent.peers.has(deviceId) + if (messageId === 0 && hasPeer) { return deviceId } else { @@ -83,7 +86,7 @@ export abstract class Service extends EventEmitter { reject(err); }); - socket.on('data', p_data => { + socket.on('data', async p_data => { //let messages:ReadContext[] = []; let queue: Buffer = this.serviceBuffers.get(ipAddressPort); @@ -97,7 +100,7 @@ export abstract class Service extends EventEmitter { this.testPoint(ttx, deviceId, this.msgId, "p_data", true ); //let queue - const isSub = this.isSubMsg(ttx); + const isSub = await this.isSubMsg(ttx); if (isSub && isSub !== deviceId) { deviceId = isSub } diff --git a/services/StateMap.ts b/services/StateMap.ts index cfb8962..1936ff6 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -137,6 +137,10 @@ export class StateMap extends Service { p_ctx.rewind(); const marker = p_ctx.getString(4); + if (marker !== MAGIC_MARKER) { + this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "magCheck", true); + Logger.error(this.name, msgId) + } assert(marker === MAGIC_MARKER); const type = p_ctx.readUInt32(); switch (type) { From 50b07e953baf555aa456887c2ad3eabbc6422a26 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 17:30:17 -0400 Subject: [PATCH 010/146] DeviceIdClass --- types/DeviceId.ts | 218 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 types/DeviceId.ts diff --git a/types/DeviceId.ts b/types/DeviceId.ts new file mode 100644 index 0000000..c8470b1 --- /dev/null +++ b/types/DeviceId.ts @@ -0,0 +1,218 @@ +import { strict as assert } from 'assert'; +import { type } from 'os'; + +class InvalidDeviceIdError extends Error { + constructor(m?: string) { + super(m || "Error: invalid DeviceId !"); + + // Set the prototype explicitly. + Object.setPrototypeOf(this, InvalidDeviceIdError.prototype); + } + +} +/* +interface deviceId { + str?: string; + arr?: Uint8Array +} + + +type NetworkState = + | NetworkLoadingState + | NetworkFailedState + | NetworkSuccessState + | NetworkFromCachedState; + +*/ + +/* +function getStr(deviceId: string | Uint8Array): string { + switch (typeof deviceId) { + case ('string'): + return deviceId as string; + break; + case ('object'): + return toStr(deviceId) as string + break; + } +} + +function getArray(deviceId: string | Uint8Array): Uint8Array { + switch (typeof deviceId) { + case ('object'): + return deviceId as Uint8Array + break; + case ('string'): + return toArr(deviceId) as Uint8Array; + break; + + } +} + +function toArr(str: string | Uint8Array): Uint8Array { + //const u_str = str.toString().split("-").join()//.match(/.{2}/g) + //let buf = Buffer.from(u_str, 'hex') + return Buffer.from(str.toString().split("-").join(), 'hex') +} + +function toStr(arr:Uint8Array | string): string { + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(arr).toString('hex')).splice(1).join('-'); +} +*/ + +// export +export class DeviceId { + protected m_str: string; + protected m_array: Uint8Array; + + constructor(deviceId: string | Uint8Array) { + + this.m_str = this.forceString(deviceId); + this.m_array = this.forceArray(deviceId); + + + let reg:RegExp = new RegExp("[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}", "i") + if(!reg.test(this.m_str)) + throw new InvalidDeviceIdError(); + } + + + toString() { + return this.m_str; + } + toBuffer() { + return this.m_array; + } + + private forceString(deviceId: string | Uint8Array): string { + switch (typeof deviceId) { + case ('string'): + return deviceId as string; + break; + case ('object'): + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId).toString('hex')).splice(1).join('-') as string + //return toStr(deviceId) as string + break; + } + } + + private forceArray(deviceId: string | Uint8Array): Uint8Array { + switch (typeof deviceId) { + case ('object'): + return deviceId as Uint8Array + break; + case ('string'): + return Buffer.from(deviceId.toString().split("-").join(), 'hex') as Uint8Array + //return toArr(deviceId) as Uint8Array; + break; + + } + } + + /* + private toArr(str: string | Uint8Array): Uint8Array { + //const u_str = str.toString().split("-").join()//.match(/.{2}/g) + //let buf = Buffer.from(u_str, 'hex') + return Buffer.from(str.toString().split("-").join(), 'hex') + } + + private toStr(arr:Uint8Array | string): string { + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(arr).toString('hex')).splice(1).join('-'); + } + + + format(str: string): string { + assert(str.length === 32); + + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(str).toString('hex')).splice(1).join('-'); + } + */ + + private static format(str: string): string { + assert(str.length === 32); + + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(str).toString('hex')).splice(1).join('-'); + } + + private static newUuid(version?:number) :DeviceId + { + version = version || 4; + + + // your favourite guid generation function could go here + // ex: http://stackoverflow.com/a/8809472/188246 + let d = new Date().getTime(); + if (window.performance && typeof window.performance.now === "function") { + d += performance.now(); //use high-precision timer if available + } + let uuid:string = ('xxxxxxxx-xxxx-' + version.toString().substr(0,1) + 'xxx-yxxx-xxxxxxxxxxxx').replace(/[xy]/g, (c) => { + let r = (d + Math.random() * 16) % 16 | 0; + d = Math.floor(d/16); + return (c=='x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + + return new DeviceId(uuid); + } +} + +export function deviceIdFromBuff(token: Uint8Array): string { + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); +} + + +function getProduct(id: DeviceId) { + alert(id); // alerts "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" +} + + +//const guid2 = new UUID(); +//console.log(guid2.toString()); // some guid string + + +//const guid = new UUID("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"); +//getProduct(guid); // ok +//getProduct("notGuidbutJustString"); // errors, good + + +type OptionalRecord = Record | undefined + +type Uuid = string & { __uuidBrand: T } + +type Product = { + id: Uuid + name: string +} + +type ProductId = Product['id'] + +function uuid(value: string) { + return value as Uuid +} + +function productId(value: string) { + return uuid(value) +} + +function funcWithProductIdArg(productId: ProductId) { + // do something + return productId +} + +//const concreteProductId = productId('123e4567-e89b-12d3-a456-426614174000') + +// compiles + +//funcWithProductIdArg(concreteProductId) + +// Argument of type 'string' is not assignable to parameter of type 'ProductId'. +// Type 'string' is not assignable to type '{ __uuidBrand: Product; }'.(2345) +// +// * @ts-expect-error Not a ProductId. + +//funcWithProductIdArg('123e4567-e89b-12d3-a456-426614174000') \ No newline at end of file From aaaba4be037965d4ca45fda7e5c120f13c0ee04d Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 17:30:35 -0400 Subject: [PATCH 011/146] okay, fixed I think. cept getFile --- StageLinq/index.ts | 11 +- cli/index.ts | 2 +- log.txt | 4149 ++--------------------------------- network/StageLinqDevices.ts | 75 +- network/announce.ts | 6 +- network/index.ts | 2 +- services/Directory.ts | 40 +- services/FileTransfer.ts | 73 +- services/Service.ts | 216 +- services/StateMap.ts | 18 +- types/index.ts | 12 +- types/tokens.ts | 2 + utils/ReadContext.ts | 6 + 13 files changed, 522 insertions(+), 4090 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 91b83d7..4195604 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -2,7 +2,7 @@ import { announce, createDiscoveryMessage, StageLinqListener, unannounce } from import { EventEmitter } from 'events'; import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; -import { Action, ActingAsDevice, StageLinqOptions, deviceIdFromBuff } from '../types'; +import { Action, ActingAsDevice, StageLinqOptions, deviceIdFromBuff, DeviceId } from '../types'; import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -42,8 +42,13 @@ export class StageLinq extends EventEmitter { //Logger.warn(msg); this.listener.listenForDevices(async (connectionInfo) => { //await this.devices.handleDevice(connectionInfo); - const deviceId = deviceIdFromBuff(connectionInfo.token); - if (!this.devices.peers.has(deviceId) || this.devices.peers.get(deviceId).port !== connectionInfo.port) { + + const deviceId = new DeviceId(connectionInfo.token); + //const deviceId = deviceIdFromBuff(connectionInfo.token); + //const ipAddressPort = [connectionInfo.address,connectionInfo.port].join(':'); + this.devices._peers[connectionInfo.address] = deviceId; + + if (!this.devices.peers.has(deviceId.toString()) || this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port) { this.devices.peers.set(deviceIdFromBuff(connectionInfo.token), connectionInfo); //Logger.debug(deviceId, connectionInfo); } diff --git a/cli/index.ts b/cli/index.ts index b47937d..7a7b10e 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -72,7 +72,7 @@ async function main() { actingAs: ActingAsDevice.NowPlaying, services: [ - Services.StateMap, + //Services.StateMap, Services.FileTransfer, Services.Directory, ], diff --git a/log.txt b/log.txt index 0f9cff9..0f4ea42 100644 --- a/log.txt +++ b/log.txt @@ -1,3993 +1,158 @@ -[49] [BEGIN] +[40] [BEGIN] -[13850] Announced myself on 51439 -[36837] [Directory] connection from 192.168.2.84:49711 -[38061] [Directory] connection from 192.168.2.84:44231 -[38633] [Directory] connection from 192.168.2.84:36965 -[39159] [Directory] connection from 192.168.2.83:49707 -[40078] [1] [Directory] 192.168.2.84:49711 (p_data) 20 0000000227ad20951ef64d119fd690d285032922 -[40330] [1] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 0 -[40605] [1] [Directory] 192.168.2.84:49711 (buffQueue) 20 0000000227ad20951ef64d119fd690d285032922 -[40625] [1] [Directory] 192.168.2.84:49711 (toparse) 20 0000000227ad20951ef64d119fd690d285032922 -[41713] [2] [Directory] 192.168.2.84:44231 (p_data) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[41775] [2] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 0 -[41964] [2] [Directory] 192.168.2.84:44231 (buffQueue) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[41981] [2] [Directory] 192.168.2.84:44231 (toparse) 20 000000021e6c417ab6744c87b4aafb7ad2298976 -[42137] [3] [Directory] 192.168.2.84:36965 (p_data) 20 00000002bfd411d804794da8aeac8430b69067fe -[42160] [3] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 0 -[42313] [3] [Directory] 192.168.2.84:36965 (buffQueue) 20 00000002bfd411d804794da8aeac8430b69067fe -[42329] [3] [Directory] 192.168.2.84:36965 (toparse) 20 00000002bfd411d804794da8aeac8430b69067fe -[42470] [4] [Directory] 192.168.2.83:49707 (p_data) 20 0000000221ffc994f8c84729aef346f9808373ed -[42492] [4] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 0 -[42636] [4] [Directory] 192.168.2.83:49707 (buffQueue) 20 0000000221ffc994f8c84729aef346f9808373ed -[42650] [4] [Directory] 192.168.2.83:49707 (toparse) 20 0000000221ffc994f8c84729aef346f9808373ed -[43981] [Directory] connection from 192.168.2.83:41865 -[44495] [Directory] connection from 192.168.2.83:41047 -[44748] [5] [Directory] 192.168.2.83:41865 (p_data) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[44775] [5] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 0 -[44915] [5] [Directory] 192.168.2.83:41865 (buffQueue) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[44928] [5] [Directory] 192.168.2.83:41865 (toparse) 20 00000002a2ca1e3196254619a81fe871ad442c5d -[45067] [6] [Directory] 192.168.2.83:41047 (p_data) 20 000000024be141125ead4848a07db37ca8a7220e -[45088] [6] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 0 -[45216] [6] [Directory] 192.168.2.83:41047 (buffQueue) 20 000000024be141125ead4848a07db37ca8a7220e -[45226] [6] [Directory] 192.168.2.83:41047 (toparse) 20 000000024be141125ead4848a07db37ca8a7220e -[109491] [Directory] connection from 192.168.2.99:49298 -[109755] [7] [Directory] 192.168.2.99:49298 (p_data) 20 000000020000000000000000800000059501ab6f -[109867] [7] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 0 -[110036] [7] [Directory] 192.168.2.99:49298 (buffQueue) 20 000000020000000000000000800000059501ab6f -[110048] [7] [Directory] 192.168.2.99:49298 (toparse) 20 000000020000000000000000800000059501ab6f -[294045] [Directory] sent ServiceAnnouncement to 192.168.2.84:49711 -[295070] [Directory] sent ServiceAnnouncement to 192.168.2.84:44231 -[295885] [Directory] sent ServiceAnnouncement to 192.168.2.84:36965 -[296579] [Directory] sent ServiceAnnouncement to 192.168.2.83:49707 -[297729] [Directory] sent ServiceAnnouncement to 192.168.2.83:41865 -[298563] [Directory] sent ServiceAnnouncement to 192.168.2.83:41047 -[311123] [FileTransfer] connection from 192.168.2.84:45931 -[312553] [1] [FileTransfer] 192.168.2.84:45931 (p_data) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[312730] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[312955] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[313105] [1] [FileTransfer] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[313425] [0] [FileTransfer] undefined (preSvc) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[313444] [0] [FileTransfer] undefined (postSvc) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[313458] [0] [FileTransfer] undefined (ff-pre) 70 0000000027ad20951ef64d119fd690d2850329220000001800460069006c0065005400720061006e0073006600650072b36b00000010666c74780000000000000008ffffffff -[315096] [0] fastForwarded 58 bytes -[315144] [0] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff -[316158] [FileTransfer] connection from 192.168.2.84:38535 -[316904] [FileTransfer] connection from 192.168.2.84:51929 -[317608] [FileTransfer] connection from 192.168.2.83:37339 -[318274] [FileTransfer] connection from 192.168.2.83:32915 -[318902] [FileTransfer] connection from 192.168.2.83:56419 -[319594] [StateMap] connection from 192.168.2.84:60179 -[320366] [StateMap] connection from 192.168.2.83:33277 -[320782] [2] [FileTransfer] 192.168.2.84:38535 (p_data) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[320835] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[321066] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[321094] [2] [FileTransfer] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[321113] [1] [FileTransfer] undefined (preSvc) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[321127] [1] [FileTransfer] undefined (postSvc) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[321141] [1] [FileTransfer] undefined (ff-pre) 70 00000000bfd411d804794da8aeac8430b69067fe0000001800460069006c0065005400720061006e0073006600650072968700000010666c74780000000000000008ffffffff -[322103] [1] fastForwarded 58 bytes -[322148] [1] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff -[322269] [3] [FileTransfer] 192.168.2.84:51929 (p_data) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322301] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 52 0000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322511] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322538] [3] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322553] [2] [FileTransfer] undefined (preSvc) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322565] [2] [FileTransfer] undefined (postSvc) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[322579] [2] [FileTransfer] undefined (ff-pre) 72 000000001e6c417ab6744c87b4aafb7ad22989760000001800460069006c0065005400720061006e0073006600650072cad900000012666c74780000000000000008000000020032 -[323192] [2] fastForwarded 58 bytes -[323219] [2] [FileTransfer] undefined (mag-post) 14 0000000000000008000000020032 -[324062] requesting sources from -[324550] [4] [FileTransfer] 192.168.2.83:37339 (p_data) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324589] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 50 0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324764] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324786] [4] [FileTransfer] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324802] [3] [FileTransfer] undefined (preSvc) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324820] [3] [FileTransfer] undefined (postSvc) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[324844] [3] [FileTransfer] undefined (ff-pre) 70 00000000a2ca1e3196254619a81fe871ad442c5d0000001800460069006c0065005400720061006e007300660065007291db00000010666c74780000000000000008ffffffff -[325458] [3] fastForwarded 58 bytes -[325483] [3] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff -[325559] [5] [FileTransfer] 192.168.2.83:32915 (p_data) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325584] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 50 0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325753] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325776] [5] [FileTransfer] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325789] [4] [FileTransfer] undefined (preSvc) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325802] [4] [FileTransfer] undefined (postSvc) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[325813] [4] [FileTransfer] undefined (ff-pre) 70 0000000021ffc994f8c84729aef346f9808373ed0000001800460069006c0065005400720061006e0073006600650072809300000010666c74780000000000000008ffffffff -[326423] [4] fastForwarded 58 bytes -[326451] [4] [FileTransfer] undefined (mag-post) 12 0000000000000008ffffffff -[326525] [6] [FileTransfer] 192.168.2.83:56419 (p_data) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326550] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 72 0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326715] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326738] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326751] [5] [FileTransfer] undefined (preSvc) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326762] [5] [FileTransfer] undefined (postSvc) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[326772] [5] [FileTransfer] undefined (ff-pre) 92 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072dc6300000012666c7478000000000000000800000002003100000010666c747800000076000007d200000000 -[327372] [5] fastForwarded 58 bytes -[327395] [5] [FileTransfer] undefined (mag-post) 34 000000000000000800000002003100000010666c747800000076000007d200000000 -[327792] requesting sources from -[328131] [1] [StateMap] 192.168.2.84:60179 (p_data) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 -[328165] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 22 0000001000530074006100740065004d00610070eb13 -[328347] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 -[328372] [1] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d00610070eb13 -[328976] Sending Statemap subscriptions to 192.168.2.84:60179 -[332755] [2] [StateMap] 192.168.2.83:33277 (p_data) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd -[332814] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 22 0000001000530074006100740065004d0061007081fd -[333002] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd -[333030] [2] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d0061007081fd -[333616] Sending Statemap subscriptions to 192.168.2.83:33277 -[338176] [7] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 72 00000010666c74780000009c000007d20000000000000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff -[338244] [7] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 52 00000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff -[338424] [7] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 72 00000010666c74780000009c000007d20000000000000013666c747800000000000000030000000001010100000019666c7478000000000000000201000000007fffffffffffffff -[338457] [6] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[338467] [6] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[338477] [6] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[338514] [6] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[338549] [8] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[338565] [6] [FileTransfer] undefined (preSvc) 19 666c7478000000000000000300000000010101 -[338577] [6] [FileTransfer] undefined (postSvc) 19 666c7478000000000000000300000000010101 -[338586] [6] [FileTransfer] undefined (ff-pre) 19 666c7478000000000000000300000000010101 -[338619] [6] [FileTransfer] undefined (mag-post) 15 000000000000000300000000010101 -[338728] [9] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 19 666c7478000000000000000300000000010101 -[338744] [6] [FileTransfer] undefined (preSvc) 25 666c7478000000000000000201000000007fffffffffffffff -[338754] [6] [FileTransfer] undefined (postSvc) 25 666c7478000000000000000201000000007fffffffffffffff -[338764] [6] [FileTransfer] undefined (ff-pre) 25 666c7478000000000000000201000000007fffffffffffffff -[338791] [6] [FileTransfer] undefined (mag-post) 21 000000000000000201000000007fffffffffffffff -[338808] [10] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 25 666c7478000000000000000201000000007fffffffffffffff -[338847] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff -[338869] [11] [FileTransfer] 666c7478-0000-0000-0000-000300000001 (isSub) 64 0000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff -[339021] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 84 00000033666c74780000000000000003000000010000001c0048004f004e00550053005a0020002800550053004200200031002901010100000019666c7478000000000000000201000000007fffffffffffffff -[339040] [10] [FileTransfer] undefined (preSvc) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[339051] [10] [FileTransfer] undefined (postSvc) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[339067] [10] [FileTransfer] undefined (ff-pre) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[339095] [10] [FileTransfer] undefined (mag-post) 47 0000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[340462] getting sources for -[341082] [12] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[341106] [10] [FileTransfer] undefined (preSvc) 25 666c7478000000000000000201000000007fffffffffffffff -[341119] [10] [FileTransfer] undefined (postSvc) 25 666c7478000000000000000201000000007fffffffffffffff -[341129] [10] [FileTransfer] undefined (ff-pre) 25 666c7478000000000000000201000000007fffffffffffffff -[341162] [10] [FileTransfer] undefined (mag-post) 21 000000000000000201000000007fffffffffffffff -[341178] [13] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff -[342829] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 422 00000072736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[343191] [3] [StateMap] 736d6161-0000-0000-0000-0034002f0043 (isSub) 402 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[343389] [3] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 422 00000072736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d00000094736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[343488] [4] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[343974] [2] 192.168.2.83:33277 /Client/Preferences/Player => {"string":"1","type":4} -[344042] [5] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[344373] [2] 192.168.2.83:33277 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[344435] [6] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[344741] [2] 192.168.2.83:33277 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[346889] [7] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1548 00000072736d61610000000000000034002f0043... -[347033] [7] [StateMap] 736d6161-0000-0000-0000-0034002f0043 (isSub) 1528 006c00690065006e0074002f0050007200650066... -[347209] [7] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1548 00000072736d61610000000000000034002f0043... -[347274] [8] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d -[347764] [6] 192.168.2.84:60179 /Client/Preferences/Player => {"string":"2","type":4} -[347847] [9] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[348175] [6] 192.168.2.84:60179 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[348232] [10] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[348540] [6] 192.168.2.84:60179 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[348600] [11] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[348898] [6] 192.168.2.84:60179 /Engine/Master/MasterTempo => {"type":0,"value":122} -[348949] [12] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[349250] [6] 192.168.2.84:60179 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[349293] [13] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[349589] [6] 192.168.2.84:60179 /Engine/Deck1/Play => {"state":false,"type":1} -[349637] [14] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[349923] [6] 192.168.2.84:60179 /Engine/Deck1/PlayState => {"state":false,"type":1} -[349972] [15] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 136 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d00650000003c007b00220073007400720069006e00670022003a00220062006c0061006b0074006f006e00650022002c002200740079007000650022003a0038007d -[350257] [6] 192.168.2.84:60179 /Engine/Deck1/Track/ArtistName => {"string":"blaktone","type":8} -[350341] [16] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 388 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[350672] [6] 192.168.2.84:60179 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} -[350716] [17] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[350990] [6] 192.168.2.84:60179 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[351172] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1448 000000a4736d61610000000000000038002f0045... -[351209] [18] [StateMap] 736d6161-0000-0000-0000-0038002f0045 (isSub) 1428 006e00670069006e0065002f004400650063006b... -[351371] [18] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1448 000000a4736d61610000000000000038002f0045... -[351425] [19] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 164 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d00650000005c007b00220073007400720069006e00670022003a002200450078004d0061006300680069006e006500200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[351826] [17] 192.168.2.84:60179 /Engine/Deck1/Track/SongName => {"string":"ExMachine (Original Mix)","type":8} -[351879] [20] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[352183] [17] 192.168.2.84:60179 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[352270] [21] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 374 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d00650000012c007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0062006c0061006b0074006f006e0065002f004d006500720069006e00200045005000200056006f006c002e0033002f00310035003900340030003000380037005f00450078004d0061006300680069006e0065005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[352556] [17] 192.168.2.84:60179 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/blaktone/Merin EP Vol.3/15940087_ExMachine_(Original Mix).mp3","type":8} -[352598] [22] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[352874] [17] 192.168.2.84:60179 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} -[352918] [23] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[353206] [17] 192.168.2.84:60179 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[353247] [24] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[353519] [17] 192.168.2.84:60179 /Engine/Deck2/Play => {"state":false,"type":1} -[353566] [25] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[353834] [17] 192.168.2.84:60179 /Engine/Deck2/PlayState => {"state":false,"type":1} -[353878] [26] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[354157] [17] 192.168.2.84:60179 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[354203] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[354473] [17] 192.168.2.84:60179 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[354495] [27] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toqueue) 62 0000007c736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e -[354624] [14] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354653] [14] [FileTransfer] 666c7478-0000-0000-0000-000101000000 (isSub) 49 66448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354802] [14] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 69 00000041666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354821] [13] [FileTransfer] undefined (preSvc) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354831] [13] [FileTransfer] undefined (postSvc) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354843] [13] [FileTransfer] undefined (ff-pre) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354873] [13] [FileTransfer] undefined (mag-post) 61 00000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[354901] [15] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d50210d6d00000000000002588d4044aa200000000000000041000 -[357481] [object Object] -[357662] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1040 0000008e736d61610000000000000034002f0045... -[357885] [28] [StateMap] 736d6161-0000-0000-0000-0034002f0045 (isSub) 1020 006e00670069006e0065002f004d006100730074... -[358050] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1040 0000008e736d61610000000000000034002f0045... -[358116] [29] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[358526] [27] 192.168.2.83:33277 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[358580] [30] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[358874] [27] 192.168.2.83:33277 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[358913] [31] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[359203] [27] 192.168.2.83:33277 /Engine/Deck1/Play => {"state":false,"type":1} -[359246] [32] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[359518] [27] 192.168.2.83:33277 /Engine/Deck1/PlayState => {"state":false,"type":1} -[359565] [33] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[359823] [27] 192.168.2.83:33277 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[359901] [34] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[360155] [27] 192.168.2.83:33277 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[360795] [Directory] sent ServiceAnnouncement to 192.168.2.99:49298 -[360896] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 672 0067004c006f006100640065006400000030007b... -[360930] [35] [StateMap] 006f0061-0064-0065-0064-00000030007b (isSub) 652 0022007300740061007400650022003a00660061... -[361095] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 672 0067004c006f006100640065006400000030007b... -[361112] [35] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toqueue) 672 0067004c006f006100640065006400000030007b... -[361986] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1928 0000007a736d6161000000000000003c002f0045... -[362020] [36] [StateMap] 736d6161-0000-0000-0000-003c002f0045 (isSub) 1908 006e00670069006e0065002f004400650063006b... -[362183] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1928 0000007a736d6161000000000000003c002f0045... -[362232] [37] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[362632] [35] 192.168.2.83:33277 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[362681] [38] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[362950] [35] 192.168.2.83:33277 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[362992] [39] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[363251] [35] 192.168.2.83:33277 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[363319] [40] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[363571] [35] 192.168.2.83:33277 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[363611] [41] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[363856] [35] 192.168.2.83:33277 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[363893] [42] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[364140] [35] 192.168.2.83:33277 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[364174] [43] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[364413] [35] 192.168.2.83:33277 /Engine/Deck2/Play => {"state":false,"type":1} -[364451] [44] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[364697] [35] 192.168.2.83:33277 /Engine/Deck2/PlayState => {"state":false,"type":1} -[364733] [45] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[364968] [35] 192.168.2.83:33277 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[365005] [46] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[365251] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[365290] [47] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[365549] [35] 192.168.2.83:33277 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[365588] [48] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[365834] [35] 192.168.2.83:33277 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[365870] [49] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[366111] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[366148] [50] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[366396] [35] 192.168.2.83:33277 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[367927] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 238 0000006c736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[368065] [51] [StateMap] 736d6161-0000-0000-0000-0030002f0045 (isSub) 218 006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[368217] [51] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 238 0000006c736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[368264] [52] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[368936] [50] 192.168.2.83:33277 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[368984] [53] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[369901] [50] 192.168.2.83:33277 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[376256] [StateMap] connection from 192.168.2.99:49299 -[376452] [54] [StateMap] 192.168.2.99:49299 (p_data) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b -[376749] [54] [StateMap] 00000000-0000-0000-8000-00059501ab6f (isSub) 22 0000001000530074006100740065004d00610070c35b -[376895] [54] [StateMap] 192.168.2.99:49299 (buffQueue) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b -[378673] StateMap 54 192.168.2.99:49299 TypeError: Cannot read property 'buffer' of null -[467861] [55] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[468068] [55] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[468277] [55] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[468457] [56] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[525927] [57] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[526124] [57] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[526356] [57] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[526434] [58] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[567988] [59] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[568233] [59] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[568527] [59] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[568596] [60] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[626157] [61] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[626490] [61] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[626857] [61] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[626953] [62] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[666116] [63] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[666422] [63] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[666765] [63] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[666848] [64] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[728391] [65] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[729138] [65] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[729795] [65] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[729953] [66] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[766704] [67] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[767729] [67] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[768773] [67] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[769008] [68] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[828549] [69] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[829517] [69] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[830465] [69] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[830684] [70] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[866460] [71] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[866933] [71] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[867488] [71] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[867623] [72] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[926752] [73] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[927354] [73] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[927936] [73] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[928124] [74] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[967218] [75] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[968217] [75] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[969309] [75] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[969591] [76] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1031105] [77] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1031424] [77] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1031820] [77] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1031944] [78] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1066819] [79] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[1067382] [79] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[1067989] [79] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[1068184] [80] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[1226704] [8] [Directory] 192.168.2.99:49298 (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 -[1226889] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000045c7ab0700000000 -[1227064] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 -[1227075] [8] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000045c7ab0700000000 -[2340547] [16] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[2341451] [16] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[2342350] [16] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[2342480] [15] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[2342554] [15] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[2342622] [15] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[2342827] [15] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[2342945] [17] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[2343176] [18] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[2343291] [18] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[2344132] [18] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[2344238] [17] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[2344315] [17] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[2344390] [17] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[2344578] [17] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[2344691] [19] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[2750355] [9] [Directory] 192.168.2.83:41047 (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 -[2751173] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb0fa4f5bc6 -[2751975] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 -[2752057] [9] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb0fa4f5bc6 -[2752903] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 -[2752982] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000df01ac0700000000 -[2753463] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 -[2753505] [10] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000df01ac0700000000 -[3771509] [11] [Directory] 192.168.2.83:41865 (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 -[3771854] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb113167a68 -[3772183] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 -[3772212] [11] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb113167a68 -[3772642] [12] [Directory] 192.168.2.83:49707 (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 -[3772685] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb113343f51 -[3772935] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 -[3772957] [12] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb113343f51 -[3785260] [13] [Directory] 192.168.2.84:49711 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c -[3785507] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb2264d066c -[3785800] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c -[3785823] [13] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb2264d066c -[3786192] [14] [Directory] 192.168.2.84:36965 (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b -[3786235] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb22639eb4b -[3786496] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b -[3786516] [14] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb22639eb4b -[3786821] [15] [Directory] 192.168.2.84:44231 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 -[3786864] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb248418532 -[3787134] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 -[3787155] [15] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb248418532 -[4230289] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 -[4230790] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000783cac0700000000 -[4231351] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 -[4231403] [16] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000783cac0700000000 -[5573799] [81] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 1144 00000058736d6161000007d200000048002f0045... -[5574934] [81] [StateMap] 736d6161-0000-07d2-0000-0048002f0045 (isSub) 1124 006e00670069006e0065002f004400650063006b... -[5575925] [81] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 1144 00000058736d6161000007d200000048002f0045... -[5577381] [82] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5577540] [83] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5577665] [84] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5577793] [85] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5577938] [86] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5578143] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5578304] [88] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5578435] [89] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5578562] [90] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5578718] [91] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5578834] [92] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff -[5578958] [93] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff -[5579056] [94] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff -[5579150] [95] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff -[5579680] [96] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 874 00000058736d6161000007d200000048002f0045... -[5579794] [96] [StateMap] 736d6161-0000-07d2-0000-0048002f0045 (isSub) 854 006e00670069006e0065002f004400650063006b... -[5580902] [96] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 874 00000058736d6161000007d200000048002f0045... -[5581428] [97] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5581608] [98] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5581695] [99] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5581789] [100] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5581901] [101] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5582033] [102] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5582115] [103] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5582186] [104] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5582298] [105] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5582439] [106] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5584563] [107] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 2686 00000042736d6161000007d200000032002f0045... -[5585608] [107] [StateMap] 736d6161-0000-07d2-0000-0032002f0045 (isSub) 2666 006e00670069006e0065002f004400650063006b... -[5586174] [107] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 2686 00000042736d6161000007d200000032002f0045... -[5586281] [108] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff -[5586357] [109] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff -[5586430] [110] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff -[5586497] [111] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff -[5586566] [112] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff -[5586646] [113] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5586715] [114] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5586788] [115] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5586857] [116] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5586934] [117] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5587003] [118] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5587065] [119] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5587138] [120] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5587190] [121] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5587250] [122] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5587304] [123] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff -[5587354] [124] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff -[5587412] [125] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff -[5587463] [126] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff -[5587514] [127] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff -[5587581] [128] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5587637] [129] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5587694] [130] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5587749] [131] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5587810] [132] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5587870] [133] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5587931] [134] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5587988] [135] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5588039] [136] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5588108] [137] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5588158] [138] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff -[5588212] [139] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff -[5588276] [140] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff -[5588338] [141] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff -[5588483] [142] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 3256 0000003c736d6161000007d20000002c002f0045... -[5588559] [142] [StateMap] 736d6161-0000-07d2-0000-002c002f0045 (isSub) 3236 006e00670069006e0065002f004400650063006b... -[5588928] [142] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 3256 0000003c736d6161000007d20000002c002f0045... -[5589004] [143] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff -[5589062] [144] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5589120] [145] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5589189] [146] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5589242] [147] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5589313] [148] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5589376] [149] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5589438] [150] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5589493] [151] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5589550] [152] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5589607] [153] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5589667] [154] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff -[5589718] [155] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff -[5589773] [156] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff -[5589835] [157] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff -[5589885] [158] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff -[5589943] [159] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5590003] [160] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5590064] [161] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5591644] [162] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5591717] [163] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5591780] [164] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5591839] [165] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5591893] [166] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5591950] [167] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5592007] [168] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5592067] [169] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff -[5592121] [170] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff -[5592171] [171] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff -[5592224] [172] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff -[5592274] [173] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff -[5592338] [174] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5592418] [175] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5592475] [176] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5592531] [177] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5592611] [178] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5592689] [179] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5592749] [180] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5592806] [181] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5592834] [181] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 66 00000046736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f -[5593144] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 792 0063006bffffffff00000056736d6161000007d2... -[5593216] [182] [StateMap] ffffffff-0000-0056-736d-6161000007d2 (isSub) 772 00000046002f0045006e00670069006e0065002f... -[5593614] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 792 0063006bffffffff00000056736d6161000007d2... -[5593661] [182] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 792 0063006bffffffff00000056736d6161000007d2... -[5593748] [183] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 1516 0000003c736d6161000007d20000002c002f0045... -[5593807] [183] [StateMap] 736d6161-0000-07d2-0000-002c002f0045 (isSub) 1496 006e00670069006e0065002f004400650063006b... -[5594167] [183] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 1516 0000003c736d6161000007d20000002c002f0045... -[5594239] [184] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff -[5594314] [185] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5594371] [186] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5594445] [187] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5594502] [188] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5594564] [189] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5594635] [190] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5594690] [191] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5594755] [192] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5594808] [193] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5594885] [194] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5594955] [195] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff -[5595010] [196] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff -[5595087] [197] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff -[5595138] [198] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff -[5595200] [199] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff -[5595248] [200] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff -[5595301] [201] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff -[5595375] [202] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff -[5599276] [203] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 116 00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5599955] [203] [StateMap] 736d6161-0000-07d2-0000-0060002f0043 (isSub) 96 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5600312] [203] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 116 00000070736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5600763] [204] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[5727343] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 -[5727913] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001177ac0700000000 -[5728775] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 -[5728844] [17] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001177ac0700000000 -[6188352] [205] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6189465] [205] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6190679] [205] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6190912] [206] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6229759] [207] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6230685] [207] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6231853] [207] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6232032] [208] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6290570] [20] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[6291758] [20] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[6292947] [20] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[6293092] [19] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[6293171] [19] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[6293278] [19] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[6293571] [19] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[6293684] [21] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[6293935] [209] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[6294036] [209] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[6294717] [209] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[6294851] [210] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[6295062] [22] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[6295150] [22] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[6295742] [22] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[6295816] [21] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[6295869] [21] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[6295957] [21] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[6296062] [21] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[6296110] [23] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[6328286] [211] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[6329126] [211] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[6330000] [211] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[6330254] [212] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[6388410] [213] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[6389493] [213] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[6390434] [213] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[6390659] [214] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[6430203] [215] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[6430922] [215] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[6431877] [215] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[6432137] [216] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[6488609] [217] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[6489622] [217] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[6490833] [217] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[6491080] [218] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[6528658] [219] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[6529468] [219] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[6530667] [219] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[6530823] [220] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[6588368] [221] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[6588820] [221] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[6589251] [221] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[6589332] [222] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[6628260] [223] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[6628658] [223] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[6629116] [223] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[6629201] [224] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[6689709] [225] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6690155] [225] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6690625] [225] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6690713] [226] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6728438] [227] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6728893] [227] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6729448] [227] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6729545] [228] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6788386] [229] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[6788660] [229] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[6788915] [229] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[6788961] [230] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[7229452] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 -[7230532] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a9b1ac0700000000 -[7231673] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 -[7231771] [18] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a9b1ac0700000000 -[7681887] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 -[7682973] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb22447a577 -[7684108] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 -[7684226] [19] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb22447a577 -[8792230] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 -[8792681] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb23d1ec732 -[8793181] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 -[8793229] [20] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb23d1ec732 -[8793862] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f -[8793919] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb23d3cce2f -[8794314] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f -[8794347] [21] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb23d3cce2f -[8794801] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 -[8794872] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000041ecac0700000000 -[8795213] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 -[8795240] [22] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041ecac0700000000 -[8795642] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 -[8795690] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb3503dfbb9 -[8796013] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 -[8796039] [23] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb3503dfbb9 -[8796427] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 -[8796548] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb350526ca1 -[8797145] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 -[8797201] [24] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb350526ca1 -[8797741] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 -[8797885] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb372467856 -[8798409] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 -[8798445] [25] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb372467856 -[10228348] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 -[10229418] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000db26ad0700000000 -[10230376] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 -[10230466] [26] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000db26ad0700000000 -[10249933] [24] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[10250614] [24] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[10251472] [24] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[10251629] [23] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[10251713] [23] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[10251779] [23] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[10252106] [23] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[10252204] [25] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[10288474] [26] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[10289492] [26] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[10290692] [26] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[10290843] [25] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[10290945] [25] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[10291046] [25] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[10291295] [25] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[10291469] [27] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[11761237] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 -[11762568] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007361ad0700000000 -[11763160] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 -[11763249] [27] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007361ad0700000000 -[11889595] [231] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11890029] [231] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11890479] [231] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11890615] [232] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11952028] [233] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11952989] [233] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11953656] [233] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11953838] [234] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11990198] [235] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[11991325] [235] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[11992378] [235] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[11992704] [236] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[12052087] [237] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[12052739] [237] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[12053179] [237] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[12053356] [238] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[12090278] [239] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[12091296] [239] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[12092310] [239] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[12092579] [240] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[12152441] [241] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[12153671] [241] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[12154728] [241] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[12154981] [242] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[12190230] [243] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[12191194] [243] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[12192259] [243] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[12192526] [244] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[12250434] [245] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[12251583] [245] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[12252618] [245] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[12252884] [246] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[12290457] [247] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[12293342] [247] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[12294384] [247] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[12294611] [248] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[12350553] [249] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[12351708] [249] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[12352901] [249] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[12353238] [250] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[12390225] [251] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12391327] [251] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12392413] [251] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12392692] [252] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12452648] [253] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12453798] [253] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12454679] [253] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12454914] [254] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12490402] [255] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[12491229] [255] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[12492194] [255] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[12492456] [256] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[12686478] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 -[12687567] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb34e56fb73 -[12688541] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 -[12688626] [28] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb34e56fb73 -[13231154] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 -[13232243] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000b9cad0700000000 -[13233376] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 -[13233488] [29] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000b9cad0700000000 -[13708544] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 -[13709228] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb3672590a4 -[13709954] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 -[13710013] [30] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb3672590a4 -[13711331] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a -[13711450] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb36743459a -[13712008] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a -[13712071] [31] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb36743459a -[13785563] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 -[13785909] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb49c444c69 -[13786228] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 -[13786254] [32] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb49c444c69 -[13793560] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 -[13793827] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb47a4201a9 -[13794142] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 -[13794166] [33] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb47a4201a9 -[13794524] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 -[13794565] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb47a564cf9 -[13794816] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 -[13794839] [34] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb47a564cf9 -[14212365] [28] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[14213179] [28] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[14214059] [28] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[14214177] [27] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[14214255] [27] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[14214328] [27] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[14214539] [27] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[14214630] [29] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[14290138] [30] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[14291067] [30] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[14291667] [30] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[14291735] [29] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[14291776] [29] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[14291821] [29] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[14291974] [29] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[14292024] [31] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[14833195] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 -[14833972] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a3d6ad0700000000 -[14834611] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 -[14834656] [35] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a3d6ad0700000000 -[16230702] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 -[16231165] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003c11ae0700000000 -[16231608] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 -[16231643] [36] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c11ae0700000000 -[17702365] [257] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17702988] [257] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17703467] [257] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17703581] [258] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17703668] [259] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17703806] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d -[17703872] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb47855385d -[17704341] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d -[17704391] [37] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb47855385d -[17709450] [260] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[17709784] [260] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[17710313] [260] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[17710556] [261] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[17729694] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 -[17731002] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d74bae0700000000 -[17731489] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 -[17731528] [38] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d74bae0700000000 -[17749623] [262] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[17750490] [262] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[17751008] [262] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[17751180] [263] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[17809812] [264] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[17810319] [264] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[17810754] [264] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[17810865] [265] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[17876743] [266] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[17877607] [266] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[17878444] [266] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[17878685] [267] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[17912140] [268] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[17913219] [268] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[17913980] [268] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[17914159] [269] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[17949721] [270] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[17950257] [270] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[17950784] [270] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[17950910] [271] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[18010209] [272] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[18011134] [272] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[18011924] [272] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[18012109] [273] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[18051982] [274] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[18052629] [274] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[18053257] [274] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[18053476] [275] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[18112294] [276] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18113035] [276] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18113831] [276] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18114022] [277] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18150610] [278] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18151431] [278] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18152038] [278] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18152218] [279] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18190034] [32] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[18190473] [32] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[18190983] [32] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[18191055] [31] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[18191098] [31] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[18191143] [31] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[18191276] [31] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[18191334] [33] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[18212253] [280] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[18212966] [280] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[18213693] [280] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[18213809] [281] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[18296752] [34] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[18297764] [34] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[18298614] [34] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[18298720] [33] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[18298785] [33] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[18298884] [33] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[18299087] [33] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[18299155] [35] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[18724756] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 -[18725585] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb49129ae89 -[18726366] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 -[18726425] [39] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb49129ae89 -[18727212] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda -[18727344] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb491474dda -[18727934] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda -[18728036] [40] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb491474dda -[18786784] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb -[18787259] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb5c64622bb -[18787710] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb -[18787750] [41] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb5c64622bb -[18788402] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 -[18788488] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb5a45b0c61 -[18788861] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 -[18788902] [42] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb5a45b0c61 -[18789409] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b -[18789483] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb5a44d374b -[18789936] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b -[18789986] [43] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb5a44d374b -[19231852] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 -[19232388] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007286ae0700000000 -[19233148] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 -[19233205] [44] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007286ae0700000000 -[20772762] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 -[20773756] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000ac1ae0700000000 -[20774862] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 -[20774950] [45] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000ac1ae0700000000 -[22186985] [36] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[22188019] [36] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[22188782] [36] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[22188964] [35] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[22189043] [35] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[22189099] [35] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[22189252] [35] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[22189313] [37] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[22234135] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 -[22234936] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a2fbae0700000000 -[22235674] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 -[22235750] [46] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a2fbae0700000000 -[22292614] [38] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[22293423] [38] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[22294174] [38] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[22294263] [37] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[22294337] [37] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[22294388] [37] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[22294575] [37] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[22294658] [39] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[22722098] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 -[22722971] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb5a258fc44 -[22723720] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 -[22723795] [47] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb5a258fc44 -[23333366] [282] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23334427] [282] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23335429] [282] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23335632] [283] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23377335] [284] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23378035] [284] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23378902] [284] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23379111] [285] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23415717] [286] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[23416615] [286] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[23417601] [286] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[23417829] [287] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[23477597] [288] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[23478553] [288] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[23479524] [288] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[23479779] [289] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[23517856] [290] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[23518923] [290] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[23519935] [290] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[23520086] [291] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[23575319] [292] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[23575678] [292] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[23576068] [292] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[23576156] [293] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[23615328] [294] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[23615736] [294] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[23616265] [294] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[23616373] [295] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[23675762] [296] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[23676992] [296] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[23677879] [296] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[23678076] [297] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[23682430] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c -[23682856] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb5bb4eba3c -[23683455] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c -[23683526] [48] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb5bb4eba3c -[23684337] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 -[23684487] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb5bb3baef7 -[23685251] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 -[23685326] [49] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb5bb3baef7 -[23715504] [298] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[23716000] [298] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[23716624] [298] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[23716762] [299] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[23735593] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 -[23736229] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003a36af0700000000 -[23736943] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 -[23737017] [50] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003a36af0700000000 -[23775649] [300] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[23776380] [300] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[23777278] [300] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[23777486] [301] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[23785785] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc -[23786350] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb6ce6145cc -[23787140] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc -[23787223] [51] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb6ce6145cc -[23788264] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c -[23788406] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb6f053035c -[23789223] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c -[23789291] [52] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb6f053035c -[23790181] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b -[23790318] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb6ce4eca2b -[23791135] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b -[23791234] [53] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb6ce4eca2b -[23815901] [302] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23816811] [302] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23817831] [302] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23818086] [303] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23876459] [304] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23877310] [304] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23878143] [304] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23878359] [305] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23917969] [306] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[23918754] [306] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[23919743] [306] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[23920086] [307] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[25237501] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 -[25237916] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d270af0700000000 -[25238339] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 -[25238375] [54] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d270af0700000000 -[26184781] [40] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[26185642] [40] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[26186559] [40] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[26186667] [39] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[26186724] [39] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[26186781] [39] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[26186939] [39] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[26187020] [41] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[26288619] [42] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[26289645] [42] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[26290719] [42] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[26290863] [41] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[26290958] [41] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[26291073] [41] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[26291343] [41] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[26291456] [43] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[26789807] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 -[26790904] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006aabaf0700000000 -[26791858] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 -[26791940] [55] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006aabaf0700000000 -[27735606] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 -[27736292] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb6cc664be9 -[27736925] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 -[27736972] [56] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb6cc664be9 -[28240570] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 -[28241726] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000003e6af0700000000 -[28242721] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 -[28242804] [57] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000003e6af0700000000 -[28759625] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 -[28760534] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb6e53ccbe0 -[28761512] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 -[28761593] [58] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb6e53ccbe0 -[28762732] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 -[28762879] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb6e55ab8a9 -[28763674] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 -[28763754] [59] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb6e55ab8a9 -[28788023] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b -[28788832] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb7f86b829b -[28789706] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b -[28789778] [60] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb7f86b829b -[28790842] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b -[28790981] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb7f857374b -[28791764] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b -[28791835] [61] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb7f857374b -[28792716] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 -[28792852] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb81a5e5ab6 -[28793632] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 -[28793711] [62] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb81a5e5ab6 -[29067466] [308] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29067894] [308] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29068314] [308] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29068413] [309] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29074223] [310] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29074497] [310] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29074870] [310] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29074940] [311] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29121050] [312] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[29121546] [312] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[29121998] [312] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[29122103] [313] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[29179518] [314] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[29180586] [314] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[29181551] [314] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[29181767] [315] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[29221424] [316] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[29222406] [316] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[29223119] [316] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[29223252] [317] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[29279092] [318] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[29279652] [318] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[29280143] [318] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[29280245] [319] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[29319675] [320] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[29320813] [320] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[29321969] [320] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[29322197] [321] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[29381280] [322] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[29382180] [322] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[29383006] [322] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[29383156] [323] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[29424070] [324] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[29424887] [324] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[29425703] [324] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[29425904] [325] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[29481661] [326] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[29482468] [326] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[29483288] [326] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[29483472] [327] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[29521812] [328] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29523454] [328] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29524247] [328] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29524422] [329] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29580776] [330] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29582681] [330] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29583762] [330] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29584721] [331] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29622082] [332] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[29623287] [332] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[29624852] [332] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[29625074] [333] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[29740008] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 -[29740850] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009d20b00700000000 -[29741544] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 -[29741606] [63] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d20b00700000000 -[30182588] [44] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[30183442] [44] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[30184268] [44] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[30184361] [43] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[30184428] [43] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[30184484] [43] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[30184693] [43] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[30184772] [45] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[30288643] [46] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[30289494] [46] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[30290283] [46] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[30290418] [45] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[30290500] [45] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[30290582] [45] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[30290885] [45] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[30290982] [47] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[31239789] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 -[31240938] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000365bb00700000000 -[31242079] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 -[31242177] [64] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000365bb00700000000 -[32755255] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac -[32756107] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb7f673d5ac -[32757025] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac -[32757112] [65] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb7f673d5ac -[32758349] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 -[32758499] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ce95b00700000000 -[32759302] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 -[32759400] [66] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ce95b00700000000 -[33779607] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 -[33780427] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb80f5a0b97 -[33781309] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 -[33781390] [67] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb80f5a0b97 -[33782613] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a -[33782776] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb80f3ea15a -[33783655] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a -[33783739] [68] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb80f3ea15a -[33789934] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 -[33790582] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bb9445dc5b8 -[33791587] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 -[33791665] [69] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bb9445dc5b8 -[33792702] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 -[33792844] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bb9226d33c9 -[33793646] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 -[33793763] [70] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bb9226d33c9 -[33794651] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 -[33794780] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bb9225eb4f2 -[33795517] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 -[33795596] [71] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bb9225eb4f2 -[34191164] [48] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[34191985] [48] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[34192717] [48] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[34192804] [47] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[34192860] [47] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[34192909] [47] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[34193095] [47] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[34193157] [49] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[34240601] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 -[34241418] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000068d0b00700000000 -[34242091] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 -[34242146] [72] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000068d0b00700000000 -[34296279] [50] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[34296935] [50] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[34297536] [50] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[34297617] [49] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[34297669] [49] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[34297718] [49] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[34297867] [49] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[34297923] [51] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[34803807] [334] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34804617] [334] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34805311] [334] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34805455] [335] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34805572] [336] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34841514] [337] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[34842092] [337] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[34842656] [337] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[34842781] [338] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[34880724] [339] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[34881082] [339] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[34881420] [339] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[34881486] [340] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[34942959] [341] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[34943417] [341] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[34943851] [341] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[34943943] [342] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[34981002] [343] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[34981653] [343] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[34982207] [343] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[34982329] [344] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[35039229] [345] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[35039980] [345] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[35040791] [345] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[35040944] [346] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[35083408] [347] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[35084158] [347] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[35084706] [347] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[35084821] [348] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[35141293] [349] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[35141965] [349] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[35142565] [349] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[35142701] [350] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[35181579] [351] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[35182315] [351] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[35183162] [351] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[35183318] [352] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[35241334] [353] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35242297] [353] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35243168] [353] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35243434] [354] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35282419] [355] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35283344] [355] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35284594] [355] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35284818] [356] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35341442] [357] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[35342062] [357] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[35342718] [357] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[35342870] [358] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[35740591] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 -[35741689] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000020bb10700000000 -[35742700] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 -[35742803] [73] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000020bb10700000000 -[37243365] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 -[37244001] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009c45b10700000000 -[37244543] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 -[37244583] [74] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009c45b10700000000 -[37683422] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e -[37684760] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bb92074f96e -[37685514] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e -[37685567] [75] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bb92074f96e -[38192889] [52] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[38194012] [52] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[38194991] [52] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[38195100] [51] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[38195185] [51] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[38195246] [51] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[38195471] [51] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[38195567] [53] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[38292245] [54] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[38293105] [54] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[38294014] [54] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[38294139] [53] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[38294234] [53] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[38294352] [53] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[38294553] [53] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[38294637] [55] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[38692993] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 -[38693469] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bb939491eb9 -[38693912] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 -[38693950] [76] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bb939491eb9 -[38694677] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 -[38694748] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bb93966fdd6 -[38695267] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 -[38695305] [77] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bb93966fdd6 -[38743141] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 -[38744041] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003580b10700000000 -[38744777] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 -[38744836] [78] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003580b10700000000 -[38785944] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac -[38786838] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bba4c752fac -[38787652] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac -[38787706] [79] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bba4c752fac -[38788582] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 -[38788669] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bba4c632964 -[38789185] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 -[38789251] [80] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bba4c632964 -[38789770] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 -[38789849] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bba6e693b61 -[38790785] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 -[38790876] [81] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bba6e693b61 -[40242898] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 -[40243593] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cebab10700000000 -[40244062] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 -[40244094] [82] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cebab10700000000 -[40442965] [359] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40444076] [359] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40445011] [359] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40445232] [360] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40506782] [361] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40507705] [361] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40508497] [361] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40508682] [362] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40542970] [363] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[40543818] [363] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[40544452] [363] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[40544613] [364] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[40602852] [365] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[40603344] [365] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[40603809] [365] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[40603912] [366] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[40642754] [367] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[40643261] [367] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[40643780] [367] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[40643878] [368] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[40704131] [369] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[40705174] [369] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[40705929] [369] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[40706089] [370] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[40742769] [371] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[40743486] [371] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[40744208] [371] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[40744359] [372] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[40803112] [373] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[40804116] [373] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[40805050] [373] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[40805270] [374] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[40842725] [375] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[40843525] [375] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[40844117] [375] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[40844234] [376] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[40903108] [377] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[40903802] [377] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[40904460] [377] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[40904646] [378] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[40970040] [379] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[40970915] [379] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[40971949] [379] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[40972141] [380] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[41003407] [381] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[41004320] [381] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[41005181] [381] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[41005385] [382] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[41043531] [383] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[41044331] [383] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[41044955] [383] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[41045081] [384] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[41764625] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 -[41765407] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000066f5b10700000000 -[41765988] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 -[41766032] [83] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000066f5b10700000000 -[42184557] [56] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[42185297] [56] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[42186182] [56] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[42186348] [55] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[42186415] [55] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[42186495] [55] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[42186771] [55] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[42186864] [57] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[42290409] [58] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[42291273] [58] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[42291986] [58] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[42292089] [57] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[42292141] [57] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[42292196] [57] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[42292377] [57] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[42292442] [59] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[42788791] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c -[42789627] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bba4a7ed62c -[42791579] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c -[42791678] [84] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bba4a7ed62c -[43243840] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 -[43244981] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ff2fb20700000000 -[43245936] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 -[43246013] [85] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff2fb20700000000 -[43710240] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 -[43710879] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bba63712931 -[43711548] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 -[43711607] [86] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bba63712931 -[43712428] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 -[43712522] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bba63539e62 -[43713088] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 -[43713157] [87] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bba63539e62 -[43788393] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb -[43789483] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbb7669f3bb -[43790448] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb -[43790543] [88] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbb7669f3bb -[43791691] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff -[43791828] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbb767ea8ff -[43792628] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff -[43792738] [89] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbb767ea8ff -[43793609] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 -[43793744] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbb98720541 -[43794486] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 -[43794609] [90] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbb98720541 -[44836575] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 -[44837095] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000986ab20700000000 -[44837610] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 -[44837651] [91] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000986ab20700000000 -[46149736] [385] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46150521] [385] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46151374] [385] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46151579] [386] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46182359] [60] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[46183015] [60] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[46183710] [60] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[46183798] [59] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[46183856] [59] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[46183906] [59] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[46184107] [59] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[46184221] [61] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[46208694] [387] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46209489] [387] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46210505] [387] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46210685] [388] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46230740] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 -[46231431] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000030a5b20700000000 -[46231977] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 -[46232013] [92] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000030a5b20700000000 -[46251035] [389] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[46252433] [389] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[46253159] [389] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[46254030] [390] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[46287541] [62] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[46288234] [62] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[46289049] [62] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[46289144] [61] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[46289201] [61] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[46289330] [61] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[46289659] [61] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[46289715] [63] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[46308715] [391] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[46309463] [391] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[46310026] [391] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[46310179] [392] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[46346913] [393] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[46347717] [393] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[46348423] [393] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[46348586] [394] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[46410664] [395] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[46411590] [395] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[46412539] [395] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[46412735] [396] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[46446900] [397] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[46447926] [397] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[46448733] [397] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[46448913] [398] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[46510802] [399] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[46511557] [399] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[46512358] [399] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[46512578] [400] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[46549020] [401] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[46549786] [401] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[46550389] [401] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[46550534] [402] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[46607111] [403] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[46608004] [403] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[46608776] [403] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[46608970] [404] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[46649317] [405] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46650271] [405] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46651169] [405] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46651360] [406] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46707217] [407] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46708122] [407] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46708984] [407] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46709168] [408] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46753062] [409] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[46753804] [409] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[46754583] [409] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[46754757] [410] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[47706113] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 -[47707087] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbb74830537 -[47708053] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 -[47708124] [93] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbb74830537 -[47727840] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 -[47728476] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cadfb20700000000 -[47729252] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 -[47729395] [94] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cadfb20700000000 -[48728658] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef -[48729193] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbb8d4ce3ef -[48729706] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef -[48729753] [95] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbb8d4ce3ef -[48730455] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 -[48730539] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbb8d6a4a49 -[48730995] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 -[48731043] [96] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbb8d6a4a49 -[48787488] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 -[48788391] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbcc26b4ff5 -[48789148] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 -[48789201] [97] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbcc26b4ff5 -[48790170] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 -[48790275] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbca069c378 -[48790775] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 -[48790839] [98] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbca069c378 -[48791703] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 -[48791794] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbca07e3461 -[48792264] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 -[48792304] [99] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbca07e3461 -[49229434] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 -[49230304] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000631ab30700000000 -[49231221] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 -[49231293] [100] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000631ab30700000000 -[50191167] [64] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[50192003] [64] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[50192621] [64] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[50192698] [63] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[50192782] [63] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[50192823] [63] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[50192959] [63] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[50193014] [65] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[50294882] [66] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[50295881] [66] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[50296833] [66] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[50296932] [65] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[50296995] [65] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[50297044] [65] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[50297211] [65] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[50297283] [67] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[50777632] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 -[50778465] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000fc54b30700000000 -[50779185] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 -[50779239] [101] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fc54b30700000000 -[51902734] [411] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51903652] [411] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51904427] [411] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51904647] [412] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51907894] [413] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51908470] [413] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51909286] [413] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51909444] [414] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51969165] [415] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[51970314] [415] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[51971298] [415] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[51971462] [416] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[52008282] [417] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[52009094] [417] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[52009683] [417] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[52009834] [418] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[52070362] [419] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[52070941] [419] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[52071393] [419] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[52071510] [420] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[52110317] [421] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[52111112] [421] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[52112001] [421] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[52112209] [422] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[52170728] [423] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[52171633] [423] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[52172427] [423] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[52172615] [424] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[52210446] [425] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[52211090] [425] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[52211825] [425] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[52211988] [426] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[52230527] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 -[52231137] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000958fb30700000000 -[52231748] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 -[52231794] [102] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000958fb30700000000 -[52270694] [427] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[52271590] [427] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[52272404] [427] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[52272601] [428] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[52310233] [429] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[52311036] [429] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[52311765] [429] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[52311915] [430] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[52371511] [431] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52372214] [431] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52372823] [431] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52372967] [432] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52413057] [433] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52413752] [433] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52414412] [433] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52414570] [434] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52471163] [435] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[52472033] [435] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[52472680] [435] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[52472823] [436] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[52721585] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c -[52722343] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbc9e7d642c -[52722953] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c -[52722996] [103] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbc9e7d642c -[53746155] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 -[53747010] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbcb7538eb3 -[53747830] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 -[53747893] [104] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbcb7538eb3 -[53748777] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 -[53748883] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbcb7712975 -[53749430] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 -[53749486] [105] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbcb7712975 -[53750209] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 -[53750313] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002dcab30700000000 -[53750873] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 -[53750921] [106] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002dcab30700000000 -[53786348] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 -[53787005] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbdec7249b6 -[53787661] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 -[53787724] [107] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbdec7249b6 -[53788625] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 -[53788725] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbdca8436e8 -[53789328] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 -[53789378] [108] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbdca8436e8 -[53790043] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 -[53790151] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbdca704904 -[53790721] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 -[53790810] [109] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbdca704904 -[54187113] [68] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[54188008] [68] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[54188766] [68] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[54188864] [67] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[54188911] [67] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[54188963] [67] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[54189120] [67] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[54189175] [69] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[54292814] [70] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[54293660] [70] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[54294329] [70] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[54294407] [69] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[54294458] [69] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[54294497] [69] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[54294649] [69] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[54294707] [71] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[55233976] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 -[55234760] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c504b40700000000 -[55235637] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 -[55235702] [110] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c504b40700000000 -[56817809] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 -[56818650] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005d3fb40700000000 -[56819404] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 -[56819457] [111] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005d3fb40700000000 -[57636711] [437] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57637193] [437] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57637632] [437] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57637729] [438] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57637793] [439] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57674520] [440] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[57675266] [440] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[57675726] [440] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[57676099] [441] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[57681698] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd -[57681999] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbdc88c7ddd -[57682374] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd -[57682406] [112] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbdc88c7ddd -[57713853] [442] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[57714253] [442] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[57714662] [442] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[57714761] [443] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[57776206] [444] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[57777058] [444] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[57778125] [444] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[57778265] [445] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[57814483] [446] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[57815043] [446] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[57815719] [446] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[57815909] [447] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[57882194] [448] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[57882697] [448] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[57883148] [448] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[57883251] [449] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[57914103] [450] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[57915027] [450] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[57915810] [450] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[57915981] [451] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[57974149] [452] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[57974871] [452] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[57975706] [452] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[57975866] [453] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[58015610] [454] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[58016458] [454] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[58017335] [454] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[58017513] [455] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[58074741] [456] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58075575] [456] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58076549] [456] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58076738] [457] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58112703] [458] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58113414] [458] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58114289] [458] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58114471] [459] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58172574] [460] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[58173326] [460] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[58174022] [460] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[58174169] [461] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[58183086] [72] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[58183564] [72] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[58184273] [72] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[58184363] [71] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[58184429] [71] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[58184520] [71] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[58184678] [71] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[58184745] [73] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[58232836] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 -[58233685] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f579b40700000000 -[58234619] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 -[58234711] [113] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f579b40700000000 -[58288895] [74] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[58289771] [74] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[58290548] [74] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[58290637] [73] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[58290695] [73] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[58290740] [73] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[58290915] [73] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[58290994] [75] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[58763664] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 -[58764151] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbde159bf92 -[58764571] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 -[58764607] [114] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbde159bf92 -[58765099] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 -[58765154] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbde177a462 -[58765506] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 -[58765537] [115] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbde177a462 -[58785247] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 -[58785821] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bbef4763da8 -[58786300] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 -[58786340] [116] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bbef4763da8 -[58786891] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 -[58786948] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bbef48ab8d1 -[58787319] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 -[58787351] [117] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bbef48ab8d1 -[58787765] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 -[58787836] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bbf16840602 -[58788192] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 -[58788228] [118] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bbf16840602 -[59787837] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 -[59788834] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008db4b40700000000 -[59789831] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 -[59789910] [119] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008db4b40700000000 -[61235533] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 -[61236206] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000026efb40700000000 -[61236910] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 -[61236975] [120] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000026efb40700000000 -[62183534] [76] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[62184622] [76] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[62185601] [76] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[62185716] [75] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[62185800] [75] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[62185860] [75] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[62186104] [75] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[62186208] [77] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[62288985] [78] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[62289886] [78] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[62290644] [78] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[62290738] [77] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[62290795] [77] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[62290843] [77] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[62291035] [77] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[62291097] [79] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[62757187] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 -[62757925] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bbef2956c89 -[62758654] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 -[62758707] [121] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bbef2956c89 -[62759540] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 -[62759637] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c029b50700000000 -[62760225] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 -[62760283] [122] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c029b50700000000 -[63276068] [462] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63276943] [462] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63277914] [462] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63278108] [463] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63340251] [464] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63340873] [464] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63341609] [464] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63341793] [465] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63375538] [466] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[63376189] [466] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[63377008] [466] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[63377158] [467] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[63435943] [468] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[63436721] [468] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[63437611] [468] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[63437834] [469] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[63475941] [470] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[63476741] [470] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[63477613] [470] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[63477815] [471] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[63536072] [472] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[63536940] [472] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[63537872] [472] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[63538063] [473] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[63579093] [474] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[63579941] [474] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[63580655] [474] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[63580802] [475] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[63638066] [476] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[63638641] [476] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[63639187] [476] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[63639307] [477] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[63677899] [478] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[63678687] [478] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[63679456] [478] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[63679672] [479] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[63680324] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa -[63680441] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bbf0b5cfbfa -[63681072] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa -[63681129] [123] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bbf0b5cfbfa -[63681966] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf -[63682061] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bbf0b7a3ddf -[63682602] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf -[63682648] [124] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bbf0b7a3ddf -[63736385] [480] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[63737021] [480] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[63737668] [480] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[63737816] [481] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[63776196] [482] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63776986] [482] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63777659] [482] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63777832] [483] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63792253] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc -[63792762] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc01e7e44fc -[63793369] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc -[63793431] [125] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc01e7e44fc -[63794235] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 -[63794329] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc01e92bb97 -[63794902] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 -[63794949] [126] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc01e92bb97 -[63795790] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 -[63795903] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc040883073 -[63796490] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 -[63796551] [127] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc040883073 -[63836584] [484] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63837566] [484] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63838763] [484] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63838957] [485] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63876343] [486] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[63877077] [486] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[63877844] [486] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[63878008] [487] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[64236576] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 -[64237204] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006464b50700000000 -[64237773] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 -[64237819] [128] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006464b50700000000 -[65829150] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 -[65830974] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ff9eb50700000000 -[65831530] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 -[65831572] [129] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ff9eb50700000000 -[66227065] [80] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[66228050] [80] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[66228966] [80] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[66229077] [79] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[66229148] [79] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[66229213] [79] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[66229549] [79] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[66229612] [81] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[66295445] [82] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[66296512] [82] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[66297432] [82] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[66297574] [81] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[66297645] [81] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[66297716] [81] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[66297967] [81] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[66298064] [83] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[67237961] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 -[67238916] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009ad9b50700000000 -[67239744] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 -[67239809] [130] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009ad9b50700000000 -[67774572] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 -[67775245] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc01c942802 -[67775782] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 -[67775825] [131] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc01c942802 -[68698368] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 -[68699327] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc0356b0320 -[68700214] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 -[68700295] [132] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc0356b0320 -[68701360] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c -[68701498] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc03588474c -[68702215] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c -[68702300] [133] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc03588474c -[68737182] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 -[68738013] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003314b60700000000 -[68738926] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 -[68738996] [134] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003314b60700000000 -[68787563] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 -[68788565] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc148963783 -[68789573] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 -[68789653] [135] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc148963783 -[68790704] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 -[68790818] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc16a8a1911 -[68791568] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 -[68791653] [136] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc16a8a1911 -[68792632] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 -[68792773] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc14885aee2 -[68793537] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 -[68793646] [137] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc14885aee2 -[68975797] [488] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[68976945] [488] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[68978029] [488] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[68978264] [489] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69037495] [490] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69038313] [490] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69039212] [490] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69039427] [491] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69077588] [492] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[69078424] [492] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[69079329] [492] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[69079510] [493] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[69138796] [494] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[69139844] [494] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[69140853] [494] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[69141139] [495] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[69179936] [496] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[69180918] [496] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[69181981] [496] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[69182176] [497] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[69235528] [498] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[69236187] [498] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[69236894] [498] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[69237046] [499] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[69279851] [500] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[69280749] [500] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[69281690] [500] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[69281897] [501] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[69337852] [502] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[69338589] [502] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[69339277] [502] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[69339453] [503] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[69376261] [504] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[69379130] [504] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[69380042] [504] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[69380258] [505] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[69435960] [506] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[69436766] [506] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[69437703] [506] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[69437888] [507] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[69478327] [508] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69479453] [508] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69480460] [508] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69480664] [509] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69535845] [510] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69536355] [510] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69536869] [510] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69536991] [511] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69580224] [512] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[69581123] [512] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[69582144] [512] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[69582353] [513] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[70186977] [84] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[70188050] [84] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[70188682] [84] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[70188761] [83] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[70188805] [83] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[70188850] [83] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[70188991] [83] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[70189048] [85] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[70236546] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 -[70237062] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000cd4eb60700000000 -[70237593] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 -[70237632] [138] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000cd4eb60700000000 -[70292988] [86] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[70293871] [86] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[70294659] [86] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[70294755] [85] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[70294806] [85] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[70294863] [85] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[70295044] [85] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[70295109] [87] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[71767627] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 -[71768099] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006589b60700000000 -[71768513] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 -[71768547] [139] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006589b60700000000 -[72792403] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 -[72793072] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc146a4e2b3 -[72793562] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 -[72793601] [140] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc146a4e2b3 -[73238039] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 -[73239020] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000fdc3b60700000000 -[73239816] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 -[73239879] [141] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000fdc3b60700000000 -[73684592] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b -[73685554] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc15f71265b -[73686505] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b -[73686592] [142] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc15f71265b -[73687816] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd -[73687966] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc15f8f10dd -[73688742] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd -[73688817] [143] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc15f8f10dd -[73788981] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 -[73790055] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc2729f1253 -[73791063] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 -[73791138] [144] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc2729f1253 -[73792238] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 -[73792371] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc29491c840 -[73793178] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 -[73793251] [145] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc29491c840 -[73794142] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f -[73794260] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc272908a5f -[73795071] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f -[73796854] [146] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc272908a5f -[74183031] [88] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[74183916] [88] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[74184896] [88] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[74185004] [87] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[74185091] [87] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[74185189] [87] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[74185428] [87] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[74185519] [89] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[74289147] [90] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[74290297] [90] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[74291513] [90] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[74291637] [89] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[74291709] [89] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[74291784] [89] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[74292027] [89] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[74292122] [91] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[74737492] [514] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74738238] [514] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74739104] [514] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74739262] [515] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74739474] [516] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74739596] [516] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74740384] [516] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74740541] [517] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74740721] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 -[74740832] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000095feb60700000000 -[74741607] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 -[74741680] [147] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000095feb60700000000 -[74797689] [518] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[74798649] [518] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[74799785] [518] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[74800016] [519] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[74838131] [520] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[74838754] [520] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[74839371] [520] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[74839525] [521] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[74897647] [522] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[74898452] [522] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[74899180] [522] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[74899348] [523] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[74937654] [524] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[74938513] [524] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[74939276] [524] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[74939436] [525] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[74997632] [526] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[74998444] [526] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[74999127] [526] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[74999285] [527] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[75037448] [528] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[75038096] [528] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[75038716] [528] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[75038853] [529] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[75097865] [530] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[75098794] [530] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[75099552] [530] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[75099719] [531] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[75137843] [532] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[75138572] [532] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[75139448] [532] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[75139631] [533] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[75198773] [534] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75199680] [534] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75200484] [534] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75200801] [535] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75237631] [536] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75238279] [536] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75238942] [536] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75239083] [537] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75298307] [538] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[75299174] [538] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[75300077] [538] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[75300252] [539] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[76242693] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 -[76243292] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002d39b70700000000 -[76243860] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 -[76243907] [148] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002d39b70700000000 -[77708556] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 -[77709399] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc270a08f82 -[77710206] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 -[77710256] [149] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc270a08f82 -[77740273] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 -[77740897] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c573b70700000000 -[77741559] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 -[77741638] [150] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c573b70700000000 -[78188346] [92] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[78189087] [92] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[78189834] [92] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[78189929] [91] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[78189982] [91] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[78190041] [91] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[78190199] [91] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[78190262] [93] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[78287006] [94] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[78287805] [94] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[78288574] [94] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[78288666] [93] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[78288720] [93] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[78288771] [93] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[78288941] [93] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[78289012] [95] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[78836555] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f -[78837154] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc2898cb65f -[78837782] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f -[78837839] [151] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc2898cb65f -[78838667] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c -[78838772] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc28971541c -[78839363] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c -[78839419] [152] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc28971541c -[78840076] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff -[78840171] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc39ca33aff -[78840723] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff -[78840771] [153] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc39ca33aff -[78841444] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 -[78841539] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc39c8f21d0 -[78842126] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 -[78842180] [154] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc39c8f21d0 -[78842789] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 -[78842870] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc3be975460 -[78843414] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 -[78843473] [155] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc3be975460 -[79420415] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 -[79421494] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005faeb70700000000 -[79422270] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 -[79422331] [156] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005faeb70700000000 -[80472772] [540] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80473417] [540] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80474055] [540] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80474188] [541] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80474299] [542] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80501336] [543] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[80506403] [543] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[80506952] [543] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[80507053] [544] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[80562892] [545] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[80564625] [545] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[80565341] [545] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[80565999] [546] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[80601447] [547] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[80602401] [547] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[80603171] [547] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[80603339] [548] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[80661523] [549] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[80662465] [549] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[80663356] [549] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[80663527] [550] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[80701418] [551] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[80702295] [551] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[80703017] [551] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[80703171] [552] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[80742214] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 -[80743124] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f8e8b70700000000 -[80743824] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 -[80743867] [157] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f8e8b70700000000 -[80761292] [553] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[80761869] [553] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[80762564] [553] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[80762754] [554] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[80801389] [555] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[80802082] [555] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[80802702] [555] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[80802848] [556] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[80861756] [557] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[80862687] [557] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[80863454] [557] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[80863623] [558] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[80900697] [559] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80901637] [559] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80902323] [559] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80902466] [560] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80959922] [561] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80961061] [561] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80962003] [561] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80962206] [562] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[81000064] [563] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[81001139] [563] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[81002058] [563] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[81002158] [564] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[82194232] [96] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[82196527] [96] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[82197502] [96] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[82197704] [95] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[82197747] [95] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[82197790] [95] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[82198024] [95] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[82198080] [97] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[82241097] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 -[82242018] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009223b80700000000 -[82242771] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 -[82242811] [158] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009223b80700000000 -[82296877] [98] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[82297643] [98] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[82298342] [98] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[82298425] [97] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[82298466] [97] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[82298505] [97] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[82298664] [97] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[82298726] [99] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[82725647] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 -[82726659] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc39aaab1d2 -[82727366] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 -[82727418] [159] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc39aaab1d2 -[83749390] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc -[83750059] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc3b374e4dc -[83750531] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc -[83750569] [160] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc3b374e4dc -[83751359] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 -[83751457] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc3b392a8a1 -[83751992] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 -[83752029] [161] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc3b392a8a1 -[83752747] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 -[83752834] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002a5eb80700000000 -[83753560] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 -[83753613] [162] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002a5eb80700000000 -[83789444] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 -[83790125] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc4e8995fb0 -[83790947] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 -[83791007] [163] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc4e8995fb0 -[83791925] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a -[83792056] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc4c6b5714a -[83792807] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a -[83792856] [164] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc4c6b5714a -[83793689] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd -[83793796] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc4c6a866fd -[83794515] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd -[83794565] [165] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc4c6a866fd -[85247291] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 -[85248331] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000c298b80700000000 -[85249379] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 -[85249439] [166] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000c298b80700000000 -[86176712] [565] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86177720] [565] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86178642] [565] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86178813] [566] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86178938] [567] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86185004] [100] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[86185686] [100] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[86186507] [100] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[86186606] [99] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[86186671] [99] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[86186718] [99] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[86186896] [99] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[86186972] [101] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[86205513] [568] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[86206247] [568] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[86207003] [568] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[86207137] [569] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[86265166] [570] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[86266107] [570] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[86266935] [570] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[86267102] [571] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[86293022] [102] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[86293720] [102] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[86294625] [102] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[86294714] [101] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[86294778] [101] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[86294830] [101] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[86295040] [101] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[86295109] [103] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[86304934] [572] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[86305586] [572] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[86306385] [572] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[86306537] [573] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[86365338] [574] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[86366448] [574] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[86367467] [574] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[86367676] [575] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[86407617] [576] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[86408605] [576] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[86409574] [576] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[86409772] [577] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[86467500] [578] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[86468585] [578] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[86469550] [578] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[86469740] [579] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[86507286] [580] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[86508224] [580] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[86509169] [580] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[86509351] [581] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[86567595] [582] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[86568565] [582] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[86569540] [582] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[86569747] [583] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[86605199] [584] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86605875] [584] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86606682] [584] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86606860] [585] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86667549] [586] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86668632] [586] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86669594] [586] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86669780] [587] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86707651] [588] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[86708609] [588] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[86709509] [588] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[86709678] [589] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[86747500] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 -[86748377] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005ad3b80700000000 -[86749200] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 -[86749262] [167] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005ad3b80700000000 -[87742933] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 -[87743716] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc4c4b8f9f1 -[87744476] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 -[87744531] [168] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc4c4b8f9f1 -[88246927] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 -[88247590] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f50db90700000000 -[88248250] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 -[88248292] [169] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f50db90700000000 -[88766921] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 -[88767389] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc4dd7ca241 -[88767814] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 -[88767846] [170] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc4dd7ca241 -[88768347] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 -[88768395] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc4dd9a7f16 -[88768747] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 -[88768770] [171] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc4dd9a7f16 -[88785699] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c -[88786310] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc5f09c433c -[88787037] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c -[88787086] [172] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc5f09c433c -[88788126] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c -[88788232] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc5f0b0b66c -[88788903] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c -[88788945] [173] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc5f0b0b66c -[88789944] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 -[88790000] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc612a34908 -[88790401] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 -[88790455] [174] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc612a34908 -[89790032] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 -[89790864] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008e48b90700000000 -[89791635] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 -[89791680] [175] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008e48b90700000000 -[90182769] [104] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[90183248] [104] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[90183669] [104] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[90183713] [103] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[90183739] [103] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[90183774] [103] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[90183866] [103] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[90183901] [105] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[90289176] [106] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[90290105] [106] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[90290862] [106] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[90290939] [105] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[90290986] [105] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[90291021] [105] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[90291179] [105] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[90291234] [107] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[91246575] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 -[91247250] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000002683b90700000000 -[91247925] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 -[91247969] [176] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000002683b90700000000 -[91839705] [590] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91840556] [590] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91841273] [590] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91841400] [591] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91866453] [592] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91867012] [592] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91867825] [592] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91867962] [593] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91906687] [594] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[91907652] [594] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[91908568] [594] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[91908759] [595] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[91967081] [596] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[91968173] [596] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[91969194] [596] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[91969413] [597] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[92007827] [598] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[92008796] [598] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[92009614] [598] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[92009765] [599] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[92069021] [600] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[92070013] [600] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[92070938] [600] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[92071130] [601] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[92107133] [602] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[92108233] [602] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[92109176] [602] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[92109371] [603] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[92167139] [604] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[92168049] [604] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[92168794] [604] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[92168955] [605] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[92207189] [606] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[92208235] [606] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[92209190] [606] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[92209366] [607] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[92267494] [608] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[92268497] [608] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[92269356] [608] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[92269541] [609] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[92305191] [610] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92306060] [610] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92306890] [610] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92307103] [611] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92367136] [612] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92368189] [612] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92369127] [612] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92369306] [613] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92407653] [614] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[92408570] [614] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[92409451] [614] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[92409630] [615] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[92760897] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef -[92761906] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc5eec21bef -[92762830] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef -[92762888] [177] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc5eec21bef -[92763948] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 -[92764058] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000bebdb90700000000 -[92764782] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 -[92766407] [178] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bebdb90700000000 -[93784510] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 -[93785292] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc6078a00d5 -[93785935] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 -[93785982] [179] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc6078a00d5 -[93786935] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 -[93787027] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc607a7aa67 -[93787643] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 -[93787690] [180] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc607a7aa67 -[93788855] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f -[93788961] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc71aa0a31f -[93789580] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f -[93789628] [181] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc71aa0a31f -[93790313] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 -[93790402] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc71ab51773 -[93791018] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 -[93791059] [182] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc71ab51773 -[93791706] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f -[93791790] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc73ca8fd8f -[93792331] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f -[93792382] [183] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc73ca8fd8f -[94200692] [108] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[94201507] [108] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[94202304] [108] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[94202414] [107] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[94202471] [107] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[94202518] [107] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[94202691] [107] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[94202766] [109] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[94229157] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 -[94229930] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000057f8b90700000000 -[94230731] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 -[94230790] [184] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000057f8b90700000000 -[94288184] [110] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[94289048] [110] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[94289957] [110] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[94290071] [109] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[94290124] [109] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[94290183] [109] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[94290381] [109] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[94290463] [111] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[95729655] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 -[95730455] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000f032ba0700000000 -[95731215] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 -[95731264] [185] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000f032ba0700000000 -[97228852] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 -[97229796] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000896dba0700000000 -[97230649] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 -[97230733] [186] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000896dba0700000000 -[97573084] [616] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97573819] [616] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97574490] [616] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97574642] [617] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97574741] [618] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97628566] [619] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[97629454] [619] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[97630251] [619] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[97630461] [620] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[97668744] [621] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[97669644] [621] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[97670451] [621] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[97670610] [622] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[97683167] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 -[97683651] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc718be1d16 -[97684266] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 -[97684315] [187] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc718be1d16 -[97728514] [623] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[97729194] [623] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[97729966] [623] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[97730123] [624] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[97768516] [625] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[97769040] [625] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[97769481] [625] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[97769571] [626] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[97830540] [627] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[97831347] [627] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[97832076] [627] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[97832225] [628] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[97868888] [629] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[97869802] [629] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[97870622] [629] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[97870813] [630] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[97930819] [631] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[97931490] [631] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[97931987] [631] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[97932086] [632] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[97968802] [633] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[97969701] [633] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[97970624] [633] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[97970830] [634] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[98029833] [635] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98030807] [635] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98031592] [635] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98031758] [636] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98069156] [637] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98070057] [637] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98070864] [637] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98071032] [638] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98129097] [639] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[98129954] [639] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[98130720] [639] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[98130846] [640] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[98192434] [112] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[98193048] [112] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[98193663] [112] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[98193749] [111] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[98193787] [111] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[98193832] [111] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[98193966] [111] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[98194014] [113] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[98295277] [114] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[98295888] [114] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[98296293] [114] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[98296414] [113] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[98296440] [113] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[98296461] [113] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[98296535] [113] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[98296567] [115] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[98700044] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b -[98700819] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc73187e07b -[98701548] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b -[98701587] [188] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc73187e07b -[98702934] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 -[98703043] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc731a57c61 -[98703655] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 -[98703700] [189] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc731a57c61 -[98729684] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 -[98730297] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000022a8ba0700000000 -[98730902] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 -[98730944] [190] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000022a8ba0700000000 -[98787496] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 -[98787931] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc844aaebc3 -[98788356] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 -[98788381] [191] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc844aaebc3 -[98788904] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 -[98788956] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc866b10db4 -[98789289] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 -[98789315] [192] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc866b10db4 -[98789736] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe -[98789786] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc844c172fe -[98790154] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe -[98790176] [193] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc844c172fe -[100234751] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 -[100235471] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000bae2ba0700000000 -[100236274] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 -[100236325] [194] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000bae2ba0700000000 -[101772344] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 -[101773333] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000521dbb0700000000 -[101774280] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 -[101774333] [195] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000521dbb0700000000 -[102196178] [116] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[102196916] [116] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[102197801] [116] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[102197908] [115] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[102197981] [115] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[102198027] [115] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[102198201] [115] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[102198271] [117] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[102292931] [118] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[102293938] [118] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[102294901] [118] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[102295002] [117] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[102295050] [117] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[102295110] [117] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[102295292] [117] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[102295363] [119] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[102693780] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada -[102694758] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc842c12ada -[102695688] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada -[102695743] [196] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc842c12ada -[103354433] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 -[103355609] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ea57bb0700000000 -[103356780] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 -[103356884] [197] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ea57bb0700000000 -[103417836] [641] [StateMap] 192.168.2.99:49299 (p_data) 340 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[103418948] [641] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 320 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[103419959] [641] [StateMap] 192.168.2.99:49299 (buffQueue) 340 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[103420173] [642] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[103420304] [643] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[103420415] [644] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[103420525] [645] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[103426217] [646] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[103426823] [646] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[103427630] [646] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[103427762] [647] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[103474657] [648] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[103475701] [648] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[103476761] [648] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[103476934] [649] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[103534436] [650] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[103535109] [650] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[103535660] [650] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[103535766] [651] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[103574486] [652] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[103575120] [652] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[103575900] [652] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[103576042] [653] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[103634667] [654] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[103635447] [654] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[103636099] [654] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[103636239] [655] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[103678865] [656] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[103682526] [656] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[103683638] [656] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[103686644] [657] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[103689315] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 -[103690058] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc85b908897 -[103690656] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 -[103690713] [198] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc85b908897 -[103691747] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 -[103691817] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc85bae5332 -[103692338] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 -[103692376] [199] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc85bae5332 -[103732533] [658] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103733074] [658] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103733598] [658] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103735519] [659] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103774946] [660] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103775871] [660] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103777019] [660] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103777222] [661] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[103802902] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e -[103803565] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bc990ae9f3e -[103804433] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e -[103804542] [200] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bc990ae9f3e -[103805801] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 -[103805920] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bc96ec06920 -[103806747] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 -[103806799] [201] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bc96ec06920 -[103807726] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f -[103807843] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bc96eac2c9f -[103808629] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f -[103808675] [202] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bc96eac2c9f -[103834678] [662] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[103835185] [662] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[103835791] [662] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[103835898] [663] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[104844460] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 -[104845456] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000008492bb0700000000 -[104846437] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 -[104846489] [203] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000008492bb0700000000 -[106202268] [120] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[106203087] [120] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[106203898] [120] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[106203989] [119] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[106204051] [119] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[106204098] [119] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[106204261] [119] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[106204324] [121] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[106234989] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 -[106235461] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001ecdbb0700000000 -[106235974] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 -[106236012] [204] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001ecdbb0700000000 -[106289084] [122] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[106290058] [122] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[106291034] [122] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[106291131] [121] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[106291194] [121] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[106291240] [121] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[106291425] [121] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[106291489] [123] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[107712511] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe -[107713428] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bc96cc63efe -[107714081] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe -[107714126] [205] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bc96cc63efe -[107734859] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 -[107735890] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b607bc0700000000 -[107736760] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 -[107736820] [206] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b607bc0700000000 -[108735217] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 -[108736114] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bc9859392f3 -[108736974] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 -[108737033] [207] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bc9859392f3 -[108738119] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 -[108738224] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bc985bad957 -[108738951] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 -[108739009] [208] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bc985bad957 -[108794479] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 -[108795421] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcabab17336 -[108796307] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 -[108796370] [209] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcabab17336 -[108799044] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc -[108799220] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bca98c966fc -[108800084] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc -[108800159] [210] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bca98c966fc -[108801819] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 -[108801932] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bca98b89fb2 -[108802661] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 -[108802725] [211] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bca98b89fb2 -[108940701] [664] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108941812] [664] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108942822] [664] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108943009] [665] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108977901] [666] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108978632] [666] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108979513] [666] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[108979661] [667] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[109038094] [668] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[109038883] [668] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[109039503] [668] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[109039650] [669] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[109082322] [670] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[109083415] [670] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[109084394] [670] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[109084615] [671] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[109138818] [672] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[109140000] [672] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[109140959] [672] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[109141160] [673] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[109180153] [674] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[109180944] [674] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[109181780] [674] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[109181947] [675] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[109240586] [676] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[109241704] [676] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[109242574] [676] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[109242753] [677] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[109242981] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 -[109243084] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000005142bc0700000000 -[109244079] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 -[109244197] [212] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000005142bc0700000000 -[109278383] [678] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[109279336] [678] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[109280309] [678] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[109280499] [679] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[109340613] [680] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[109341758] [680] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[109342715] [680] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[109342898] [681] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[109380302] [682] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[109381049] [682] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[109381884] [682] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[109382053] [683] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[109438611] [684] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109439582] [684] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109440499] [684] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109440695] [685] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109480817] [686] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109481851] [686] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109482869] [686] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109483090] [687] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[109540100] [688] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[109542823] [688] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[109543670] [688] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[109544442] [689] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[110214240] [124] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[110215035] [124] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[110215840] [124] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[110215935] [123] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[110215982] [123] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[110216021] [123] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[110216182] [123] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[110216250] [125] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[110289154] [126] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[110290083] [126] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[110290973] [126] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[110291071] [125] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[110291132] [125] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[110291179] [125] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[110291352] [125] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[110291427] [127] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[110739994] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 -[110741049] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e97cbc0700000000 -[110742053] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 -[110742095] [213] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e97cbc0700000000 -[112241534] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 -[112242404] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000082b7bc0700000000 -[112243197] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 -[112243238] [214] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000082b7bc0700000000 -[112729135] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce -[112729864] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bca96d110ce -[112730408] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce -[112730435] [215] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bca96d110ce -[113753642] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d -[113754623] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcaafba321d -[113755526] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d -[113755578] [216] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcaafba321d -[113756817] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 -[113757005] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcaafa27ce4 -[113757905] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 -[113757954] [217] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcaafa27ce4 -[113759316] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 -[113759448] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001af2bc0700000000 -[113760310] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 -[113760355] [218] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001af2bc0700000000 -[113784869] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede -[113785679] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcbe4bceede -[113786636] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede -[113786715] [219] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcbe4bceede -[113787929] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf -[113788032] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bcbc2b7a8cf -[113789027] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf -[113789154] [220] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcbc2b7a8cf -[113792021] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 -[113792768] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bcbc2cd9089 -[113793862] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 -[113794040] [221] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcbc2cd9089 -[114211695] [128] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[114212388] [128] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[114213069] [128] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[114213183] [127] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[114213226] [127] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[114213267] [127] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[114213385] [127] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[114213431] [129] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[114297452] [130] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[114298231] [130] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[114298966] [130] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[114299042] [129] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[114299083] [129] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[114299113] [129] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[114299276] [129] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[114299325] [131] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[114675924] [690] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114676738] [690] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114677599] [690] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114677778] [691] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114681657] [692] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114682318] [692] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114682970] [692] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114683101] [693] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[114745989] [694] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[114747054] [694] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[114747767] [694] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[114747938] [695] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[114789451] [696] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[114790133] [696] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[114790784] [696] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[114790909] [697] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[114840115] [698] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[114840983] [698] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[114841716] [698] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[114841850] [699] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[114879635] [700] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[114880277] [700] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[114881069] [700] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[114881207] [701] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[114940302] [702] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[114941531] [702] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[114942610] [702] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[114942799] [703] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[114980282] [704] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[114981145] [704] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[114982173] [704] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[114982357] [705] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[115040209] [706] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[115040990] [706] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[115041558] [706] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[115041713] [707] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[115080367] [708] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[115081463] [708] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[115082488] [708] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[115082694] [709] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[115140410] [710] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115141558] [710] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115142533] [710] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115142738] [711] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115180343] [712] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115181132] [712] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115182030] [712] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115182207] [713] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[115240550] [714] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[115241276] [714] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[115241770] [714] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[115241892] [715] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[115242060] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 -[115242102] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b32cbd0700000000 -[115243704] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 -[115243734] [222] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b32cbd0700000000 -[116825064] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 -[116825883] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000004d67bd0700000000 -[116826733] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 -[116826785] [223] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000004d67bd0700000000 -[117747161] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 -[117747680] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bcbc0e0e0e3 -[117748100] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 -[117748122] [224] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcbc0e0e0e3 -[118223903] [132] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[118226517] [132] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[118227365] [132] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[118227574] [131] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[118227611] [131] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[118227640] [131] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[118227768] [131] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[118227817] [133] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[118241684] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 -[118242605] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e8a1bd0700000000 -[118243657] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 -[118243704] [225] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e8a1bd0700000000 -[118291513] [134] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[118292337] [134] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[118293153] [134] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[118293242] [133] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[118293278] [133] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[118293322] [133] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[118293470] [133] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[118293527] [135] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[118771837] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 -[118772593] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcbd9be3cd3 -[118773574] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 -[118773640] [226] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcbd9be3cd3 -[118774670] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f -[118774777] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcbd9a7060f -[118775521] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f -[118775576] [227] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcbd9a7060f -[118786859] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 -[118787497] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcd0ec071e5 -[118788323] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 -[118788371] [228] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcd0ec071e5 -[118789536] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 -[118789644] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bccecbea7e3 -[118790430] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 -[118790471] [229] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bccecbea7e3 -[118791353] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e -[118791473] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bccecd4310e -[118792203] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e -[118792242] [230] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bccecd4310e -[119793325] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 -[119793733] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000080dcbd0700000000 -[119794149] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 -[119794169] [231] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000080dcbd0700000000 -[120342324] [716] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120343460] [716] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120344610] [716] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120344923] [717] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120381451] [718] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120382125] [718] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120383066] [718] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120383210] [719] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[120441368] [720] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[120441861] [720] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[120442328] [720] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[120442419] [721] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[120481887] [722] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[120482794] [722] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[120483691] [722] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[120483884] [723] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[120541780] [724] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[120542613] [724] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[120543269] [724] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[120543407] [725] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[120582993] [726] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[120584088] [726] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[120585148] [726] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[120585323] [727] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[120642009] [728] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[120642580] [728] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[120643089] [728] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[120643197] [729] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[120702004] [730] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[120703127] [730] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[120704197] [730] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[120704399] [731] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[120742379] [732] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[120743497] [732] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[120744536] [732] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[120744710] [733] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[120802215] [734] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[120803077] [734] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[120804369] [734] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[120804512] [735] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[120841888] [736] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120842531] [736] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120843197] [736] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120843325] [737] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120902512] [738] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120903297] [738] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120903909] [738] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120904080] [739] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[120942249] [740] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[120943287] [740] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[120943988] [740] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[120944135] [741] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[121240828] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 -[121241629] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000001817be0700000000 -[121242386] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 -[121242430] [232] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000001817be0700000000 -[122181750] [136] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[122182731] [136] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[122183678] [136] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[122183775] [135] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[122183822] [135] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[122183906] [135] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[122184107] [135] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[122184173] [137] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[122290012] [138] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[122291091] [138] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[122291913] [138] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[122291980] [137] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[122292017] [137] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[122292048] [137] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[122292204] [137] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[122292253] [139] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[122765184] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a -[122765952] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bccead0976a -[122766816] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a -[122766850] [233] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bccead0976a -[122767674] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 -[122767746] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000b051be0700000000 -[122768293] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 -[122768327] [234] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000b051be0700000000 -[123797092] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 -[123798024] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcd03a69d82 -[123798902] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 -[123798946] [235] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcd03a69d82 -[123800055] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 -[123800172] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcd03c37697 -[123800971] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 -[123801015] [236] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcd03c37697 -[123801906] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 -[123801998] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bce38c76441 -[123802745] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 -[123802793] [237] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bce38c76441 -[123803724] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 -[123803821] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bce16c38ac2 -[123804528] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 -[123804585] [238] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bce16c38ac2 -[123805405] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 -[123805499] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bce16dabf28 -[123807514] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 -[123807550] [239] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bce16dabf28 -[124302676] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 -[124303464] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000498cbe0700000000 -[124304317] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 -[124304361] [240] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000498cbe0700000000 -[125741129] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 -[125742199] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000e1c6be0700000000 -[125743261] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 -[125743308] [241] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000e1c6be0700000000 -[126063912] [742] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[126064766] [742] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[126065723] [742] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[126065927] [743] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[126216929] [744] [StateMap] 192.168.2.99:49299 (p_data) 260 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[126218007] [744] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 240 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[126218981] [744] [StateMap] 192.168.2.99:49299 (buffQueue) 260 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[126219180] [745] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[126219297] [746] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[126219418] [747] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[126223036] [140] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[126223137] [140] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[126223949] [140] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[126224025] [139] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[126224077] [139] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[126224118] [139] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[126224289] [139] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[126224348] [141] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[126390011] [748] [StateMap] 192.168.2.99:49299 (p_data) 210 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[126390949] [748] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 190 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[126391880] [748] [StateMap] 192.168.2.99:49299 (buffQueue) 210 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d006100730074006500720000006400000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d00610073007400650072000000640000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[126392052] [749] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[126392152] [750] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[126392264] [751] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[126392500] [142] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[126392596] [142] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[126393309] [142] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[126393380] [141] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[126393434] [141] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[126393473] [141] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[126393628] [141] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[126393686] [143] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[126401492] [752] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[126402211] [752] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[126403034] [752] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[126403194] [753] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[126461950] [754] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[126462838] [754] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[126463588] [754] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[126463734] [755] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[126501678] [756] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[126502459] [756] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[126503295] [756] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[126503465] [757] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[126561484] [758] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126563679] [758] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126564548] [758] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126564713] [759] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126606666] [760] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126611868] [760] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126613433] [760] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126614477] [761] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[126661859] [762] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[126662853] [762] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[126663734] [762] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[126663881] [763] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[127242888] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 -[127243841] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007901bf0700000000 -[127244777] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 -[127244826] [242] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007901bf0700000000 -[127681058] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b -[127682019] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bce14dca71b -[127682931] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b -[127682976] [243] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bce14dca71b -[128703985] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d -[128704730] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bce2db4760d -[128706485] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d -[128706535] [244] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bce2db4760d -[128707545] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 -[128707640] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bce2dd21b10 -[128708202] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 -[128708230] [245] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bce2dd21b10 -[128742137] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 -[128743018] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000113cbf0700000000 -[128743579] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 -[128743603] [246] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000113cbf0700000000 -[128786717] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 -[128787128] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bcf40ca21c9 -[128787516] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 -[128787538] [247] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bcf40ca21c9 -[128788010] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e -[128788048] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bcf40de918e -[128788733] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e -[128788775] [248] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bcf40de918e -[128789368] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 -[128789414] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bcf62d2dd10 -[128789769] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 -[128789789] [249] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bcf62d2dd10 -[130189732] [144] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[130190911] [144] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[130191946] [144] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[130192040] [143] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[130192079] [143] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[130192122] [143] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[130192313] [143] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[130192381] [145] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[130245247] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 -[130246227] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000ab76bf0700000000 -[130247225] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 -[130247271] [250] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000ab76bf0700000000 -[130295521] [146] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[130296337] [146] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[130297259] [146] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[130297338] [145] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[130297386] [145] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[130297423] [145] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[130297591] [145] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[130297662] [147] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[131775532] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 -[131776356] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000044b1bf0700000000 -[131777072] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 -[131777102] [251] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000044b1bf0700000000 -[131777932] [764] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131777995] [764] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131778756] [764] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131778904] [765] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131800974] [766] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131801726] [766] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131802602] [766] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131802753] [767] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[131861392] [768] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[131862466] [768] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[131863352] [768] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[131863524] [769] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[131900936] [770] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[131901587] [770] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[131902386] [770] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[131902525] [771] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[131961633] [772] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[131962765] [772] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[131963702] [772] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[131963877] [773] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[132001315] [774] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[132002158] [774] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[132003186] [774] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[132003365] [775] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[132061422] [776] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[132062210] [776] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[132062826] [776] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[132062958] [777] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[132102135] [778] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[132103012] [778] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[132103782] [778] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[132103944] [779] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[132161399] [780] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[132162099] [780] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[132162913] [780] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[132163016] [781] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[132201511] [782] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[132202164] [782] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[132202784] [782] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[132202894] [783] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[132261704] [784] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132263879] [784] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132264643] [784] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132264808] [785] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132303456] [786] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132304252] [786] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132304957] [786] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132305110] [787] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[132361995] [788] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[132362982] [788] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[132363571] [788] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[132363706] [789] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[132697324] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d -[132698065] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bcf3edc0b4d -[132698778] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d -[132698809] [252] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bcf3edc0b4d -[133246755] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 -[133247699] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000dcebbf0700000000 -[133248432] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 -[133248471] [253] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dcebbf0700000000 -[133721730] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 -[133722732] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bcf57b1a1c0 -[133723561] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 -[133723609] [254] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bcf57b1a1c0 -[133724838] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 -[133724971] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bcf57d6c793 -[133725840] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 -[133725880] [255] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bcf57d6c793 -[133785321] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 -[133786355] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd08cd35443 -[133787313] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 -[133787358] [256] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd08cd35443 -[133788967] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 -[133789065] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd06ad3a521 -[133789792] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 -[133789828] [257] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd06ad3a521 -[133790680] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d -[133790768] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd06ae83f0d -[133791469] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d -[133791516] [258] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd06ae83f0d -[134235590] [148] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[134241369] [148] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[134245540] [148] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[134245770] [147] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[134245815] [147] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[134245843] [147] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[134246075] [147] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[134246120] [149] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[134291879] [150] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[134293249] [150] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[134294244] [150] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[134294351] [149] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[134294393] [149] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[134294443] [149] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[134294627] [149] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[134294701] [151] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[134848771] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 -[134849584] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007426c00700000000 -[134850293] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 -[134850336] [259] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007426c00700000000 -[136250385] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 -[136251293] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000f61c00700000000 -[136251975] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 -[136252008] [260] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000f61c00700000000 -[137510123] [790] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137511022] [790] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137511912] [790] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137512103] [791] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137516602] [792] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137517159] [792] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137517899] [792] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137518022] [793] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[137565123] [794] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[137566173] [794] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[137567128] [794] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[137567317] [795] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[137629159] [796] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[137630264] [796] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[137631222] [796] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[137631411] [797] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[137665288] [798] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[137666408] [798] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[137667382] [798] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[137667560] [799] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[137681092] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c -[137681736] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd068e1829c -[137682557] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c -[137682598] [261] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd068e1829c -[137726977] [800] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[137727558] [800] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[137728184] [800] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[137728291] [801] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[137745235] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 -[137746236] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a89bc00700000000 -[137747266] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 -[137747327] [262] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a89bc00700000000 -[137764861] [802] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[137765436] [802] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[137766173] [802] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[137766334] [803] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[137825078] [804] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[137826003] [804] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[137826951] [804] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[137827104] [805] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[137865630] [806] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[137866565] [806] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[137867485] [806] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[137867671] [807] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[137927403] [808] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[137928165] [808] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[137928824] [808] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[137929155] [809] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[137965539] [810] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[137966680] [810] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[137967655] [810] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[137967839] [811] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[138027354] [812] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[138028066] [812] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[138028715] [812] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[138028953] [813] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[138063646] [814] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[138064714] [814] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[138065719] [814] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[138065907] [815] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[138181782] [152] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[138182830] [152] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[138183781] [152] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[138183889] [151] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[138183930] [151] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[138183975] [151] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[138184161] [151] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[138184227] [153] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[138287875] [154] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[138288767] [154] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[138289597] [154] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[138289696] [153] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[138289739] [153] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[138289783] [153] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[138289957] [153] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[138290021] [155] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[138738965] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba -[138739999] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd081b80bba -[138740834] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba -[138740876] [263] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd081b80bba -[138741955] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 -[138742071] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd081d55fd9 -[138742957] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 -[138743026] [264] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd081d55fd9 -[138787133] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e -[138788011] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd1b6d9424e -[138788876] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e -[138788931] [265] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd1b6d9424e -[138789993] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 -[138790097] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd194dab6d3 -[138790818] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 -[138790874] [266] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd194dab6d3 -[138791744] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac -[138791854] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd194f626ac -[138792591] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac -[138792638] [267] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd194f626ac -[139250485] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 -[139251268] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000043d6c00700000000 -[139252189] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 -[139252228] [268] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000043d6c00700000000 -[140787014] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 -[140788045] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000dc10c10700000000 -[140789047] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 -[140789109] [269] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000dc10c10700000000 -[142220618] [156] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[142221595] [156] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[142222560] [156] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[142222644] [155] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[142222692] [155] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[142222727] [155] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[142222874] [155] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[142222929] [157] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[142244569] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 -[142245167] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000754bc10700000000 -[142245945] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 -[142245984] [270] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000754bc10700000000 -[142285914] [158] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[142286888] [158] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[142287786] [158] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[142287882] [157] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[142287930] [157] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[142287973] [157] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[142288150] [157] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[142288222] [159] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[142732780] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 -[142733686] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd192e83581 -[142734628] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 -[142734685] [271] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd192e83581 -[143244609] [816] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[143245280] [816] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[143246082] [816] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[143246244] [817] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[143246343] [818] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[143269001] [819] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[143269953] [819] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[143270936] [819] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[143271120] [820] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[143324856] [821] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[143325789] [821] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[143326763] [821] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[143326957] [822] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[143364940] [823] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[143365942] [823] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[143366928] [823] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[143367118] [824] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[143425006] [825] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[143426058] [825] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[143427008] [825] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[143427209] [826] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[143465060] [827] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[143466096] [827] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[143467092] [827] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[143467269] [828] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[143525168] [829] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[143526204] [829] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[143527153] [829] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[143527334] [830] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[143565253] [831] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[143566332] [831] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[143567329] [831] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[143567517] [832] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[143625558] [833] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[143626550] [833] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[143627355] [833] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[143627510] [834] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[143665052] [835] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143666084] [835] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143667092] [835] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143667248] [836] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143681136] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 -[143681801] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd1abbd7318 -[143682723] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 -[143682775] [272] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd1abbd7318 -[143683879] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b -[143683973] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd1abdb181b -[143684760] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b -[143684797] [273] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd1abdb181b -[143730346] [837] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143733873] [837] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143735502] [837] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143736327] [838] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[143745115] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 -[143745931] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000d86c10700000000 -[143746993] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 -[143747045] [274] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000d86c10700000000 -[143764901] [839] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[143765547] [839] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[143766376] [839] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[143766510] [840] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[143784966] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc -[143785549] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd2e0dcc0fc -[143786313] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc -[143786360] [275] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd2e0dcc0fc -[143787500] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 -[143787585] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd2bef22c82 -[143788325] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 -[143788363] [276] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd2bef22c82 -[143789525] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 -[143789624] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd2bee44f72 -[143790650] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 -[143790715] [277] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd2bee44f72 -[145263979] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 -[145264755] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a7c0c10700000000 -[145265427] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 -[145265467] [278] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a7c0c10700000000 -[146215744] [160] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[146216567] [160] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[146217337] [160] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[146217423] [159] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[146217487] [159] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[146217516] [159] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[146217643] [159] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[146217688] [161] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[146295914] [162] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[146296892] [162] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[146297650] [162] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[146297717] [161] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[146297752] [161] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[146297783] [161] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[146297930] [161] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[146297970] [163] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[146829334] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 -[146830178] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000041fbc10700000000 -[146830838] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 -[146830872] [279] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000041fbc10700000000 -[147751665] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d -[147752377] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd2bcf70f8d -[147753040] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d -[147753079] [280] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd2bcf70f8d -[148259930] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 -[148260639] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000da35c20700000000 -[148261460] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 -[148261505] [281] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da35c20700000000 -[148776086] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 -[148776652] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd2d5c20d67 -[148777368] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 -[148777402] [282] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd2d5c20d67 -[148778116] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 -[148778160] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd2d5dfc381 -[148778507] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 -[148778527] [283] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd2d5dfc381 -[148783806] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 -[148784403] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd40ae0bf14 -[148785182] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 -[148785222] [284] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd40ae0bf14 -[148786388] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 -[148786477] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd3e8e75899 -[148789262] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 -[148789317] [285] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd3e8e75899 -[148790354] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 -[148790448] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd3e8fbc982 -[148791169] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 -[148791205] [286] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd3e8fbc982 -[148885035] [841] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148887404] [841] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148888814] [841] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148889027] [842] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148926362] [843] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148927223] [843] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148927904] [843] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148928039] [844] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[148984430] [845] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[148985349] [845] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[148986089] [845] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[148986229] [846] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[149041556] [847] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[149042293] [847] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[149042917] [847] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[149043084] [848] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[149084862] [849] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[149085379] [849] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[149085839] [849] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[149085923] [850] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[149126335] [851] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[149126836] [851] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[149127249] [851] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[149127325] [852] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[149186454] [853] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[149187170] [853] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[149187989] [853] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[149188132] [854] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[149224548] [855] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[149225161] [855] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[149225869] [855] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[149226003] [856] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[149283840] [857] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[149284460] [857] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[149285071] [857] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[149285177] [858] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[149324611] [859] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[149325035] [859] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[149325458] [859] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[149325535] [860] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[149391155] [861] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149392002] [861] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149392880] [861] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149393031] [862] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149425178] [863] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149425846] [863] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149426505] [863] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149426630] [864] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[149485178] [865] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[149486269] [865] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[149487340] [865] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[149487530] [866] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[149798361] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 -[149799194] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007270c20700000000 -[149799893] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 -[149799928] [287] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007270c20700000000 -[150264015] [164] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[150264854] [164] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[150265742] [164] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[150265828] [163] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[150265881] [163] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[150265924] [163] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[150266098] [163] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[150266154] [165] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[150291947] [166] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[150293053] [166] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[150294013] [166] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[150294106] [165] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[150294149] [165] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[150294196] [165] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[150294378] [165] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[150294450] [167] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[151269996] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 -[151270869] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000cabc20700000000 -[151271822] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 -[151271877] [288] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000cabc20700000000 -[152767997] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 -[152768820] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd3e70021b2 -[152769707] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 -[152769761] [289] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd3e70021b2 -[152770964] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 -[152771070] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a5e5c20700000000 -[152771858] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 -[152771919] [290] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a5e5c20700000000 -[153793351] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 -[153794329] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd3ffc84e63 -[153795210] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 -[153795251] [291] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd3ffc84e63 -[153796312] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d -[153796399] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd3ffe62c5d -[153797997] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d -[153798042] [292] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd3ffe62c5d -[153799208] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc -[153799322] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd534e8a1dc -[153800171] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc -[153800219] [293] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd534e8a1dc -[153801130] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 -[153801213] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd512e6e0f7 -[153801948] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 -[153801996] [294] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd512e6e0f7 -[153802893] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a -[153802999] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd512fb554a -[153803736] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a -[153803786] [295] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd512fb554a -[154201297] [168] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[154202142] [168] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[154202865] [168] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[154202938] [167] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[154202968] [167] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[154203001] [167] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[154203128] [167] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[154203179] [169] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[154245855] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 -[154246951] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003f20c30700000000 -[154247813] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 -[154247849] [296] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003f20c30700000000 -[154288019] [170] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[154288874] [170] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[154289726] [170] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[154289813] [169] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[154289848] [169] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[154289884] [169] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[154290032] [169] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[154290082] [171] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[154613280] [867] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154614271] [867] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154615016] [867] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154615187] [868] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154644432] [869] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154645569] [869] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154646632] [869] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154646810] [870] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[154684254] [871] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[154685141] [871] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[154686035] [871] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[154686194] [872] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[154744473] [873] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[154745449] [873] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[154746528] [873] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[154746749] [874] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[154786330] [875] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[154787187] [875] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[154788100] [875] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[154788267] [876] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[154848570] [877] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[154849634] [877] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[154850698] [877] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[154850880] [878] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[154887475] [879] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[154888093] [879] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[154888871] [879] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[154889008] [880] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[154944753] [881] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[154945810] [881] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[154946807] [881] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[154947006] [882] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[154984794] [883] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[154985500] [883] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[154986302] [883] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[154986465] [884] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[155044847] [885] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[155045947] [885] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[155046874] [885] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[155047083] [886] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[155086637] [887] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155087393] [887] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155088247] [887] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155088414] [888] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155144998] [889] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155146063] [889] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155147021] [889] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155147227] [890] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[155185576] [891] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[155186188] [891] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[155187001] [891] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[155187147] [892] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[155840033] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 -[155840663] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000da5ac30700000000 -[155841319] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 -[155841350] [297] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000da5ac30700000000 -[157272484] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 -[157273169] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000007395c30700000000 -[157273797] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 -[157273838] [298] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000007395c30700000000 -[157785573] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a -[157786510] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd51102261a -[157787397] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a -[157787446] [299] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd51102261a -[158194943] [172] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[158195900] [172] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[158196923] [172] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[158197017] [171] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[158197062] [171] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[158197111] [171] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[158197267] [171] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[158197338] [173] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[158287638] [174] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[158288271] [174] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[158288991] [174] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[158289049] [173] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[158289087] [173] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[158289115] [173] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[158289234] [173] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[158289282] [175] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[158708704] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 -[158709514] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd529cdb932 -[158710215] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 -[158710265] [300] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd529cdb932 -[158711069] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 -[158711136] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd529eb63e8 -[158711702] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 -[158711734] [301] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd529eb63e8 -[158746632] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 -[158747517] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000000bd0c30700000000 -[158748293] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 -[158748325] [302] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000000bd0c30700000000 -[158786771] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 -[158787667] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd65ef6d3f3 -[158788423] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 -[158788454] [303] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd65ef6d3f3 -[158789282] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 -[158789350] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd63d0b53a6 -[158789896] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 -[158789923] [304] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd63d0b53a6 -[158790566] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 -[158790629] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd63cf6ef45 -[158791145] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 -[158791170] [305] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd63cf6ef45 -[160280743] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 -[160281386] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a30ac40700000000 -[160281980] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 -[160282010] [306] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a30ac40700000000 -[160287513] [893] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160287954] [893] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160288537] [893] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160288650] [894] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160345628] [895] [StateMap] 192.168.2.99:49299 (p_data) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160348137] [895] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 60 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160359674] [895] [StateMap] 192.168.2.99:49299 (buffQueue) 80 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160362337] [896] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[160385774] [897] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[160387328] [897] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[160387794] [897] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[160387868] [898] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[160449628] [899] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[160452240] [899] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[160453610] [899] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[160454306] [900] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[160486369] [901] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[160487040] [901] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[160487762] [901] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[160487878] [902] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[160546218] [903] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[160546957] [903] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[160547708] [903] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[160547832] [904] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[160586070] [905] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[160586634] [905] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[160587226] [905] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[160587323] [906] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[160646546] [907] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[160647459] [907] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[160648274] [907] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[160648412] [908] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[160686182] [909] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[160686833] [909] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[160687530] [909] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[160687686] [910] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[160746392] [911] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[160747344] [911] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[160748085] [911] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[160748209] [912] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[160786493] [913] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160786947] [913] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160787444] [913] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160787527] [914] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160846553] [915] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160847203] [915] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160847687] [915] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160847783] [916] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[160886296] [917] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[160886982] [917] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[160887702] [917] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[160887818] [918] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[161781200] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 -[161782086] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000003c45c40700000000 -[161783041] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 -[161783502] [307] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000003c45c40700000000 -[162280972] [176] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[162281605] [176] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[162282271] [176] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[162282331] [175] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[162282361] [175] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[162282386] [175] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[162285607] [175] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[162285666] [177] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[162295685] [178] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[162296206] [178] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[162296851] [178] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[162296902] [177] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[162296940] [177] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[162296967] [177] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[162297072] [177] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[162297108] [179] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[162685534] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f -[162688308] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd63b09d03f -[162690033] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f -[162690271] [308] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd63b09d03f -[163285949] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 -[163286430] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d47fc40700000000 -[163286884] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 -[163286909] [309] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d47fc40700000000 -[163724999] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 -[163725828] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd653d383b7 -[163726677] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 -[163726716] [310] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd653d383b7 -[163727686] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f -[163727769] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd653f14d2f -[163728335] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f -[163728359] [311] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd653f14d2f -[163790353] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 -[163791205] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd767078535 -[163792081] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 -[163792120] [312] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd767078535 -[163793112] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a -[163793195] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd766f3d16a -[163793914] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a -[163793960] [313] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd766f3d16a -[163795038] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a -[163795144] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd788fb690a -[163795933] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a -[163795978] [314] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd788fb690a -[164851170] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 -[164851970] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006ebac40700000000 -[164852660] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 -[164852687] [315] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006ebac40700000000 -[166081902] [919] [StateMap] 192.168.2.99:49299 (p_data) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[166082858] [919] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 140 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[166083799] [919] [StateMap] 192.168.2.99:49299 (buffQueue) 160 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[166084494] [920] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[166084999] [921] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[166089478] [922] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[166089927] [922] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[166090499] [922] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[166090582] [923] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[166156066] [924] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[166157236] [924] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[166158371] [924] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[166158549] [925] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[166186046] [180] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[166187003] [180] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[166187968] [180] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[166188116] [179] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[166188166] [179] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[166188230] [179] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[166188416] [179] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[166188484] [181] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[166189792] [926] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[166190299] [926] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[166191081] [926] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[166191202] [927] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[166256187] [928] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[166257234] [928] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[166258265] [928] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[166258467] [929] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[166258699] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 -[166258788] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 0000000000000000000000000000000007f5c40700000000 -[166259630] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 -[166259676] [316] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f0000000000000000000000000000000007f5c40700000000 -[166289941] [182] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[166290649] [182] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[166291478] [182] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[166291554] [181] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[166291593] [181] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[166291635] [181] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[166291767] [181] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[166291831] [183] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[166292034] [930] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[166292116] [930] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[166292907] [930] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[166293025] [931] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[166352284] [932] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[166353391] [932] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[166359908] [932] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[166360088] [933] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[166394893] [934] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[166397281] [934] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[166399612] [934] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[166399942] [935] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[166456267] [936] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[166457076] [936] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[166457803] [936] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[166457963] [937] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[166489932] [938] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166490572] [938] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166491255] [938] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166491372] [939] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166550391] [940] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166551292] [940] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166552026] [940] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166552200] [941] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[166592052] [942] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[166592820] [942] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[166593677] [942] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[166595346] [943] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[167707580] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 -[167711009] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd7650c3a10 -[167714056] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 -[167714262] [317] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd7650c3a10 -[167751665] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 -[167752703] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000a02fc50700000000 -[167753849] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 -[167753897] [318] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000a02fc50700000000 -[168742903] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 -[168743744] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd77ddbf8a9 -[168744410] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 -[168744454] [319] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd77ddbf8a9 -[168745594] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 -[168745700] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd77df9ec48 -[168746517] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 -[168746544] [320] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd77df9ec48 -[168787537] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b -[168788379] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd8b2fe3f5b -[168788986] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b -[168789016] [321] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd8b2fe3f5b -[168790078] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa -[168790195] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd8910fdbaa -[168790697] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa -[168790717] [322] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd8910fdbaa -[168791621] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 -[168791693] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd890fcf063 -[168792115] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 -[168792144] [323] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd890fcf063 -[169291635] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 -[169292363] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000396ac50700000000 -[169293061] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 -[169293097] [324] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000396ac50700000000 -[170280254] [184] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[170280838] [184] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[170281436] [184] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[170281506] [183] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[170281533] [183] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[170281563] [183] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[170281977] [183] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[170282266] [185] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[170287691] [186] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[170288142] [186] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[170288775] [186] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[170288820] [185] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[170288852] [185] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[170288879] [185] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[170288964] [185] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[170289000] [187] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[170790771] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 -[170791539] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000d2a4c50700000000 -[170793406] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 -[170793441] [325] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000d2a4c50700000000 -[171819829] [944] [StateMap] 192.168.2.99:49299 (p_data) 250 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[171823362] [944] [StateMap] 736d6161-0000-07d2-0000-003c002f0045 (isSub) 230 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[171825484] [944] [StateMap] 192.168.2.99:49299 (buffQueue) 250 0000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d000000640000004c736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d0000006400000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[171825768] [945] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[171826073] [946] [StateMap] 192.168.2.99:49299 (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[171826120] [947] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[171853757] [948] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[171854627] [948] [StateMap] 736d6161-0000-07d2-0000-0046002f0043 (isSub) 70 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[171855263] [948] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[171855383] [949] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[171914931] [950] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[171915867] [950] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[171916876] [950] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[171917045] [951] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[171951916] [952] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[171952974] [952] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[171954006] [952] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[171954227] [953] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[172011748] [954] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[172012514] [954] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[172013377] [954] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[172013510] [955] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[172053782] [956] [StateMap] 192.168.2.99:49299 (p_data) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[172054625] [956] [StateMap] 736d6161-0000-07d2-0000-002e002f0045 (isSub) 46 006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[172055716] [956] [StateMap] 192.168.2.99:49299 (buffQueue) 66 0000003e736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[172055889] [957] [StateMap] 192.168.2.99:49299 (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[172112009] [958] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[172112699] [958] [StateMap] 736d6161-0000-07d2-0000-0034002f0043 (isSub) 52 006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[172113212] [958] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[172113340] [959] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[172149947] [960] [StateMap] 192.168.2.99:49299 (p_data) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[172150601] [960] [StateMap] 736d6161-0000-07d2-0000-0042002f0045 (isSub) 66 006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[172151147] [960] [StateMap] 192.168.2.99:49299 (buffQueue) 86 00000052736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[172151351] [961] [StateMap] 192.168.2.99:49299 (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[172212143] [962] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172213060] [962] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172213825] [962] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172213958] [963] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172252139] [964] [StateMap] 192.168.2.99:49299 (p_data) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172252948] [964] [StateMap] 736d6161-0000-07d2-0000-0046002f0045 (isSub) 70 006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172253677] [964] [StateMap] 192.168.2.99:49299 (buffQueue) 90 00000056736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172253824] [965] [StateMap] 192.168.2.99:49299 (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[172254047] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 -[172254147] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000006adfc50700000000 -[172254879] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 -[172255286] [326] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000006adfc50700000000 -[172312045] [966] [StateMap] 192.168.2.99:49299 (p_data) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[172312893] [966] [StateMap] 736d6161-0000-07d2-0000-0034002f0045 (isSub) 52 006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[172313795] [966] [StateMap] 192.168.2.99:49299 (buffQueue) 72 00000044736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[172313928] [967] [StateMap] 192.168.2.99:49299 (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[172735929] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 -[172736524] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (isSub) 24 0000000000000000000000000000000000000bd88f0c3a67 -[172737280] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 -[172737307] [327] [Directory] 4be14112-5ead-4848-a07d-b37ca8a7220e (toparse) 44 000000014be141125ead4848a07db37ca8a7220e0000000000000000000000000000000000000bd88f0c3a67 -[173687723] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (p_data) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 -[173690049] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (isSub) 24 0000000000000000000000000000000000000bd8a7e38658 -[173692399] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (buffQueue) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 -[173692609] [328] [Directory] a2ca1e31-9625-4619-a81f-e871ad442c5d (toparse) 44 00000001a2ca1e3196254619a81fe871ad442c5d0000000000000000000000000000000000000bd8a7e38658 -[173694328] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (p_data) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 -[173694443] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (isSub) 24 0000000000000000000000000000000000000bd8a800d037 -[173695047] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (buffQueue) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 -[173695067] [329] [Directory] 21ffc994-f8c8-4729-aef3-46f9808373ed (toparse) 44 0000000121ffc994f8c84729aef346f9808373ed0000000000000000000000000000000000000bd8a800d037 -[173735306] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 -[173736054] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000031ac60700000000 -[173736495] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 -[173736513] [330] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000031ac60700000000 -[173791480] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab -[173792444] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (isSub) 24 0000000000000000000000000000000000000bd9dcfe36ab -[173793395] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab -[173793431] [331] [Directory] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (toparse) 44 000000011e6c417ab6744c87b4aafb7ad22989760000000000000000000000000000000000000bd9dcfe36ab -[173794544] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (p_data) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd -[173794629] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (isSub) 24 0000000000000000000000000000000000000bd9bb01eccd -[173795423] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (buffQueue) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd -[173795457] [332] [Directory] bfd411d8-0479-4da8-aeac-8430b69067fe (toparse) 44 00000001bfd411d804794da8aeac8430b69067fe0000000000000000000000000000000000000bd9bb01eccd -[173796275] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (p_data) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 -[173796345] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (isSub) 24 0000000000000000000000000000000000000bd9bb165803 -[173797116] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (buffQueue) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 -[173797151] [333] [Directory] 27ad2095-1ef6-4d11-9fd6-90d285032922 (toparse) 44 0000000127ad20951ef64d119fd690d2850329220000000000000000000000000000000000000bd9bb165803 -[174220285] [188] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (p_data) 20 00000010666c747800000076000007d200000000 -[174220551] [188] [FileTransfer] 666c7478-0000-0076-0000-07d200000000 (isSub) 0 -[174220766] [188] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (buffQueue) 20 00000010666c747800000076000007d200000000 -[174220781] [187] [FileTransfer] undefined (preSvc) 16 666c747800000076000007d200000000 -[174220791] [187] [FileTransfer] undefined (postSvc) 16 666c747800000076000007d200000000 -[174220797] [187] [FileTransfer] undefined (ff-pre) 16 666c747800000076000007d200000000 -[174220896] [187] [FileTransfer] undefined (mag-post) 12 00000076000007d200000000 -[174220972] [189] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000076000007d200000000 -[174287679] [190] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (p_data) 20 00000010666c74780000009c000007d200000000 -[174287898] [190] [FileTransfer] 666c7478-0000-009c-0000-07d200000000 (isSub) 0 -[174288136] [190] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (buffQueue) 20 00000010666c74780000009c000007d200000000 -[174288153] [189] [FileTransfer] undefined (preSvc) 16 666c74780000009c000007d200000000 -[174288162] [189] [FileTransfer] undefined (postSvc) 16 666c74780000009c000007d200000000 -[174288172] [189] [FileTransfer] undefined (ff-pre) 16 666c74780000009c000007d200000000 -[174288213] [189] [FileTransfer] undefined (mag-post) 12 0000009c000007d200000000 -[174288227] [191] [FileTransfer] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 16 666c74780000009c000007d200000000 -[175295156] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 -[175296009] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 000000000000000000000000000000009d54c60700000000 -[175296844] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 -[175296892] [334] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f000000000000000000000000000000009d54c60700000000 -[176832614] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (p_data) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 -[176833115] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (isSub) 24 00000000000000000000000000000000368fc60700000000 -[176833670] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (buffQueue) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 -[176833697] [335] [Directory] 00000000-0000-0000-8000-00059501ab6f (toparse) 44 000000010000000000000000800000059501ab6f00000000000000000000000000000000368fc60700000000 +[14151] Announced myself on 50239 +[42164] [Directory] connection from 192.168.2.83:40805 +[43349] [Directory] connection from 192.168.2.83:38039 +[43928] [Directory] connection from 192.168.2.83:51371 +[304650] [Directory] sent ServiceAnnouncement to 192.168.2.83:40805 +[306253] [Directory] sent ServiceAnnouncement to 192.168.2.83:38039 +[306932] [Directory] sent ServiceAnnouncement to 192.168.2.83:51371 +[319636] [FileTransfer] connection from 192.168.2.83:58425 +[320631] [0] [FileTransfer] noID (!deviceID) 70 00000000696323153d544096bbb9b4b7f0cc05540000001800460069006c0065005400720061006e0073006600650072e43900000010666c74780000000000000008ffffffff +[322143] string length: 24 ctx sizeLeft: 46 +[323265] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[323976] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[324623] [0] [FileTransfer] 69632315-3d54-4096-bbb9-b4b7f0cc0554 (while) 16 666c74780000000000000008ffffffff +[325927] [FileTransfer] connection from 192.168.2.83:46307 +[326640] [FileTransfer] connection from 192.168.2.83:47375 +[327193] [StateMap] connection from 192.168.2.83:53491 +[327451] [2] [FileTransfer] noID (!deviceID) 70 00000000f2befde7cf4f424dab2f4f0f7edcb3870000001800460069006c0065005400720061006e0073006600650072b4e300000010666c74780000000000000008ffffffff +[327862] string length: 24 ctx sizeLeft: 46 +[328176] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[328472] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[328778] [2] [FileTransfer] f2befde7-cf4f-424d-ab2f-4f0f7edcb387 (while) 16 666c74780000000000000008ffffffff +[328897] [4] [FileTransfer] noID (!deviceID) 72 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072b90f00000012666c74780000000000000008000000020031 +[329365] string length: 24 ctx sizeLeft: 48 +[329715] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[330020] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[330622] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e +[331065] [4] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 18 666c74780000000000000008000000020031 +[331222] [0] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070d0f3 +[331583] string length: 16 ctx sizeLeft: 18 +[331938] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[332325] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[332699] Sending Statemap subscriptions to 192.168.2.83:53491 +[335934] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 +[341582] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e +[342094] [8] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[342412] [8] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff +[342923] listening for msg 1 +[350159] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d702f478400000000000002588d6044aa200000000000000041000 +[351841] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[352389] [1] 192.168.2.83:53491 /Client/Preferences/Player => {"string":"1","type":4} +[352452] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[352789] [1] 192.168.2.83:53491 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[352841] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[353141] [1] 192.168.2.83:53491 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[353192] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[353495] [1] 192.168.2.83:53491 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[353549] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[353846] [1] 192.168.2.83:53491 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[356624] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[357211] [7] 192.168.2.83:53491 /Engine/Deck1/Play => {"state":false,"type":1} +[357270] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[357615] [7] 192.168.2.83:53491 /Engine/Deck1/PlayState => {"state":false,"type":1} +[357662] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[357981] [7] 192.168.2.83:53491 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[358061] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[358369] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[358416] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[358710] [7] 192.168.2.83:53491 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[358756] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[359068] [7] 192.168.2.83:53491 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[359110] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[359411] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[359478] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[359820] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[359880] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[360262] [7] 192.168.2.83:53491 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[360311] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[360656] [7] 192.168.2.83:53491 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[360697] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[361011] [7] 192.168.2.83:53491 /Engine/Deck2/Play => {"state":false,"type":1} +[361050] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[361354] [7] 192.168.2.83:53491 /Engine/Deck2/PlayState => {"state":false,"type":1} +[361393] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[361697] [7] 192.168.2.83:53491 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[361743] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[362046] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[362085] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[362397] [7] 192.168.2.83:53491 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[362441] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[362828] [7] 192.168.2.83:53491 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[362890] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[363400] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[363485] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[363930] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[363984] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[364337] [7] 192.168.2.83:53491 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[364359] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 96 0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b0022007400790070 +[364630] [27] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 30 00650022003a0030002c002200760061006c007500650022003a0030007d +[365488] StateMap 27 00650022003a0030002c002200760061006c007500650022003a0030007d +[865868] [object Object] +[2335041] [13] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 +[5147991] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5148691] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5148851] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5149010] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5149161] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5149334] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5149502] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5154906] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5155869] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5156052] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5156183] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff +[5156341] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff +[5156574] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff +[5156705] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff +[5156842] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff +[5156987] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5157122] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5157230] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5157342] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5157475] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5157605] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5157714] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5157823] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5157926] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5158031] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5158174] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff +[5158293] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff +[5158398] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff +[5158502] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff +[5158604] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff +[5158719] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5158831] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5158933] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5159050] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5159154] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5159252] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5159336] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5159416] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5159502] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5165869] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5166264] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff +[5166360] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff +[5166480] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff +[5166584] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff +[5166671] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff +[5166772] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5166878] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5166982] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5167095] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5167201] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5167339] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5167442] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5167543] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5167639] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5167743] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5167851] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff +[5173144] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff +[5173652] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff +[5173741] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff +[5173821] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff +[5173886] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff +[5173960] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff +[5174050] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff +[5174144] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[6336471] [15] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 4eee851..54ed645 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -1,9 +1,9 @@ -import { ConnectionInfo, IpAddress, PlayerStatus, ServiceMessage, Services, StageLinqOptions } from '../types'; +import { ConnectionInfo, IpAddress, PlayerStatus, ServiceMessage, DeviceId, StageLinqOptions } from '../types'; import { EventEmitter } from 'events'; //import { NetworkDevice } from '.'; import { Player } from '../devices/Player'; import { sleep } from '../utils'; -import { Directory, FileTransfer, StateData, StateMap, TimeSynchronization } from '../services'; +import { FileTransfer, StateData, StateMap, TimeSynchronization, Directory } from '../services'; import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; @@ -44,9 +44,10 @@ export declare interface StageLinqDevices { export class StageLinqDevices extends EventEmitter { public directoryPort: number = 0; private services: Record> = {}; - private _services: Map> = new Map(); + public readonly _services: Map> = new Map(); private _databases: Databases; public peers: Map = new Map(); + public _peers: Record = {}; private devices: Map = new Map(); //private services2: Map> = new Map(); //private discoveryStatus: Map = new Map(); @@ -79,30 +80,75 @@ export class StageLinqDevices extends EventEmitter { //await this.startServiceListener(TimeSynchronization); - if (this.options.services.includes(Services.StateMap)) { - const stateMap = new StateMap(initMsg); - const stateMapInfo = await stateMap.listen(); - initMsg.services.set('StateMap', stateMapInfo.port); - this.services[StateMap.name] = stateMap; - this._services.set(StateMap.name, stateMap); - } + //if (this.options.services.includes(Services.StateMap)) { + //const stateMap = new StateMap(this); + const stateMap = await this.connectToService(StateMap); + const fileTransfer = await this.connectToService(FileTransfer); + const directory = await this.connectToService(Directory); + + //fileTransfer.on('dbDownloading', (sourceName, dbPath) => { + // console.log(`Downloading ${sourceName} to ${dbPath}`); + //}); + + // Fires while the database source is being read + //stageLinq.databases.on('dbProgress', (sourceName, total, bytes, percent) => { + // console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); + //}); + + // Fires when the database source has been read and saved to a temporary path. + //fileTransfer.on('dbDownloaded', (sourceName, dbPath) => { + // console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); + //});) + //const stateMapInfo = await stateMap.listen(); + //initMsg.services.set('StateMap', stateMapInfo.port); + //this.services[StateMap.name] = stateMap; + //this._services.set(StateMap.name, stateMap); + //} +/* if (this.options.services.includes(Services.FileTransfer)) { - const fileTransfer = new FileTransfer(initMsg); + const fileTransfer = new FileTransfer(this); const FileTransferInfo = await fileTransfer.listen(); initMsg.services.set('FileTransfer', FileTransferInfo.port); this.services[FileTransfer.name] = fileTransfer; this._services.set(FileTransfer.name, fileTransfer); } + - const directory = new Directory(initMsg); + const directory = new Directory(this); const directoryInfo = await directory.listen(); initMsg.services.set('DirectoryService', directoryInfo.port); this.directoryPort = directoryInfo.port; this.services[Directory.name] = directory; this._services.set(Directory.name, directory); - - return directoryInfo + */ + return directory.serverInfo + } + + async connectToService>(ctor: { + new (parent: InstanceType): T; + }): Promise { + //assert(this.connection); + // FIXME: find out why we need these waits before connecting to a service + //await sleep(500); + + const serviceName = ctor.name; + + + //if (this.services[serviceName]) { + // return this.services[serviceName] as T; + // } + + //assert(this.servicePorts.hasOwnProperty(serviceName)); + //assert(this.servicePorts[serviceName] > 0); + //const port = this.servicePorts[serviceName]; + + const service = new ctor(this); + + await service.listen(); + this._services.set(serviceName, service); + this.services[serviceName] = service; + return service; } /* // Factory function @@ -134,6 +180,7 @@ export class StageLinqDevices extends EventEmitter { } */ + /** * Disconnect from all connected devices diff --git a/network/announce.ts b/network/announce.ts index 13fb85a..42bd2e4 100644 --- a/network/announce.ts +++ b/network/announce.ts @@ -5,13 +5,13 @@ import { LISTEN_PORT, } from '../types'; import { createSocket, Socket as UDPSocket } from 'dgram'; -import * as dgram from 'dgram' +//import * as dgram from 'dgram' import { Logger } from '../LogEmitter'; import { networkInterfaces } from 'os'; import { strict as assert } from 'assert'; import { subnet } from 'ip'; -import { WriteContext } from '../utils/WriteContext'; -import type { DiscoveryMessage } from '../types'; +import { WriteContext } from '../utils'; +import type { DiscoveryMessage, DeviceId } from '../types'; function findBroadcastIPs(): string[] { const interfaces = Object.values(networkInterfaces()); diff --git a/network/index.ts b/network/index.ts index 5f33a5d..fc9b289 100644 --- a/network/index.ts +++ b/network/index.ts @@ -1,4 +1,4 @@ export * from './announce'; //export * from './NetworkDevice'; -export * from './StageLinqDevices' +export * from './StageLinqDevices'; export * from './StageLinqListener'; \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 82ef69d..00ab3d9 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -2,7 +2,8 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -import { ServiceInitMessage } from '../network'; +//import { ServiceInitMessage } from '../network'; +import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens, deviceIdFromBuff } from '../types'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils/sleep'; @@ -24,15 +25,19 @@ export class Directory extends Service { public services: Map; protected preparseData = false; - constructor(p_initMsg:ServiceInitMessage) { - super(p_initMsg); - this.services = p_initMsg.services; - + constructor(p_parent:InstanceType) { + super(p_parent); + //this.services = p_initMsg.services; + //this.parent.directoryPort = } async init() { } + protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + return + } + protected parseData(ctx: ReadContext, socket: Socket, msgId:number, svcMsg:boolean): ServiceMessage { let deviceId: string = ""; let servicePorts: ServicePorts = {}; @@ -88,22 +93,31 @@ export class Directory extends Service { } private async sendServiceAnnouncement(socket?: Socket): Promise { - let svc = this.services.entries(); + //let svc = this.parent._services.entries(); //console.warn(svc); await sleep(250); + const directoryPort = this.serverInfo.port const ctx = new WriteContext(); + ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - for (let i=0; i { async init() {} + /* + protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + + //console.log(msgId, checkSvcReq); + const _msgId = p_ctx.readUInt32(); + const token = p_ctx.read(16); + + //if (this.parent.peers.has(deviceIdFromBuff(token))) { + const svcName = p_ctx.readNetworkStringUTF16(); + const svcPort = p_ctx.readUInt16(); + const length = p_ctx.readUInt32(); + const deviceId = deviceIdFromBuff(token); + this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); + this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); + + const thisDevice: FileTransferServiceData = { + deviceId: deviceId, + socket: socket, + service: this + } + this.services.set(deviceId, thisDevice); + + console.log(`[${msgId}] `,deviceId, svcName, svcPort); + //} else { + // p_ctx.seek(-20); + //} + return + } + */ + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + //assert((this.p)) + //this.subscribe(socket); + return + } + protected parseData(p_ctx: ReadContext, socket: Socket, msgId:number, svcMsg?: boolean): ServiceMessage { - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "preSvc", true); + const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + const deviceId = this.peerDeviceIds[ipAddressPort]; + + // this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "preSvc", true); //test if this is a serviceRequest @@ -100,6 +139,7 @@ export class FileTransfer extends Service { //if (p_ctx.sizeLeft() === 88 && checkSvcReq === 0) { //console.warn(p_ctx.sizeLeft()); + /* if (svcMsg) { //console.log(msgId, checkSvcReq); const _msgId = p_ctx.readUInt32(); @@ -124,12 +164,11 @@ export class FileTransfer extends Service { } else { p_ctx.seek(-20); } - - } //else { + */ //p_ctx.seek(-4); //} - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "postSvc", true); + // this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "postSvc", true); /* let checkBufferArray = new Uint8Array([0,0,0,0]) @@ -154,14 +193,14 @@ export class FileTransfer extends Service { p_ctx.seek(-4); */ - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "ff-pre", true ); - if (p_ctx.sizeLeft() < 100) { - p_ctx = fastForward(p_ctx, "666c7478", msgId); - } + //this.testPoint(p_ctx, dev, msgId, "ff-pre", true ); + //if (p_ctx.sizeLeft() < 100) { + // p_ctx = fastForward(p_ctx, "666c7478", msgId); + //} const check = p_ctx.getString(4); - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true ); + //this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true ); if (check !== MAGIC_MARKER) { Logger.error(msgId,svcMsg, assert(check === MAGIC_MARKER)) } @@ -189,7 +228,7 @@ export class FileTransfer extends Service { // Else const messageId: MessageId = p_ctx.readUInt32(); //console.log(`[${msgId}] `,MessageId[messageId], messageId); - //console.log(`[${msgId}] `,this.getDeviceIdFromSocket(socket), ' MessageID: ', MessageId[messageId]); + console.log(`[${msgId}] `,deviceId.toString(), ' MessageID: ', MessageId[messageId]); switch (messageId) { case MessageId.SourceLocations: { const sources: string[] = []; @@ -206,7 +245,7 @@ export class FileTransfer extends Service { assert(p_ctx.isEOF()); if (sources.length) { - Logger.debug(`getting sources for `, this.getDeviceIdFromSocket(socket)); + Logger.debug(`getting sources for `, deviceId.toString()); this.getSources(sources, socket); } @@ -282,7 +321,7 @@ export class FileTransfer extends Service { if (p_ctx.sizeLeft() >= 5) { - Logger.debug(`requesting sources from `, this.getDeviceIdFromSocket(socket)); + Logger.debug(`requesting sources from `, deviceId.toString()); this.requestSources(socket); } @@ -318,6 +357,7 @@ export class FileTransfer extends Service { const txinfo = await this.waitForMessage(MessageId.FileTransferId); if (txinfo) { + Logger.info(`heard ${txinfo}`); this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); @@ -492,7 +532,8 @@ export interface Source { } //} await this.deviceSources.set(msgDeviceId, devices); - //this.downloadDb(msgDeviceId); + await sleep(500); + //this.downloadDb(msgDeviceId, socket); const testDev = this.deviceSources.get(msgDeviceId); Logger.info(testDev); return result; @@ -556,7 +597,7 @@ export interface Source { await this.writeWithLength(ctx, socket); } - async downloadDb(deviceId: string) { // sourceId: string, service: FileTransfer, _source: Source) { + async downloadDb(deviceId: string, socket: Socket) { // sourceId: string, service: FileTransfer, _source: Source) { //console.info(source); Logger.info(`downloadDb request for ${deviceId}`); const deviceSources = this.deviceSources.get(deviceId); @@ -576,7 +617,7 @@ export interface Source { //}); // Save database to a file - const file = await this.getFile(source.database.location, service.socket); + const file = await this.getFile(source.database.location, socket); Logger.debug(`Saving ${service.deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); diff --git a/services/Service.ts b/services/Service.ts index 05022a5..c5d6e54 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,13 +1,13 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo, deviceIdFromBuff } from '../types'; +import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo, DeviceId, deviceIdFromBuff } from '../types'; import { ServiceInitMessage, StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; -import type { ServiceMessage, IpAddress } from '../types'; +import type { ServiceMessage, IpAddress, IpAddressPort } from '../types'; export declare interface ServiceDevice { on(event: 'listening', listener: (address: AddressInfo) => void): this; @@ -20,26 +20,34 @@ export declare interface ServiceDevice { export declare type ServiceData = { socket?: Socket; - deviceId?: string; + deviceId?: DeviceId; service?: InstanceType; } -type ServiceBuffer = { +//type PeerData = { + +//} + +type ServiceBuffers = { [key: string]: Buffer; } export abstract class Service extends EventEmitter { //private address: string; - //private port: number; + public port: number; protected preparseData:boolean = true; public readonly name: string = "Service"; public serverInfo: AddressInfo; - public serverStatus: string; + public peerDeviceIds: Record = {} + //public peerDeviceIds: Record = {} + public serverStatus: boolean = false; public connections: Map = new Map(); public deviceIds: Map = new Map(); public deviceIps: Map = new Map(); public serviceList: Map = new Map(); - protected serviceBuffers: Map = new Map(); + public hasSubbed: boolean = false; + //protected serviceBuffers: Map = new Map(); + protected serviceBuffers: ServiceBuffers = {}; //protected controller: NetworkDevice; //protected connection: tcp.Connection = null; protected connection: Socket = null; @@ -49,39 +57,69 @@ export abstract class Service extends EventEmitter { private msgId: number = 0; //constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { - constructor(p_initMsg:ServiceInitMessage) { + constructor(p_parent:InstanceType) { super(); - this.parent = p_initMsg.parent; - this.serInitMsg = p_initMsg; + this.parent = p_parent; + //this.serInitMsg = p_initMsg; } - protected async isSubMsg(_ctx: ReadContext): Promise { + protected async isSubMsg(_ctx: ReadContext): Promise { const ctx = _ctx.readRemainingAsNewCtx(); const messageId = ctx.readUInt32() const token = ctx.read(16); const deviceId = deviceIdFromBuff(token); - - this.testPoint(ctx, deviceId, this.msgId, "isSub", true ); + let netStringLength = 0 + if (_ctx.sizeLeft() >= 8) { + netStringLength = ctx.readUInt32(); + netStringLength += 4; + } + //this.testPoint(ctx, deviceId, this.msgId, "isSub", true ); const hasPeer = await this.parent.peers.has(deviceId) if (messageId === 0 && hasPeer) { - return deviceId + return (20 + netStringLength) } else { - return + return 0 } } + private async serverMessageParser(p_data: Buffer, socket: Socket) { + + } + + private async serviceMessage(p_data:Buffer, ipAddressPort: IpAddressPort , deviceId:DeviceId) { + + } + async createServer(serviceName: string): Promise { return await new Promise((resolve, reject) => { + //let serviceBuffers:ServiceBuffers = {} //let queue: Buffer = null; const server = net.createServer((socket) => { //const deviceId = this.deviceIps.set([socket.rem]) Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + + //Handle identification of incoming socket. + const addressInfo:AddressInfo = { + address: socket.remoteAddress, + port: socket.remotePort, + family: socket.remoteFamily, + } const ipAddressPort = [socket.remoteAddress,socket.remotePort].join(":"); - this.serviceBuffers.set(ipAddressPort,null); - let deviceId = (this.deviceIps.has(ipAddressPort)) ? this.deviceIps.get(ipAddressPort) : ipAddressPort; + //Initialize new buffer for this connection + let queue: Buffer = null; + this.serviceBuffers[ipAddressPort] = queue; + //this.serviceBuffers.set(ipAddressPort,null); + + let deviceId = this.peerDeviceIds[ipAddressPort]; + + + //let deviceId = (this.deviceIps.has(ipAddressPort)) ? this.deviceIps.get(ipAddressPort) : ipAddressPort; + + + socket.on('error', (err) => { reject(err); }); @@ -89,38 +127,110 @@ export abstract class Service extends EventEmitter { socket.on('data', async p_data => { //let messages:ReadContext[] = []; - let queue: Buffer = this.serviceBuffers.get(ipAddressPort); const thisMsgId = this.msgId; this.msgId++ + + //append queue to current data + let buffer: Buffer = null; + if (this.serviceBuffers[ipAddressPort] && this.serviceBuffers[ipAddressPort].length > 0) { + buffer = Buffer.concat([this.serviceBuffers[ipAddressPort], p_data]); + } else { + buffer = p_data; + } + + // FIXME: Clean up this arraybuffer confusion mess + const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + let ctx = new ReadContext(arrayBuffer, false); + + //If directory service, send unparsed data immediately, empty buffer + if (this.name === "Directory") { + const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket, thisMsgId,true); + //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); + this.messageHandler(parsedData); + this.emit('message', parsedData); + } + //check if device has announced itself to this service yet + if (!deviceId && ctx.sizeLeft() >= 20) { + this.testPoint(ctx, "noID", thisMsgId, "!deviceID", true); + const messageId = ctx.readUInt32() + deviceId = new DeviceId(ctx.read(16)); + + //peak at network string length then rewind + const stringLength = ctx.readUInt32(); + + Logger.debug(`string length: ${stringLength} ctx sizeLeft: ${ctx.sizeLeft()}`) + ctx.seek(-4); + (assert (stringLength <= ctx.sizeLeft())); + + const serviceName = ctx.readNetworkStringUTF16(); + + (assert (ctx.sizeLeft() >= 2)); + const port = ctx.readUInt16(); + (assert(port === addressInfo.port)) + this.peerDeviceIds[ipAddressPort] = deviceId; + //this.parseServiceData + + //const wtx = ne + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket, thisMsgId,true); + //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); + this.messageHandler(parsedData); + this.emit('message', parsedData); + } + + + /* + let hexString = p_data.toString('hex'); + const hexStringLength = hexString.length; + if (hexString.length > 195) { + hexString = [hexString.substring(0,20), hexString.substring(hexString.length-20,hexString.length)].join('...'); + } + if (this.name === "FileTransfer") { + Logger.debug(this.name, thisMsgId, p_data.length, hexStringLength, hexString); + } + */ + + //let queue: Buffer = this.serviceBuffers.get(ipAddressPort); + + //let serviceBuffers:ServiceBuffers = {} + + //if (p_data.buffer) { //} + /* const testArrayBuffer = p_data.buffer.slice(p_data.byteOffset, p_data.byteOffset + p_data.byteLength); const ttx = new ReadContext(testArrayBuffer,false); - this.testPoint(ttx, deviceId, this.msgId, "p_data", true ); + //this.testPoint(ttx, deviceId, thisMsgId, "p_data", true ); //let queue + let isSub = 0; + if (this.name === "Directory") { + isSub = 99 + } else { + isSub = await this.isSubMsg(ttx); + } - const isSub = await this.isSubMsg(ttx); - if (isSub && isSub !== deviceId) { - deviceId = isSub + + if (!!isSub) { + Logger.debug(this.name, thisMsgId,' sub msg ', hexString); + this.msgId++ + const parsedData = this.parseData(new ReadContext(testArrayBuffer,false), socket, thisMsgId,true); + //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); + this.messageHandler(parsedData); + this.emit('message', parsedData); } if (this.deviceIps.has(ipAddressPort) && deviceId === ipAddressPort) { deviceId = this.deviceIps.get(ipAddressPort); } - let buffer: Buffer = null; - if (queue && queue.length > 0) { - buffer = Buffer.concat([queue, p_data]); - } else { - buffer = p_data; - } - - // FIXME: Clean up this arraybuffer confusion mess - const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); - let ctx = new ReadContext(arrayBuffer, false); - this.testPoint(ctx, deviceId, this.msgId, "buffQueue", true ); + + const isSubSeek = (isSub > ctx.sizeLeft()) ? ctx.sizeLeft() : isSub + ctx.seek(isSubSeek); + this.testPoint(ctx, deviceId, thisMsgId, "buffQueue", true ); queue = null; + + */ //ctx = await this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "data", true ); /* let isSub = false; @@ -146,19 +256,28 @@ export abstract class Service extends EventEmitter { //const messageId = ctx.readUInt32(); //ctx.rewind(); //console.warn(socket.localPort, " ", this.parent.directoryPort); + + /* if (!this.preparseData || socket.localPort === this.parent.directoryPort || !!isSub) { try { - this.testPoint(ctx, deviceId, this.msgId, "toparse", true ); + this.testPoint(ctx, deviceId, thisMsgId, "toparse", true ); const parsedData = this.parseData(ctx, socket,thisMsgId); this.emit('message', parsedData); this.messageHandler(parsedData); } catch (err) { - Logger.error(this.name, this.msgId, deviceId, err); + Logger.error(this.name, thisMsgId, deviceId, err); } } else { + */ + if (this.name !== 'Directory') { + //Logger.debug(`[${this.name}] isEof: ${ctx.isEOF()} ctx sizeLeft: ${ctx.sizeLeft()}`); + } + try { //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); while (ctx.isEOF() === false) { + + if (ctx.sizeLeft() < 4) { queue = ctx.readRemainingAsNewBuffer(); break; @@ -166,16 +285,22 @@ export abstract class Service extends EventEmitter { const length = ctx.readUInt32() + //if ( length > 0 && length <= ctx.sizeLeft()) { + if ( length <= ctx.sizeLeft()) { + if (length === 0) { + Logger.warn('wtf!'); + } const message = ctx.read(length); // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); + //let data = new ReadContext(message.buffer.slice(message.byteOffset, message.byteOffset + length), false) //data = await this.testPoint(data, this.getDeviceIdFromSocket(socket), this.msgId, "preparse", true ); this.msgId++ const parsedData = this.parseData(new ReadContext(data,false), socket, thisMsgId); - this.testPoint(new ReadContext(data,false), deviceId, this.msgId, "while", true ); + this.testPoint(new ReadContext(data,false), deviceId.toString(), thisMsgId, "while", true ); //messages.push(new ReadContext(data, false)) // Forward parsed data to message handler @@ -183,8 +308,11 @@ export abstract class Service extends EventEmitter { this.emit('message', parsedData); } else { ctx.seek(-4); // Rewind 4 bytes to include the length again - this.testPoint(ctx, deviceId, this.msgId, "toqueue", true ); + this.testPoint(ctx, deviceId.toString(), thisMsgId, "toqueue", true ); queue = ctx.readRemainingAsNewBuffer(); + if (queue.length < 50) { + Logger.debug(this.name, thisMsgId, queue.toString('hex')); + } break; } } @@ -193,12 +321,13 @@ export abstract class Service extends EventEmitter { // console.log(stringMsg); //} } catch (err) { - Logger.error(this.name, this.msgId, deviceId, err); + Logger.error(this.name, thisMsgId, deviceId.toString(), err); } - } + //} }); }).listen(0, '0.0.0.0', () => { + this.serverStatus = true; this.serverInfo = server.address() as net.AddressInfo; console.log(`opened ${this.name} server on ${this.serverInfo.port}`); resolve(server); @@ -209,6 +338,9 @@ export abstract class Service extends EventEmitter { async listen(): Promise { const server = await this.createServer(this.name) this.server = server; + + const serverAddress = server.address() as net.AddressInfo; + this.port = serverAddress.port; return server.address() as net.AddressInfo; } @@ -295,8 +427,11 @@ export abstract class Service extends EventEmitter { async waitForMessage(p_messageId: number): Promise { return await new Promise((resolve, reject) => { + Logger.info(`listening for msg ${p_messageId}`); const listener = (p_message: ServiceMessage) => { + //Logger.info(`heard ${p_message.message}`); if (p_message.id === p_messageId) { + this.removeListener('message', listener); //resolve(p_message.message); resolve(p_message.message); @@ -356,6 +491,9 @@ export abstract class Service extends EventEmitter { assert.fail('Implement this'); } + //protected abstract parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage; + protected abstract parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage; + protected abstract parseData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; diff --git a/services/StateMap.ts b/services/StateMap.ts index 1936ff6..18b66d8 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,9 +1,9 @@ import { strict as assert } from 'assert'; -import { StageLinqValue, StageLinqValueObj } from '../types'; +import { MessageId, StageLinqValue, StageLinqValueObj } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -import type { ServiceMessage } from '../types'; +import type { ServiceMessage, DeviceId } from '../types'; import { deviceIdFromBuff } from '../types'; import { Socket, AddressInfo } from 'net'; import { Logger } from '../LogEmitter'; @@ -121,10 +121,20 @@ export class StateMap extends Service { } } + //protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + //assert((this.p)) + this.subscribe(socket); + return + } + + protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number, isSub: boolean): ServiceMessage { //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "parseTop",true ); //test if this is a serviceRequest + /* const checkSvcReq = p_ctx.readUInt32(); if (p_ctx.sizeLeft() === 38 && checkSvcReq === 0) { const token = p_ctx.read(16); @@ -135,10 +145,10 @@ export class StateMap extends Service { return } p_ctx.rewind(); - +*/ const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { - this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "magCheck", true); + //this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "magCheck", true); Logger.error(this.name, msgId) } assert(marker === MAGIC_MARKER); diff --git a/types/index.ts b/types/index.ts index d5cadd7..3de9905 100644 --- a/types/index.ts +++ b/types/index.ts @@ -5,6 +5,7 @@ export * from './common'; export * from './player'; export * from './tokens'; export * from './models'; +export * from './DeviceId'; export interface DiscoveryMessage { token: Uint8Array; @@ -17,6 +18,11 @@ export interface DiscoveryMessage { port: number; } +export interface ConnectionInfo extends DiscoveryMessage { + address: IpAddress; + addressPort?: string; +} + export interface ServicePorts { [key: string]: number; } @@ -42,11 +48,9 @@ export interface FileTransferInfo { // TODO: Maybe some kind of validation? export type IpAddress = string; +export type IpAddressPort = string; + -export interface ConnectionInfo extends DiscoveryMessage { - address: IpAddress; - addressPort?: string; -} export enum Services { //StateMap = "StateMap", FileTransfer = "FileTransfer", diff --git a/types/tokens.ts b/types/tokens.ts index e93903a..37db11d 100644 --- a/types/tokens.ts +++ b/types/tokens.ts @@ -9,10 +9,12 @@ export const Tokens = { Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) } +/* export function deviceIdFromBuff(token: Uint8Array): string { return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); } +*/ export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { NowPlaying: { diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index 1afd25e..f2f69de 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -34,6 +34,12 @@ export class ReadContext extends Context { return Buffer.from(newArrayBuffer); } + readRemainingAsNewArrayBuffer(): ArrayBuffer { + const view = this.readRemaining(); + const newArrayBuffer = view.buffer.slice(view.byteOffset, view.byteOffset + view.length); + return newArrayBuffer; + } + readRemainingAsNewCtx(): ReadContext { const newArrayBuffer = this.buffer.slice(this.pos, this.pos + this.sizeLeft()); From 720703de1edbefea888ad49b328c5c0a4a6145a5 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 18:54:29 -0400 Subject: [PATCH 012/146] working???? maybe!! --- cli/index.ts | 2 +- log.txt | 406 ++++++++++++++++++++++++--------------- services/FileTransfer.ts | 14 +- services/Service.ts | 92 +++++++-- types/DeviceId.ts | 2 +- 5 files changed, 329 insertions(+), 187 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 7a7b10e..323e33d 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -157,7 +157,7 @@ async function main() { } // Example of how to download the actual track from the media. - await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), 'media')); + //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), 'media')); }); // Fires when a track has started playing. diff --git a/log.txt b/log.txt index 0f4ea42..4f39de4 100644 --- a/log.txt +++ b/log.txt @@ -1,158 +1,250 @@ -[40] [BEGIN] +[55] [BEGIN] -[14151] Announced myself on 50239 -[42164] [Directory] connection from 192.168.2.83:40805 -[43349] [Directory] connection from 192.168.2.83:38039 -[43928] [Directory] connection from 192.168.2.83:51371 -[304650] [Directory] sent ServiceAnnouncement to 192.168.2.83:40805 -[306253] [Directory] sent ServiceAnnouncement to 192.168.2.83:38039 -[306932] [Directory] sent ServiceAnnouncement to 192.168.2.83:51371 -[319636] [FileTransfer] connection from 192.168.2.83:58425 -[320631] [0] [FileTransfer] noID (!deviceID) 70 00000000696323153d544096bbb9b4b7f0cc05540000001800460069006c0065005400720061006e0073006600650072e43900000010666c74780000000000000008ffffffff -[322143] string length: 24 ctx sizeLeft: 46 -[323265] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[323976] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[324623] [0] [FileTransfer] 69632315-3d54-4096-bbb9-b4b7f0cc0554 (while) 16 666c74780000000000000008ffffffff -[325927] [FileTransfer] connection from 192.168.2.83:46307 -[326640] [FileTransfer] connection from 192.168.2.83:47375 -[327193] [StateMap] connection from 192.168.2.83:53491 -[327451] [2] [FileTransfer] noID (!deviceID) 70 00000000f2befde7cf4f424dab2f4f0f7edcb3870000001800460069006c0065005400720061006e0073006600650072b4e300000010666c74780000000000000008ffffffff -[327862] string length: 24 ctx sizeLeft: 46 -[328176] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[328472] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[328778] [2] [FileTransfer] f2befde7-cf4f-424d-ab2f-4f0f7edcb387 (while) 16 666c74780000000000000008ffffffff -[328897] [4] [FileTransfer] noID (!deviceID) 72 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072b90f00000012666c74780000000000000008000000020031 -[329365] string length: 24 ctx sizeLeft: 48 -[329715] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[330020] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[330622] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e -[331065] [4] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 18 666c74780000000000000008000000020031 -[331222] [0] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070d0f3 -[331583] string length: 16 ctx sizeLeft: 18 -[331938] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[332325] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[332699] Sending Statemap subscriptions to 192.168.2.83:53491 -[335934] [6] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 -[341582] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e -[342094] [8] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[342412] [8] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff -[342923] listening for msg 1 -[350159] [11] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d702f478400000000000002588d6044aa200000000000000041000 -[351841] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[352389] [1] 192.168.2.83:53491 /Client/Preferences/Player => {"string":"1","type":4} -[352452] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[352789] [1] 192.168.2.83:53491 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[352841] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[353141] [1] 192.168.2.83:53491 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[353192] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[353495] [1] 192.168.2.83:53491 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[353549] [1] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[353846] [1] 192.168.2.83:53491 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[356624] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[357211] [7] 192.168.2.83:53491 /Engine/Deck1/Play => {"state":false,"type":1} -[357270] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[357615] [7] 192.168.2.83:53491 /Engine/Deck1/PlayState => {"state":false,"type":1} -[357662] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[357981] [7] 192.168.2.83:53491 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[358061] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[358369] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[358416] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[358710] [7] 192.168.2.83:53491 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[358756] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[359068] [7] 192.168.2.83:53491 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[359110] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[359411] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[359478] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[359820] [7] 192.168.2.83:53491 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[359880] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[360262] [7] 192.168.2.83:53491 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[360311] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[360656] [7] 192.168.2.83:53491 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[360697] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[361011] [7] 192.168.2.83:53491 /Engine/Deck2/Play => {"state":false,"type":1} -[361050] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[361354] [7] 192.168.2.83:53491 /Engine/Deck2/PlayState => {"state":false,"type":1} -[361393] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[361697] [7] 192.168.2.83:53491 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[361743] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[362046] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[362085] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[362397] [7] 192.168.2.83:53491 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[362441] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[362828] [7] 192.168.2.83:53491 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[362890] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[363400] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[363485] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[363930] [7] 192.168.2.83:53491 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[363984] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[364337] [7] 192.168.2.83:53491 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[364359] [7] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 96 0000007a736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b0022007400790070 -[364630] [27] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 30 00650022003a0030002c002200760061006c007500650022003a0030007d -[365488] StateMap 27 00650022003a0030002c002200760061006c007500650022003a0030007d -[865868] [object Object] -[2335041] [13] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 -[5147991] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5148691] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5148851] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5149010] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5149161] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5149334] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5149502] [28] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5154906] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5155869] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5156052] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5156183] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff -[5156341] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff -[5156574] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff -[5156705] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff -[5156842] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff -[5156987] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5157122] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5157230] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5157342] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5157475] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5157605] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5157714] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5157823] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5157926] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5158031] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5158174] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff -[5158293] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff -[5158398] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff -[5158502] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff -[5158604] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff -[5158719] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5158831] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5158933] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5159050] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5159154] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5159252] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5159336] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5159416] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5159502] [36] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5165869] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5166264] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff -[5166360] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff -[5166480] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff -[5166584] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff -[5166671] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff -[5166772] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5166878] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5166982] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5167095] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5167201] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5167339] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5167442] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5167543] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5167639] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5167743] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5167851] [69] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff -[5173144] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff -[5173652] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff -[5173741] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff -[5173821] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff -[5173886] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff -[5173960] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff -[5174050] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff -[5174144] [87] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[6336471] [15] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c747800000071000007d200000000 +[15210] Announced myself on 52798 +[49819] [Directory] connection from 192.168.2.83:47633 +[50988] [Directory] connection from 192.168.2.83:58499 +[51576] [Directory] connection from 192.168.2.83:42587 +[310843] [Directory] sent ServiceAnnouncement to 192.168.2.83:47633 +[312495] [Directory] sent ServiceAnnouncement to 192.168.2.83:58499 +[313706] [Directory] sent ServiceAnnouncement to 192.168.2.83:42587 +[333710] [FileTransfer] connection from 192.168.2.83:54963 +[338505] [FileTransfer] connection from 192.168.2.83:37149 +[340051] [FileTransfer] connection from 192.168.2.83:53855 +[341347] [StateMap] connection from 192.168.2.83:36773 +[342186] [[1]:[1]] [FileTransfer] noID (!deviceID) 70 00000000f2befde7cf4f424dab2f4f0f7edcb3870000001800460069006c0065005400720061006e0073006600650072d6b300000010666c74780000000000000008ffffffff +[343339] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[344284] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[344853] [[1]:[1]] [FileTransfer] f2befde7-cf4f-424d-ab2f-4f0f7edcb387 (while) 16 666c74780000000000000008ffffffff +[346573] [[3]:[1]] [FileTransfer] noID (!deviceID) 72 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072911d00000012666c74780000000000000008000000020031 +[347729] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[348566] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[349494] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e +[350521] [[3]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 18 666c74780000000000000008000000020031 +[350878] [[5]:[1]] [FileTransfer] noID (!deviceID) 70 00000000696323153d544096bbb9b4b7f0cc05540000001800460069006c0065005400720061006e0073006600650072d25f00000010666c74780000000000000008ffffffff +[351799] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[352478] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[352555] [[5]:[1]] [FileTransfer] 69632315-3d54-4096-bbb9-b4b7f0cc0554 (while) 16 666c74780000000000000008ffffffff +[353092] [[7]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[353298] [[1]:[1]] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d006100708fa5 +[354183] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[354934] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[355704] Sending Statemap subscriptions to 192.168.2.83:36773 +[363781] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e +[364692] [[9]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 +[364751] [[9]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff +[369141] [[2]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[370169] [1] 192.168.2.83:36773 /Client/Preferences/Player => {"string":"1","type":4} +[370303] [[2]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[370937] [2] 192.168.2.83:36773 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[371030] [[2]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[371541] [3] 192.168.2.83:36773 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[371629] [[2]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[372174] [4] 192.168.2.83:36773 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[372277] [[2]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[372797] [5] 192.168.2.83:36773 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[372897] [[2]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[373392] [6] 192.168.2.83:36773 /Engine/Deck1/Play => {"state":false,"type":1} +[373461] [[2]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[373960] [7] 192.168.2.83:36773 /Engine/Deck1/PlayState => {"state":false,"type":1} +[374197] [[2]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[374961] [8] 192.168.2.83:36773 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[375131] [[2]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[375718] [9] 192.168.2.83:36773 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[376107] [[12]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[376779] [1] 192.168.2.83:36773 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[376882] [[12]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[377406] [2] 192.168.2.83:36773 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[377479] [[12]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[378006] [3] 192.168.2.83:36773 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[378107] [[12]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[378635] [4] 192.168.2.83:36773 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[378703] [[12]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[379202] [5] 192.168.2.83:36773 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[379263] [[12]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[379777] [6] 192.168.2.83:36773 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[379840] [[12]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[380326] [7] 192.168.2.83:36773 /Engine/Deck2/Play => {"state":false,"type":1} +[380385] [[12]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[380867] [8] 192.168.2.83:36773 /Engine/Deck2/PlayState => {"state":false,"type":1} +[380932] [[12]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[381416] [9] 192.168.2.83:36773 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[381485] [[12]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[381972] [10] 192.168.2.83:36773 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[382005] [[12]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 16 0000007c736d6161000000000000003c +[382451] [[12]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d702f478400000000000002588d6044aa200000000000000041000 +[383144] [[23]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[383763] [1] 192.168.2.83:36773 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[383830] [[23]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[384297] [2] 192.168.2.83:36773 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[384357] [[23]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[384824] [3] 192.168.2.83:36773 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[384887] [[23]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[385348] [4] 192.168.2.83:36773 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[385411] [[23]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[385869] [5] 192.168.2.83:36773 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[385938] [[23]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[386563] [6] 192.168.2.83:36773 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[887998] downloadDb request for undefined +[892777] Reading database undefined/HONUSZ (USB 1) +[898702] [object Object] +[902431] [[14]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 24 666c74780000000000000004000000000004100000000001 +[904233] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/266240 +[910623] [[16]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000000000... +[910868] [[16]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 220 00001018666c747800000000000000050000000000001000000010000d000000010fc6000fc60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +[912020] [[18]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3116 00001018666c7478000000000000000500000000... +[915741] [[19]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000001000... +[915980] [[19]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000002000... +[916030] [[19]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2108 00001018666c7478000000000000000500000000... +[920092] [[22]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000003000... +[920327] [[22]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000004000... +[920392] [[22]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000005000... +[920441] [[22]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2768 00001018666c7478000000000000000500000000... +[925916] [[26]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000006000... +[926156] [[26]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000007000... +[926233] [[26]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000008000... +[926277] [[26]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1980 00001018666c7478000000000000000500000000... +[927290] [[30]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000009000... +[927527] [[30]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000a000... +[927577] [[30]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2420 00001018666c7478000000000000000500000000... +[929215] [[33]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000b000... +[929445] [[33]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000c000... +[929529] [[33]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000d000... +[929567] [[33]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1632 00001018666c7478000000000000000500000000... +[932011] [[37]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000e000... +[932252] [[37]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000f000... +[932303] [[37]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3520 00001018666c7478000000000000000500000000... +[938218] [[40]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000010000... +[938444] [[40]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000011000... +[938518] [[40]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000012000... +[938602] [[40]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000013000... +[938683] [[40]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000014000... +[938762] [[40]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000015000... +[938851] [[40]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000016000... +[938921] [[40]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000017000... +[938991] [[40]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000018000... +[939057] [[40]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000019000... +[939102] [[40]:[11]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2824 00001018666c7478000000000000000500000000... +[941004] [[51]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001a000... +[941248] [[51]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001b000... +[941315] [[51]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001c000... +[941380] [[51]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001d000... +[941445] [[51]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001e000... +[941509] [[51]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001f000... +[941570] [[51]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000020000... +[941638] [[51]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000021000... +[941700] [[51]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000022000... +[941764] [[51]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000023000... +[941801] [[51]:[11]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2128 00001018666c7478000000000000000500000000... +[949199] [[62]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000024000... +[949476] [[62]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000025000... +[949527] [[62]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2568 00001018666c7478000000000000000500000000... +[949850] [[65]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000026000... +[949912] [[65]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000027000... +[949969] [[65]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000028000... +[950024] [[65]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000029000... +[950079] [[65]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002a000... +[950136] [[65]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002b000... +[950187] [[65]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002c000... +[950241] [[65]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002d000... +[950297] [[65]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002e000... +[950332] [[65]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3100 00001018666c7478000000000000000500000000... +[954767] [[75]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002f000... +[954977] [[75]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000030000... +[955047] [[75]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000031000... +[955108] [[75]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000032000... +[955164] [[75]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000033000... +[955220] [[75]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000034000... +[955278] [[75]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000035000... +[955341] [[75]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000036000... +[955373] [[75]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1964 00001018666c7478000000000000000500000000... +[955652] [[84]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000037000... +[955708] [[84]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000038000... +[955763] [[84]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000039000... +[955820] [[84]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003a000... +[955877] [[84]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003b000... +[955933] [[84]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003c000... +[955987] [[84]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003d000... +[956045] [[84]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003e000... +[956114] [[84]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 828 00001018666c7478000000000000000500000000... +[957082] [[93]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003f000... +[957275] [[93]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000040000... +[1110913] Download complete. +[1111551] Signaling transfer complete. +[1112482] Saving undefined/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/undefined/HONUSZ (USB 1)/m.db +[1113644] Downloaded undefined/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/undefined/HONUSZ (USB 1)/m.db +[2336712] [[96]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[5705971] [[30]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5706823] [[30]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5707024] [[30]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5707142] [[30]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5707271] [[30]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5707395] [[30]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5707512] [[30]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5707624] [[30]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5707740] [[30]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5707856] [[30]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5707961] [[30]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff +[5708074] [[30]:[12]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff +[5708204] [[30]:[13]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff +[5708314] [[30]:[14]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff +[5708431] [[30]:[15]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff +[5708544] [[30]:[16]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5708648] [[30]:[17]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5708758] [[30]:[18]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5708863] [[30]:[19]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5708978] [[30]:[20]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5709084] [[30]:[21]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5709172] [[30]:[22]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5709264] [[30]:[23]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5709354] [[30]:[24]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5709448] [[30]:[25]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5709539] [[30]:[26]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff +[5709625] [[30]:[27]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff +[5709718] [[30]:[28]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff +[5709800] [[30]:[29]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff +[5709892] [[30]:[30]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff +[5709999] [[30]:[31]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5710085] [[30]:[32]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5710205] [[30]:[33]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5710291] [[30]:[34]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5710399] [[30]:[35]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5710510] [[30]:[36]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5710611] [[30]:[37]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5710697] [[30]:[38]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5710790] [[30]:[39]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5711130] [[30]:[40]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5711307] [[30]:[41]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff +[5711421] [[30]:[42]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff +[5711497] [[30]:[43]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff +[5711571] [[30]:[44]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff +[5711662] [[30]:[45]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff +[5711774] [[30]:[46]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff +[5711861] [[30]:[47]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff +[5711939] [[30]:[48]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff +[5712045] [[30]:[49]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff +[5712143] [[30]:[50]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff +[5712245] [[30]:[51]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff +[5712325] [[30]:[52]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff +[5712418] [[30]:[53]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff +[5712488] [[30]:[54]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff +[5712567] [[30]:[55]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff +[5712636] [[30]:[56]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff +[5712702] [[30]:[57]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff +[5712769] [[30]:[58]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff +[5712836] [[30]:[59]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff +[5712902] [[30]:[60]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff +[5712964] [[30]:[61]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff +[5713034] [[30]:[62]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff +[5713124] [[30]:[63]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff +[5713214] [[30]:[64]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff +[6317099] [[98]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[10261388] [[100]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[14254207] [[102]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[18235046] [[104]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[22233328] [[106]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[26242507] [[108]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[30239305] [[110]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[34235317] [[112]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[38235901] [[114]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[42290773] [[116]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[46242411] [[118]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index dc33374..f114ef1 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -228,7 +228,7 @@ export class FileTransfer extends Service { // Else const messageId: MessageId = p_ctx.readUInt32(); //console.log(`[${msgId}] `,MessageId[messageId], messageId); - console.log(`[${msgId}] `,deviceId.toString(), ' MessageID: ', MessageId[messageId]); + //console.log(`[${msgId}] `,deviceId.toString(), ' MessageID: ', MessageId[messageId]); switch (messageId) { case MessageId.SourceLocations: { const sources: string[] = []; @@ -357,7 +357,7 @@ export class FileTransfer extends Service { const txinfo = await this.waitForMessage(MessageId.FileTransferId); if (txinfo) { - Logger.info(`heard ${txinfo}`); + //Logger.info(`heard ${txinfo}`); this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); @@ -533,7 +533,7 @@ export interface Source { //} await this.deviceSources.set(msgDeviceId, devices); await sleep(500); - //this.downloadDb(msgDeviceId, socket); + this.downloadDb(msgDeviceId, socket); const testDev = this.deviceSources.get(msgDeviceId); Logger.info(testDev); return result; @@ -601,7 +601,7 @@ export interface Source { //console.info(source); Logger.info(`downloadDb request for ${deviceId}`); const deviceSources = this.deviceSources.get(deviceId); - const service = this.services.get(deviceId) + // const service = this.services.get(deviceId) for (const sourceName in deviceSources) { @@ -618,11 +618,11 @@ export interface Source { // Save database to a file const file = await this.getFile(source.database.location, socket); - Logger.debug(`Saving ${service.deviceId}/${sourceName} to ${dbPath}`); + Logger.debug(`Saving ${deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); - Logger.debug(`Downloaded ${service.deviceId}/${sourceName} to ${dbPath}`); - this.emit('dbDownloaded', service.deviceId, dbPath); + Logger.debug(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); + this.emit('dbDownloaded', deviceId, dbPath); } } diff --git a/services/Service.ts b/services/Service.ts index c5d6e54..f068c2e 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -27,6 +27,53 @@ export declare type ServiceData = { //type PeerData = { //} +/* +interface MsgId { + (val: number): string; + //loopId: number; + //getString(): string; + increment(): void; + reset(): void; +} + +function getMsgId(): MsgId { + let msgId = function (start: number) {} as MsgId; + //counter.interval = 123; + msgId.reset = function () {}; + msgId.increment = function () {}; + return msgId; + } + */ + +interface Counter { + (start: number): string; + interval: number; + reset(): void; + } + + function getCounter(): Counter { + let counter = function (start: number) {} as Counter; + counter.interval = 1; + counter.reset = function () {}; + return counter; + } + + class MsgId { + public id: number = 0; + public loopId: number = 1; + + constructor(p_id?: number) { + this.id = p_id; + } + + incrementId() {this.id++}; + incrementLoopId() {this.loopId++}; + reset() {this.loopId = 1} + toString(): string { + return `[${this.id}]:[${this.loopId}]` + } + } + type ServiceBuffers = { [key: string]: Buffer; @@ -126,17 +173,19 @@ export abstract class Service extends EventEmitter { socket.on('data', async p_data => { //let messages:ReadContext[] = []; - - const thisMsgId = this.msgId; this.msgId++ + const msgId = new MsgId(this.msgId); + //append queue to current data let buffer: Buffer = null; if (this.serviceBuffers[ipAddressPort] && this.serviceBuffers[ipAddressPort].length > 0) { buffer = Buffer.concat([this.serviceBuffers[ipAddressPort], p_data]); + //Logger.info(`[${msgId.toString()}] serviceBuffer ${ipAddressPort} ${this.serviceBuffers[ipAddressPort].length} ${this.serviceBuffers[ipAddressPort].toString('hex')}`); } else { buffer = p_data; } + this.serviceBuffers[ipAddressPort] = null // FIXME: Clean up this arraybuffer confusion mess const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); @@ -144,21 +193,21 @@ export abstract class Service extends EventEmitter { //If directory service, send unparsed data immediately, empty buffer if (this.name === "Directory") { - const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket, thisMsgId,true); + const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket, msgId.id); //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); this.messageHandler(parsedData); this.emit('message', parsedData); } //check if device has announced itself to this service yet if (!deviceId && ctx.sizeLeft() >= 20) { - this.testPoint(ctx, "noID", thisMsgId, "!deviceID", true); + this.testPoint(ctx, "noID", msgId, "!deviceID", true); const messageId = ctx.readUInt32() deviceId = new DeviceId(ctx.read(16)); //peak at network string length then rewind const stringLength = ctx.readUInt32(); - Logger.debug(`string length: ${stringLength} ctx sizeLeft: ${ctx.sizeLeft()}`) + //Logger.debug(`string length: ${stringLength} ctx sizeLeft: ${ctx.sizeLeft()}`) ctx.seek(-4); (assert (stringLength <= ctx.sizeLeft())); @@ -172,7 +221,7 @@ export abstract class Service extends EventEmitter { //const wtx = ne Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket, thisMsgId,true); + const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket, msgId.id); //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); this.messageHandler(parsedData); this.emit('message', parsedData); @@ -269,17 +318,17 @@ export abstract class Service extends EventEmitter { } } else { */ - if (this.name !== 'Directory') { + //if (this.name !== 'Directory') { //Logger.debug(`[${this.name}] isEof: ${ctx.isEOF()} ctx sizeLeft: ${ctx.sizeLeft()}`); - } + //} try { //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); + //let loopId = 1 while (ctx.isEOF() === false) { - if (ctx.sizeLeft() < 4) { - queue = ctx.readRemainingAsNewBuffer(); + this.serviceBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); break; } @@ -299,8 +348,8 @@ export abstract class Service extends EventEmitter { //data = await this.testPoint(data, this.getDeviceIdFromSocket(socket), this.msgId, "preparse", true ); this.msgId++ - const parsedData = this.parseData(new ReadContext(data,false), socket, thisMsgId); - this.testPoint(new ReadContext(data,false), deviceId.toString(), thisMsgId, "while", true ); + const parsedData = this.parseData(new ReadContext(data,false), socket, msgId.loopId); + this.testPoint(new ReadContext(data,false), deviceId.toString(), msgId, "while", true ); //messages.push(new ReadContext(data, false)) // Forward parsed data to message handler @@ -308,20 +357,21 @@ export abstract class Service extends EventEmitter { this.emit('message', parsedData); } else { ctx.seek(-4); // Rewind 4 bytes to include the length again - this.testPoint(ctx, deviceId.toString(), thisMsgId, "toqueue", true ); - queue = ctx.readRemainingAsNewBuffer(); - if (queue.length < 50) { - Logger.debug(this.name, thisMsgId, queue.toString('hex')); + this.testPoint(ctx, deviceId.toString(), msgId, "toqueue", true ); + this.serviceBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); + if (queue && queue.length < 50) { + //Logger.debug(this.name, msgId.toString(), queue.toString('hex')); } break; } + msgId.incrementLoopId(); } //for (const ctx of messages) { // const stringMsg = ctx.getString(ctx.sizeLeft()) // console.log(stringMsg); //} } catch (err) { - Logger.error(this.name, thisMsgId, deviceId.toString(), err); + Logger.error(this.name, msgId.toString(), deviceId.toString(), err); } //} @@ -427,7 +477,7 @@ export abstract class Service extends EventEmitter { async waitForMessage(p_messageId: number): Promise { return await new Promise((resolve, reject) => { - Logger.info(`listening for msg ${p_messageId}`); + //Logger.info(`listening for msg ${p_messageId}`); const listener = (p_message: ServiceMessage) => { //Logger.info(`heard ${p_message.message}`); if (p_message.id === p_messageId) { @@ -465,7 +515,7 @@ export abstract class Service extends EventEmitter { return thisEntry.keys.toString(); } - protected testPoint(_ctx: ReadContext, deviceId: string, msgId: number, name: string, silent?:boolean) { + protected testPoint(_ctx: ReadContext, deviceId: string, msg: MsgId, name: string, silent?:boolean) { const ctx = _ctx.readRemainingAsNewCtx(); const length = ctx.sizeLeft(); let buff = "" @@ -479,9 +529,9 @@ export abstract class Service extends EventEmitter { buff += "..."; } if (silent) { - Logger.silent(`[${msgId}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); + Logger.silent(`[${msg.toString()}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } else { - Logger.debug(`[${msgId}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); + Logger.debug(`[${msg.toString()}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } } diff --git a/types/DeviceId.ts b/types/DeviceId.ts index c8470b1..0337d51 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -1,5 +1,5 @@ import { strict as assert } from 'assert'; -import { type } from 'os'; + class InvalidDeviceIdError extends Error { constructor(m?: string) { From 2bc114b11c93a2339a83f7df175f61bc4e6a262a Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 22:20:04 -0400 Subject: [PATCH 013/146] yes! Working! Fml.. --- log.txt | 625 ++++++++++++++++++++++-------------- network/StageLinqDevices.ts | 2 +- services/Directory.ts | 4 +- services/FileTransfer.ts | 13 +- services/Service.ts | 2 +- services/StateMap.ts | 10 +- 6 files changed, 394 insertions(+), 262 deletions(-) diff --git a/log.txt b/log.txt index 4f39de4..e708ce8 100644 --- a/log.txt +++ b/log.txt @@ -1,250 +1,377 @@ -[55] [BEGIN] +[51] [BEGIN] -[15210] Announced myself on 52798 -[49819] [Directory] connection from 192.168.2.83:47633 -[50988] [Directory] connection from 192.168.2.83:58499 -[51576] [Directory] connection from 192.168.2.83:42587 -[310843] [Directory] sent ServiceAnnouncement to 192.168.2.83:47633 -[312495] [Directory] sent ServiceAnnouncement to 192.168.2.83:58499 -[313706] [Directory] sent ServiceAnnouncement to 192.168.2.83:42587 -[333710] [FileTransfer] connection from 192.168.2.83:54963 -[338505] [FileTransfer] connection from 192.168.2.83:37149 -[340051] [FileTransfer] connection from 192.168.2.83:53855 -[341347] [StateMap] connection from 192.168.2.83:36773 -[342186] [[1]:[1]] [FileTransfer] noID (!deviceID) 70 00000000f2befde7cf4f424dab2f4f0f7edcb3870000001800460069006c0065005400720061006e0073006600650072d6b300000010666c74780000000000000008ffffffff -[343339] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[344284] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[344853] [[1]:[1]] [FileTransfer] f2befde7-cf4f-424d-ab2f-4f0f7edcb387 (while) 16 666c74780000000000000008ffffffff -[346573] [[3]:[1]] [FileTransfer] noID (!deviceID) 72 000000004be141125ead4848a07db37ca8a7220e0000001800460069006c0065005400720061006e0073006600650072911d00000012666c74780000000000000008000000020031 -[347729] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[348566] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[349494] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e -[350521] [[3]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 18 666c74780000000000000008000000020031 -[350878] [[5]:[1]] [FileTransfer] noID (!deviceID) 70 00000000696323153d544096bbb9b4b7f0cc05540000001800460069006c0065005400720061006e0073006600650072d25f00000010666c74780000000000000008ffffffff -[351799] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[352478] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[352555] [[5]:[1]] [FileTransfer] 69632315-3d54-4096-bbb9-b4b7f0cc0554 (while) 16 666c74780000000000000008ffffffff -[353092] [[7]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[353298] [[1]:[1]] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d006100708fa5 -[354183] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[354934] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[355704] Sending Statemap subscriptions to 192.168.2.83:36773 -[363781] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e -[364692] [[9]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 51 666c74780000000000000003000000010000001c0048004f004e00550053005a00200028005500530042002000310029010101 -[364751] [[9]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 25 666c7478000000000000000201000000007fffffffffffffff -[369141] [[2]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[370169] [1] 192.168.2.83:36773 /Client/Preferences/Player => {"string":"1","type":4} -[370303] [[2]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[370937] [2] 192.168.2.83:36773 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[371030] [[2]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[371541] [3] 192.168.2.83:36773 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[371629] [[2]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[372174] [4] 192.168.2.83:36773 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[372277] [[2]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[372797] [5] 192.168.2.83:36773 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[372897] [[2]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[373392] [6] 192.168.2.83:36773 /Engine/Deck1/Play => {"state":false,"type":1} -[373461] [[2]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[373960] [7] 192.168.2.83:36773 /Engine/Deck1/PlayState => {"state":false,"type":1} -[374197] [[2]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[374961] [8] 192.168.2.83:36773 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[375131] [[2]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[375718] [9] 192.168.2.83:36773 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[376107] [[12]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[376779] [1] 192.168.2.83:36773 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[376882] [[12]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[377406] [2] 192.168.2.83:36773 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[377479] [[12]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[378006] [3] 192.168.2.83:36773 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[378107] [[12]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[378635] [4] 192.168.2.83:36773 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[378703] [[12]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[379202] [5] 192.168.2.83:36773 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[379263] [[12]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[379777] [6] 192.168.2.83:36773 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[379840] [[12]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[380326] [7] 192.168.2.83:36773 /Engine/Deck2/Play => {"state":false,"type":1} -[380385] [[12]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[380867] [8] 192.168.2.83:36773 /Engine/Deck2/PlayState => {"state":false,"type":1} -[380932] [[12]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[381416] [9] 192.168.2.83:36773 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[381485] [[12]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[381972] [10] 192.168.2.83:36773 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[382005] [[12]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 16 0000007c736d6161000000000000003c -[382451] [[12]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 65 666c747800000000000000010100000066448000000000000000ffffffff0000000000002588d702f478400000000000002588d6044aa200000000000000041000 -[383144] [[23]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[383763] [1] 192.168.2.83:36773 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[383830] [[23]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[384297] [2] 192.168.2.83:36773 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[384357] [[23]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[384824] [3] 192.168.2.83:36773 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[384887] [[23]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[385348] [4] 192.168.2.83:36773 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[385411] [[23]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[385869] [5] 192.168.2.83:36773 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[385938] [[23]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[386563] [6] 192.168.2.83:36773 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[887998] downloadDb request for undefined -[892777] Reading database undefined/HONUSZ (USB 1) -[898702] [object Object] -[902431] [[14]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 24 666c74780000000000000004000000000004100000000001 -[904233] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/266240 -[910623] [[16]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000000000... -[910868] [[16]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 220 00001018666c747800000000000000050000000000001000000010000d000000010fc6000fc60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -[912020] [[18]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3116 00001018666c7478000000000000000500000000... -[915741] [[19]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000001000... -[915980] [[19]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000002000... -[916030] [[19]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2108 00001018666c7478000000000000000500000000... -[920092] [[22]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000003000... -[920327] [[22]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000004000... -[920392] [[22]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000005000... -[920441] [[22]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2768 00001018666c7478000000000000000500000000... -[925916] [[26]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000006000... -[926156] [[26]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000007000... -[926233] [[26]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000008000... -[926277] [[26]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1980 00001018666c7478000000000000000500000000... -[927290] [[30]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000009000... -[927527] [[30]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000a000... -[927577] [[30]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2420 00001018666c7478000000000000000500000000... -[929215] [[33]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000b000... -[929445] [[33]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000c000... -[929529] [[33]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000d000... -[929567] [[33]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1632 00001018666c7478000000000000000500000000... -[932011] [[37]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000e000... -[932252] [[37]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000000f000... -[932303] [[37]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3520 00001018666c7478000000000000000500000000... -[938218] [[40]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000010000... -[938444] [[40]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000011000... -[938518] [[40]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000012000... -[938602] [[40]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000013000... -[938683] [[40]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000014000... -[938762] [[40]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000015000... -[938851] [[40]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000016000... -[938921] [[40]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000017000... -[938991] [[40]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000018000... -[939057] [[40]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000019000... -[939102] [[40]:[11]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2824 00001018666c7478000000000000000500000000... -[941004] [[51]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001a000... -[941248] [[51]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001b000... -[941315] [[51]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001c000... -[941380] [[51]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001d000... -[941445] [[51]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001e000... -[941509] [[51]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000001f000... -[941570] [[51]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000020000... -[941638] [[51]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000021000... -[941700] [[51]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000022000... -[941764] [[51]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000023000... -[941801] [[51]:[11]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2128 00001018666c7478000000000000000500000000... -[949199] [[62]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000024000... -[949476] [[62]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000025000... -[949527] [[62]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 2568 00001018666c7478000000000000000500000000... -[949850] [[65]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000026000... -[949912] [[65]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000027000... -[949969] [[65]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000028000... -[950024] [[65]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000029000... -[950079] [[65]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002a000... -[950136] [[65]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002b000... -[950187] [[65]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002c000... -[950241] [[65]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002d000... -[950297] [[65]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002e000... -[950332] [[65]:[10]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 3100 00001018666c7478000000000000000500000000... -[954767] [[75]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000002f000... -[954977] [[75]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000030000... -[955047] [[75]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000031000... -[955108] [[75]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000032000... -[955164] [[75]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000033000... -[955220] [[75]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000034000... -[955278] [[75]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000035000... -[955341] [[75]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000036000... -[955373] [[75]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 1964 00001018666c7478000000000000000500000000... -[955652] [[84]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000037000... -[955708] [[84]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000038000... -[955763] [[84]:[3]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000039000... -[955820] [[84]:[4]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003a000... -[955877] [[84]:[5]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003b000... -[955933] [[84]:[6]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003c000... -[955987] [[84]:[7]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003d000... -[956045] [[84]:[8]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003e000... -[956114] [[84]:[9]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (toqueue) 828 00001018666c7478000000000000000500000000... -[957082] [[93]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c74780000000000000005000000000003f000... -[957275] [[93]:[2]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 4120 666c747800000000000000050000000000040000... -[1110913] Download complete. -[1111551] Signaling transfer complete. -[1112482] Saving undefined/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/undefined/HONUSZ (USB 1)/m.db -[1113644] Downloaded undefined/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/undefined/HONUSZ (USB 1)/m.db -[2336712] [[96]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[5705971] [[30]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5706823] [[30]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5707024] [[30]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5707142] [[30]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5707271] [[30]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5707395] [[30]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5707512] [[30]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5707624] [[30]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5707740] [[30]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5707856] [[30]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5707961] [[30]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0042006c006500650070ffffffff -[5708074] [[30]:[12]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004dffffffff -[5708204] [[30]:[13]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900530074006100740065ffffffff -[5708314] [[30]:[14]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006100640073002f0056006900650077ffffffff -[5708431] [[30]:[15]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0031002f00530079006e0063004d006f00640065ffffffff -[5708544] [[30]:[16]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5708648] [[30]:[17]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5708758] [[30]:[18]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5708863] [[30]:[19]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5708978] [[30]:[20]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5709084] [[30]:[21]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5709172] [[30]:[22]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5709264] [[30]:[23]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5709354] [[30]:[24]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5709448] [[30]:[25]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5709539] [[30]:[26]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0042006c006500650070ffffffff -[5709625] [[30]:[27]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004dffffffff -[5709718] [[30]:[28]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900530074006100740065ffffffff -[5709800] [[30]:[29]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006100640073002f0056006900650077ffffffff -[5709892] [[30]:[30]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0032002f00530079006e0063004d006f00640065ffffffff -[5709999] [[30]:[31]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5710085] [[30]:[32]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5710205] [[30]:[33]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5710291] [[30]:[34]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5710399] [[30]:[35]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5710510] [[30]:[36]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5710611] [[30]:[37]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5710697] [[30]:[38]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5710790] [[30]:[39]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5711130] [[30]:[40]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5711307] [[30]:[41]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0033002f0054007200610063006b002f0042006c006500650070ffffffff -[5711421] [[30]:[42]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0033002f00430075007200720065006e007400420050004dffffffff -[5711497] [[30]:[43]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006c0061007900530074006100740065ffffffff -[5711571] [[30]:[44]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0033002f0050006100640073002f0056006900650077ffffffff -[5711662] [[30]:[45]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0033002f00530079006e0063004d006f00640065ffffffff -[5711774] [[30]:[46]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 88 736d6161000007d200000048002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b0050006100740068ffffffff -[5711861] [[30]:[47]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 72 736d6161000007d200000038002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b005500720069ffffffff -[5711939] [[30]:[48]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 78 736d6161000007d20000003e002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b004c0065006e006700740068ffffffff -[5712045] [[30]:[49]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0054007200610063006b00420079007400650073ffffffff -[5712143] [[30]:[50]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 98 736d6161000007d200000052002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f00700049006e0050006f0073006900740069006f006effffffff -[5712245] [[30]:[51]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d6161000007d200000054002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004c006f006f0070004f007500740050006f0073006900740069006f006effffffff -[5712325] [[30]:[52]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004c006f006f00700045006e00610062006c006500530074006100740065ffffffff -[5712418] [[30]:[53]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 80 736d6161000007d200000040002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0053006f006e00670041006e0061006c0079007a00650064ffffffff -[5712488] [[30]:[54]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 70 736d6161000007d200000036002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f004b00650079004c006f0063006bffffffff -[5712567] [[30]:[55]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f00430075007200720065006e0074004b006500790049006e006400650078ffffffff -[5712636] [[30]:[56]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 66 736d6161000007d200000032002f0045006e00670069006e0065002f004400650063006b0034002f0054007200610063006b002f0042006c006500650070ffffffff -[5712702] [[30]:[57]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 64 736d6161000007d200000030002f0045006e00670069006e0065002f004400650063006b0034002f00430075007200720065006e007400420050004dffffffff -[5712769] [[30]:[58]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006c0061007900530074006100740065ffffffff -[5712836] [[30]:[59]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0034002f0050006100640073002f0056006900650077ffffffff -[5712902] [[30]:[60]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 60 736d6161000007d20000002c002f0045006e00670069006e0065002f004400650063006b0034002f00530079006e0063004d006f00640065ffffffff -[5712964] [[30]:[61]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 50 736d6161000007d200000022002f0045006e00670069006e0065002f004400650063006b0043006f0075006e0074ffffffff -[5713034] [[30]:[62]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 68 736d6161000007d200000034002f004700550049002f004400650063006b0073002f004400650063006b002f004100630074006900760065004400650063006bffffffff -[5713124] [[30]:[63]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d6161000007d200000062002f0043006c00690065006e0074002f004c0069006200720061007200690061006e002f00440065007600690063006500730043006f006e00740072006f006c006c00650072002f00430075007200720065006e0074004400650076006900630065ffffffff -[5713214] [[30]:[64]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 112 736d6161000007d200000060002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f00500072006f00660069006c0065002f004100700070006c00690063006100740069006f006e002f00530079006e0063004d006f00640065ffffffff -[6317099] [[98]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[10261388] [[100]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[14254207] [[102]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[18235046] [[104]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[22233328] [[106]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[26242507] [[108]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[30239305] [[110]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[34235317] [[112]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[38235901] [[114]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[42290773] [[116]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 -[46242411] [[118]:[1]] [FileTransfer] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 16 666c7478000000d0000007d200000000 +[13335] Announced myself on 54142 +[41111] [Directory] connection from 192.168.2.83:46381 +[42351] [Directory] connection from 192.168.2.84:45065 +[42938] [Directory] connection from 192.168.2.83:36221 +[43534] [Directory] connection from 192.168.2.84:45149 +[44070] [Directory] connection from 192.168.2.84:34931 +[44736] [Directory] connection from 192.168.2.83:47897 +[88421] [Directory] connection from 192.168.2.99:49171 +[299683] [Directory] sent ServiceAnnouncement to 192.168.2.83:46381 +[300437] [Directory] sent ServiceAnnouncement to 192.168.2.84:45065 +[301043] [Directory] sent ServiceAnnouncement to 192.168.2.83:36221 +[301616] [Directory] sent ServiceAnnouncement to 192.168.2.84:45149 +[302116] [Directory] sent ServiceAnnouncement to 192.168.2.84:34931 +[303743] [Directory] sent ServiceAnnouncement to 192.168.2.83:47897 +[321799] [StateMap] connection from 192.168.2.83:54965 +[322570] [StateMap] connection from 192.168.2.84:34727 +[327882] [[1]:[1]] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070d6b5 +[328597] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[329106] Sending Statemap subscriptions to 192.168.2.83:54965 +[333039] [[2]:[1]] [StateMap] noID (!deviceID) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d0061007087a7 +[333611] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[334027] Sending Statemap subscriptions to 192.168.2.84:34727 +[339009] [Directory] sent ServiceAnnouncement to 192.168.2.99:49171 +[348418] [[3]:[1]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d +[350116] [1] 192.168.2.84:34727 /Client/Preferences/Player => {"string":"2","type":4} +[350247] [[3]:[2]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[350711] [2] 192.168.2.84:34727 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[350789] [[3]:[3]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[351211] [3] 192.168.2.84:34727 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[351290] [[3]:[4]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d +[351815] [4] 192.168.2.84:34727 /Engine/Master/MasterTempo => {"type":0,"value":122} +[351915] [[3]:[5]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[352428] [5] 192.168.2.84:34727 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[352524] [[3]:[6]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[353039] [6] 192.168.2.84:34727 /Engine/Deck1/Play => {"state":false,"type":1} +[353128] [[3]:[7]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[353808] [7] 192.168.2.84:34727 /Engine/Deck1/PlayState => {"state":false,"type":1} +[353926] [[3]:[8]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 140 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000040007b00220073007400720069006e00670022003a00220053007000610063006500200046006f006f00640022002c002200740079007000650022003a0038007d +[354448] [8] 192.168.2.84:34727 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} +[354568] [[3]:[9]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 384 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000128007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f0046006c00790069006e0067002000530074006500700073002f00310035003000330036003900350036005f0052006900730065002000550070005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[355012] [9] 192.168.2.84:34727 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} +[355694] [[13]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d +[356375] [1] 192.168.2.83:54965 /Client/Preferences/Player => {"string":"1","type":4} +[356450] [[13]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d +[356908] [2] 192.168.2.83:54965 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[356974] [[13]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d +[357403] [3] 192.168.2.83:54965 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[357480] [[13]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d +[357902] [4] 192.168.2.83:54965 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[357968] [[13]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[358379] [5] 192.168.2.83:54965 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[358434] [[13]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[358955] [6] 192.168.2.83:54965 /Engine/Deck1/Play => {"state":false,"type":1} +[359037] [[13]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[359552] [7] 192.168.2.83:54965 /Engine/Deck1/PlayState => {"state":false,"type":1} +[359623] [[13]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d +[360171] [8] 192.168.2.83:54965 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[360298] [[13]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[360790] [9] 192.168.2.83:54965 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[360857] [[13]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[361296] [10] 192.168.2.83:54965 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[361368] [[13]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[362048] [11] 192.168.2.83:54965 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[362132] [[13]:[12]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[362609] [12] 192.168.2.83:54965 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[362703] [[13]:[13]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[363136] [13] 192.168.2.83:54965 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[363197] [[13]:[14]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[363627] [14] 192.168.2.83:54965 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[363720] [[13]:[15]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[364298] [15] 192.168.2.83:54965 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[364367] [[13]:[16]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[364826] [16] 192.168.2.83:54965 /Engine/Deck2/Play => {"state":false,"type":1} +[364881] [[13]:[17]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[365310] [17] 192.168.2.83:54965 /Engine/Deck2/PlayState => {"state":false,"type":1} +[365375] [[13]:[18]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[365806] [18] 192.168.2.83:54965 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[365870] [[13]:[19]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[366339] [19] 192.168.2.83:54965 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[366414] [[13]:[20]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[366910] [20] 192.168.2.83:54965 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[366977] [[13]:[21]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[367463] [21] 192.168.2.83:54965 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[367523] [[13]:[22]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[367958] [22] 192.168.2.83:54965 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[368017] [[13]:[23]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[368438] [23] 192.168.2.83:54965 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[368494] [[13]:[24]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[368909] [24] 192.168.2.83:54965 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[368965] [[13]:[25]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[369480] [25] 192.168.2.83:54965 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[370051] [[39]:[1]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d +[370732] [1] 192.168.2.84:34727 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[370829] [[39]:[2]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 160 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000058007b00220073007400720069006e00670022003a0022005200690073006500200055007000200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d +[371284] [2] 192.168.2.84:34727 /Engine/Deck1/Track/SongName => {"string":"Rise Up (Original Mix)","type":8} +[371349] [[39]:[3]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d +[371919] [3] 192.168.2.84:34727 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[372094] [[39]:[4]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 370 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d006500000128007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f0046006c00790069006e0067002000530074006500700073002f00310035003000330036003900350036005f0052006900730065002000550070005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d +[372768] [4] 192.168.2.84:34727 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} +[372846] [[39]:[5]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[373364] [5] 192.168.2.84:34727 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[373430] [[39]:[6]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[373873] [6] 192.168.2.84:34727 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[373931] [[39]:[7]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[374392] [7] 192.168.2.84:34727 /Engine/Deck2/Play => {"state":false,"type":1} +[374457] [[39]:[8]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[374881] [8] 192.168.2.84:34727 /Engine/Deck2/PlayState => {"state":false,"type":1} +[374938] [[39]:[9]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[375341] [9] 192.168.2.84:34727 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[375409] [[39]:[10]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[375810] [10] 192.168.2.84:34727 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[375862] [[39]:[11]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d +[376259] [11] 192.168.2.84:34727 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[376314] [[39]:[12]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[376803] [12] 192.168.2.84:34727 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[376887] [[39]:[13]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d +[377368] [13] 192.168.2.84:34727 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[377436] [[39]:[14]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d +[377976] [14] 192.168.2.84:34727 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[378035] [[39]:[15]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d +[378471] [15] 192.168.2.84:34727 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[378532] [[39]:[16]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d +[378945] [16] 192.168.2.84:34727 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[380099] [StateMap] connection from 192.168.2.99:49172 +[381698] [[56]:[1]] [StateMap] noID (!deviceID) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b +[382319] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f +[382765] Sending Statemap subscriptions to 192.168.2.99:49172 +[393510] [[57]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 108 736d6161000000000000002e002f004d0069007800650072002f004300480031006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0031002e00320037007d +[395418] [1] 192.168.2.99:49172 /Mixer/CH1faderPosition => {"type":0,"value":1.27} +[395499] [[57]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003100000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d +[395988] [2] 192.168.2.99:49172 /Mixer/ChannelAssignment1 => {"string":",1","type":8} +[396050] [[57]:[3]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003200000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d +[396501] [3] 192.168.2.99:49172 /Mixer/ChannelAssignment2 => {"string":",1","type":8} +[396557] [[57]:[4]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003300000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d +[397005] [4] 192.168.2.99:49172 /Mixer/ChannelAssignment3 => {"string":",1","type":8} +[397059] [[57]:[5]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003400000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d +[397491] [5] 192.168.2.99:49172 /Mixer/ChannelAssignment4 => {"string":",1","type":8} +[397726] [[63]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 112 736d61610000000000000032002f004d0069007800650072002f00430072006f00730073006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e00380034007d +[398282] [1] 192.168.2.99:49172 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} +[398339] [[63]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 108 736d6161000000000000002e002f004d0069007800650072002f004300480032006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0031002e00320037007d +[398773] [2] 192.168.2.99:49172 /Mixer/CH2faderPosition => {"type":0,"value":1.27} +[423299] [[66]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[469167] [[68]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[531447] [[70]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[567314] [[72]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[627678] [[74]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[667681] [[76]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[729783] [[78]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[768027] [[80]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[828281] [[82]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[868429] [[84]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[928164] [[86]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[968569] [[88]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[1031665] [[90]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[6129353] [[92]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6189932] [[94]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[6229884] [[96]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[6289972] [[98]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[6330629] [[100]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[6389854] [[102]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[6429383] [[104]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[6490674] [[106]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[6529491] [[108]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[6590209] [[110]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[6628199] [[112]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6690497] [[114]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[6729622] [[116]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[11850759] [[118]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11890826] [[120]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[11951446] [[122]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[11991334] [[124]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[12053335] [[126]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[12091401] [[128]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[12151186] [[130]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[12191177] [[132]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[12251414] [[134]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[12291255] [[136]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[12351329] [[138]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12391422] [[140]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[12451339] [[142]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[17580480] [[144]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17592879] [[146]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[17661235] [[148]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[17693569] [[150]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[17753617] [[152]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[17792913] [[154]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[17853619] [[156]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[17895119] [[158]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[17953894] [[160]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[17993034] [[162]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[18053934] [[164]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18097892] [[166]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[18154023] [[168]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[23255188] [[170]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23296669] [[172]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[23354774] [[174]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[23395015] [[176]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[23456492] [[178]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[23494715] [[180]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[23554542] [[182]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[23596843] [[184]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[23654814] [[186]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[23694878] [[188]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[23754884] [[190]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23795407] [[192]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[23855584] [[194]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[29049504] [[196]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29050395] [[196]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[29058336] [[199]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[29120643] [[201]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[29161113] [[203]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[29219442] [[205]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[29260929] [[207]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[29379105] [[209]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[29380256] [[209]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[29422740] [[212]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[29458880] [[214]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29519070] [[216]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[29559131] [[218]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[34679096] [[220]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34722363] [[222]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[34762641] [[224]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[34822601] [[226]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[34862361] [[228]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[34921999] [[230]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[34962800] [[232]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[35023038] [[234]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[35064924] [[236]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[35122362] [[238]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[35162628] [[240]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35222307] [[242]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[35262602] [[244]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[40381826] [[246]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40421775] [[248]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[40484271] [[250]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[40521985] [[252]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[40583915] [[254]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[40624044] [[256]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[40686310] [[258]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[40722274] [[260]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[40783114] [[262]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[40824203] [[264]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[40882330] [[266]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[40924711] [[268]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[40984968] [[270]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[46083981] [[272]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46147085] [[274]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[46186760] [[276]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[46244061] [[278]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[46283906] [[280]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[46343780] [[282]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[46383930] [[284]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[46444268] [[286]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[46484284] [[288]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[46544160] [[290]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[46586080] [[292]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46642367] [[294]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[46684497] [[296]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[51884381] [[298]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51885417] [[298]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[51885591] [[298]:[3]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[51945920] [[302]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[51991350] [[304]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[52045747] [[306]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[52085710] [[308]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[52145639] [[310]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[52186059] [[312]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[52247267] [[314]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[52286461] [[316]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52346405] [[318]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[52386077] [[320]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[57505618] [[322]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57549401] [[324]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[57616483] [[326]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[57645490] [[328]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[57705782] [[330]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[57745405] [[332]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[57809815] [[334]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[57845432] [[336]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[57905781] [[338]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[57945526] [[340]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[58005779] [[342]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58045744] [[344]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[58105616] [[346]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[63207210] [[348]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63249408] [[350]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[63306971] [[352]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[63348095] [[354]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[63406944] [[356]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[63446861] [[358]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[63507499] [[360]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[63545538] [[362]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[63605604] [[364]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[63647274] [[366]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[63706730] [[368]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63745751] [[370]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[63807276] [[372]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[68906530] [[374]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[68966849] [[376]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[69006847] [[378]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[69066984] [[380]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[69106941] [[382]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[69166858] [[384]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[69207017] [[386]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[69267201] [[388]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[69307096] [[390]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[69367108] [[392]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[69407110] [[394]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69467553] [[396]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[69507343] [[398]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[74616183] [[400]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74668979] [[402]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[74708220] [[404]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[74766229] [[406]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[74808430] [[408]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[74868672] [[410]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[74927125] [[412]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[74966965] [[414]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[75027357] [[416]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[75069140] [[418]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[75126765] [[420]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75166757] [[422]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[75228556] [[424]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[80328614] [[426]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80368015] [[428]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[80428406] [[430]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[80468710] [[432]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[80528742] [[434]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[80582957] [[436]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[80628844] [[438]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[80668765] [[440]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[80728966] [[442]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[80768754] [[444]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[80828883] [[446]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80868487] [[448]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[80929587] [[450]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[86028139] [[452]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86088151] [[454]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[86128441] [[456]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[86187903] [[458]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[86230360] [[460]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[86289800] [[462]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[86333685] [[464]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[86389673] [[466]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[86428098] [[468]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[86488449] [[470]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[86530270] [[472]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86588418] [[474]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[86628376] [[476]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[91820811] [[478]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91821824] [[478]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[91827500] [[481]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[91889984] [[483]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[91929612] [[485]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[91990378] [[487]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[92029856] [[489]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[92091374] [[491]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[92129830] [[493]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[92188559] [[495]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[92230318] [[497]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92290231] [[499]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[92331985] [[501]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[97433258] [[503]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97493273] [[505]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 +[97535269] [[507]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 +[97593274] [[509]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 +[97633262] [[511]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 +[97693558] [[513]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 +[97734087] [[515]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 +[97793801] [[517]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 +[97833994] [[519]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 +[97893624] [[521]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 +[97934440] [[523]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[97993678] [[525]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 +[98034097] [[527]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 54ed645..d96c8d1 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -84,7 +84,7 @@ export class StageLinqDevices extends EventEmitter { //if (this.options.services.includes(Services.StateMap)) { //const stateMap = new StateMap(this); const stateMap = await this.connectToService(StateMap); - const fileTransfer = await this.connectToService(FileTransfer); + //const fileTransfer = await this.connectToService(FileTransfer); const directory = await this.connectToService(Directory); //fileTransfer.on('dbDownloading', (sourceName, dbPath) => { diff --git a/services/Directory.ts b/services/Directory.ts index 00ab3d9..ceb6496 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -4,7 +4,7 @@ import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; //import { ServiceInitMessage } from '../network'; import { ServiceInitMessage, StageLinqDevices } from '../network'; -import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens, deviceIdFromBuff } from '../types'; +import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens, deviceIdFromBuff, DeviceId } from '../types'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils/sleep'; import { Socket, AddressInfo } from 'net'; @@ -34,7 +34,7 @@ export class Directory extends Service { async init() { } - protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number, isSub?: boolean): ServiceMessage { return } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index f114ef1..d70a115 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,4 +1,4 @@ -import { DOWNLOAD_TIMEOUT } from '../types'; +import { DOWNLOAD_TIMEOUT, IpAddressPort } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceData } from './Service'; @@ -120,7 +120,7 @@ export class FileTransfer extends Service { } */ protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + //Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) //assert((this.p)) //this.subscribe(socket); return @@ -484,7 +484,9 @@ export interface Source { //console.log('message ', message); //if (message) { - const msgDeviceId = this.getDeviceIdFromSocket(socket);// : "noSocket" + const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + + const msgDeviceId = this.peerDeviceIds[ipAddressPort];// : "noSocket" //console.log('message ', msgDeviceId, message.sources); for (const source of sources) { //Logger.info('getSource source: ', source); @@ -535,7 +537,7 @@ export interface Source { await sleep(500); this.downloadDb(msgDeviceId, socket); const testDev = this.deviceSources.get(msgDeviceId); - Logger.info(testDev); + //Logger.info(testDev); return result; } @@ -600,9 +602,10 @@ export interface Source { async downloadDb(deviceId: string, socket: Socket) { // sourceId: string, service: FileTransfer, _source: Source) { //console.info(source); Logger.info(`downloadDb request for ${deviceId}`); - const deviceSources = this.deviceSources.get(deviceId); + const deviceSources = await this.deviceSources.get(deviceId); // const service = this.services.get(deviceId) + for (const sourceName in deviceSources) { const source = deviceSources[sourceName]; diff --git a/services/Service.ts b/services/Service.ts index f068c2e..a9e4915 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -215,7 +215,7 @@ export abstract class Service extends EventEmitter { (assert (ctx.sizeLeft() >= 2)); const port = ctx.readUInt16(); - (assert(port === addressInfo.port)) + //(assert(port === addressInfo.port)) this.peerDeviceIds[ipAddressPort] = deviceId; //this.parseServiceData diff --git a/services/StateMap.ts b/services/StateMap.ts index 18b66d8..16ad100 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -108,22 +108,24 @@ export class StateMap extends Service { public async subscribe(socket: Socket) { Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort}`); - /* + const keys = Object.keys(StageLinqValueObj); const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) for (const value of values) { - await this.subscribeState(value, 0, socket); + // await this.subscribeState(value, 0, socket); } - */ + + for (const state of States) { await this.subscribeState(state, 0, socket); } + } //protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + //Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) //assert((this.p)) this.subscribe(socket); return From 9cddec934ab5f990b7cf4aa707653e72253c6e95 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 22:20:18 -0400 Subject: [PATCH 014/146] MASSIVE cleanup --- Databases/Databases.ts | 2 +- StageLinq/index.ts | 12 +- cli/index.ts | 33 +-- log.txt | 555 ++++++++++++------------------------ network/StageLinqDevices.ts | 163 ++--------- network/announce.ts | 16 +- services/Directory.ts | 137 ++------- services/FileTransfer.ts | 350 ++++------------------- services/Service.ts | 458 ++++++----------------------- services/StateMap.ts | 97 ++----- services/TimeSync.ts | 4 +- services/index.ts | 2 +- types/DeviceId.ts | 129 +-------- utils/ReadContext.ts | 36 +++ utils/index.ts | 1 - utils/tcp.ts | 7 +- 16 files changed, 475 insertions(+), 1527 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 35e410b..ff72031 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -3,7 +3,6 @@ import { EventEmitter } from 'stream'; import { FileTransfer } from '../services'; import { getTempFilePath } from '../utils'; import { Logger } from '../LogEmitter'; -//import { NetworkDevice } from '../network'; import * as fs from 'fs'; export declare interface Databases { @@ -42,6 +41,7 @@ export class Databases extends EventEmitter { /** * Download databases from this network source. */ + async downloadDb(sourceId: string, service: FileTransfer, source: Source) { const dbPath = getTempFilePath(`${sourceId}/m.db`); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 4195604..589c33a 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'events'; import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; import { Action, ActingAsDevice, StageLinqOptions, deviceIdFromBuff, DeviceId } from '../types'; -import { sleep } from '../utils'; +//import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -37,26 +37,16 @@ export class StageLinq extends EventEmitter { const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); msg.port = address.port; - //await sleep(500); await announce(msg); - //Logger.warn(msg); this.listener.listenForDevices(async (connectionInfo) => { - //await this.devices.handleDevice(connectionInfo); const deviceId = new DeviceId(connectionInfo.token); - //const deviceId = deviceIdFromBuff(connectionInfo.token); - //const ipAddressPort = [connectionInfo.address,connectionInfo.port].join(':'); this.devices._peers[connectionInfo.address] = deviceId; if (!this.devices.peers.has(deviceId.toString()) || this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port) { this.devices.peers.set(deviceIdFromBuff(connectionInfo.token), connectionInfo); - //Logger.debug(deviceId, connectionInfo); } - - //Logger.warn(connectionInfo); }); - //await sleep(1500); - //await this.devices. } /** diff --git a/cli/index.ts b/cli/index.ts index 323e33d..6616c69 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -2,9 +2,9 @@ import { ActingAsDevice, PlayerStatus, StageLinqOptions, Services } from '../typ import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; -import * as fs from 'fs'; -import * as os from 'os'; -import * as path from 'path'; +//import * as fs from 'fs'; +//import * as os from 'os'; +//import * as path from 'path'; require('console-stamp')(console, { @@ -78,42 +78,27 @@ async function main() { ], } - const stageLinq = new StageLinq(stageLinqOptions); - - // Setup how you want to handle logs coming from StageLinq - //let logStream = fs.createWriteStream('log.txt', {flags: 'a'}); - //const hrTime = process.hrtime(); -//console.log(hrTime[0] * 1000000 + hrTime[1] / 1000) - // use {flags: 'a'} to append and {flags: 'w'} to erase and write a new file - //logStream.write('Initial line...'); - + const stageLinq = new StageLinq(stageLinqOptions); stageLinq.logger.on('error', (...args: any) => { - //const hrTime = process.hrtime(); console.error(...args); - //args.push("\n"); - //logStream.write(args.join(" ")); }); stageLinq.logger.on('warn', (...args: any) => { console.warn(...args); args.push("\n"); - // logStream.write(args.join(" ")); }); stageLinq.logger.on('info', (...args: any) => { console.info(...args); args.push("\n"); - //logStream.write(args.join(" ")); }); stageLinq.logger.on('log', (...args: any) => { console.log(...args); args.push("\n"); - //logStream.write(args.join(" ")); - }); - stageLinq.logger.on('debug', (...args: any) => { - console.debug(...args); - args.push("\n"); - //logStream.write(args.join(" ")); }); + //stageLinq.logger.on('debug', (...args: any) => { + // console.debug(...args); + // args.push("\n"); + //}); // Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); @@ -186,7 +171,7 @@ async function main() { try { process.on('SIGINT', async function () { console.info('... exiting'); - //logStream.end('this is the end line'); + // Ensure SIGINT won't be impeded by some error try { diff --git a/log.txt b/log.txt index e708ce8..ffb1660 100644 --- a/log.txt +++ b/log.txt @@ -1,377 +1,180 @@ -[51] [BEGIN] +[41] [BEGIN] -[13335] Announced myself on 54142 -[41111] [Directory] connection from 192.168.2.83:46381 -[42351] [Directory] connection from 192.168.2.84:45065 -[42938] [Directory] connection from 192.168.2.83:36221 -[43534] [Directory] connection from 192.168.2.84:45149 -[44070] [Directory] connection from 192.168.2.84:34931 -[44736] [Directory] connection from 192.168.2.83:47897 -[88421] [Directory] connection from 192.168.2.99:49171 -[299683] [Directory] sent ServiceAnnouncement to 192.168.2.83:46381 -[300437] [Directory] sent ServiceAnnouncement to 192.168.2.84:45065 -[301043] [Directory] sent ServiceAnnouncement to 192.168.2.83:36221 -[301616] [Directory] sent ServiceAnnouncement to 192.168.2.84:45149 -[302116] [Directory] sent ServiceAnnouncement to 192.168.2.84:34931 -[303743] [Directory] sent ServiceAnnouncement to 192.168.2.83:47897 -[321799] [StateMap] connection from 192.168.2.83:54965 -[322570] [StateMap] connection from 192.168.2.84:34727 -[327882] [[1]:[1]] [StateMap] noID (!deviceID) 42 000000004be141125ead4848a07db37ca8a7220e0000001000530074006100740065004d00610070d6b5 -[328597] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[329106] Sending Statemap subscriptions to 192.168.2.83:54965 -[333039] [[2]:[1]] [StateMap] noID (!deviceID) 42 000000001e6c417ab6744c87b4aafb7ad22989760000001000530074006100740065004d0061007087a7 -[333611] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[334027] Sending Statemap subscriptions to 192.168.2.84:34727 -[339009] [Directory] sent ServiceAnnouncement to 192.168.2.99:49171 -[348418] [[3]:[1]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200320022002c002200740079007000650022003a0034007d -[350116] [1] 192.168.2.84:34727 /Client/Preferences/Player => {"string":"2","type":4} -[350247] [[3]:[2]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[350711] [2] 192.168.2.84:34727 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[350789] [[3]:[3]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[351211] [3] 192.168.2.84:34727 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[351290] [[3]:[4]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 112 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032007d -[351815] [4] 192.168.2.84:34727 /Engine/Master/MasterTempo => {"type":0,"value":122} -[351915] [[3]:[5]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[352428] [5] 192.168.2.84:34727 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[352524] [[3]:[6]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[353039] [6] 192.168.2.84:34727 /Engine/Deck1/Play => {"state":false,"type":1} -[353128] [[3]:[7]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[353808] [7] 192.168.2.84:34727 /Engine/Deck1/PlayState => {"state":false,"type":1} -[353926] [[3]:[8]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 140 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000040007b00220073007400720069006e00670022003a00220053007000610063006500200046006f006f00640022002c002200740079007000650022003a0038007d -[354448] [8] 192.168.2.84:34727 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} -[354568] [[3]:[9]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 384 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000128007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f0046006c00790069006e0067002000530074006500700073002f00310035003000330036003900350036005f0052006900730065002000550070005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[355012] [9] 192.168.2.84:34727 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} -[355694] [[13]:[1]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 114 736d61610000000000000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c00610079006500720000002e007b00220073007400720069006e00670022003a002200310022002c002200740079007000650022003a0034007d -[356375] [1] 192.168.2.83:54965 /Client/Preferences/Player => {"string":"1","type":4} -[356450] [[13]:[2]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200410000003e007b00220063006f006c006f00720022003a00220023006600660032006200380034006500660022002c002200740079007000650022003a00310036007d -[356908] [2] 192.168.2.83:54965 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[356974] [[13]:[3]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 148 736d61610000000000000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f007200420000003e007b00220063006f006c006f00720022003a00220023006600660030003200630036003300650022002c002200740079007000650022003a00310036007d -[357403] [3] 192.168.2.83:54965 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[357480] [[13]:[4]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d61610000000000000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f0000004a007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320032002e00300030003000350039003500300039003200370037003300340034007d -[357902] [4] 192.168.2.83:54965 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[357968] [[13]:[5]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 130 736d61610000000000000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[358379] [5] 192.168.2.83:54965 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[358434] [[13]:[6]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0031002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[358955] [6] 192.168.2.83:54965 /Engine/Deck1/Play => {"state":false,"type":1} -[359037] [[13]:[7]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[359552] [7] 192.168.2.83:54965 /Engine/Deck1/PlayState => {"state":false,"type":1} -[359623] [[13]:[8]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 142 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004100720074006900730074004e0061006d006500000042007b00220073007400720069006e00670022003a0022004d00610064006500200049006e00200054004c00560022002c002200740079007000650022003a0038007d -[360171] [8] 192.168.2.83:54965 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[360298] [[13]:[9]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 392 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b005000610074006800000130007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[360790] [9] 192.168.2.83:54965 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[360857] [[13]:[10]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[361296] [10] 192.168.2.83:54965 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[361368] [[13]:[11]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 168 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000060007b00220073007400720069006e00670022003a002200490073006c006100200042006c0061006e0063006100200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[362048] [11] 192.168.2.83:54965 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[362132] [[13]:[12]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[362609] [12] 192.168.2.83:54965 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[362703] [[13]:[13]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 290 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d0065000000d8007b00220073007400720069006e00670022003a0022002f006d0065006400690061002f0048004f004e00550053005a002f0043006f006e00740065006e00740073002f004d00610064006500200049006e00200054004c0056002f00490073006c006100200042006c0061006e00630061002f00310035003500360034003400330036005f00490073006c006100200042006c0061006e00630061005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[363136] [13] 192.168.2.83:54965 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[363197] [[13]:[14]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[363627] [14] 192.168.2.83:54965 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[363720] [[13]:[15]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[364298] [15] 192.168.2.83:54965 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[364367] [[13]:[16]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[364826] [16] 192.168.2.83:54965 /Engine/Deck2/Play => {"state":false,"type":1} -[364881] [[13]:[17]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[365310] [17] 192.168.2.83:54965 /Engine/Deck2/PlayState => {"state":false,"type":1} -[365375] [[13]:[18]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[365806] [18] 192.168.2.83:54965 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[365870] [[13]:[19]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[366339] [19] 192.168.2.83:54965 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[366414] [[13]:[20]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[366910] [20] 192.168.2.83:54965 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[366977] [[13]:[21]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[367463] [21] 192.168.2.83:54965 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[367523] [[13]:[22]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[367958] [22] 192.168.2.83:54965 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[368017] [[13]:[23]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[368438] [23] 192.168.2.83:54965 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[368494] [[13]:[24]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[368909] [24] 192.168.2.83:54965 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[368965] [[13]:[25]] [StateMap] 4be14112-5ead-4848-a07d-b37ca8a7220e (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[369480] [25] 192.168.2.83:54965 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[370051] [[39]:[1]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004c006f00610064006500640000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0031007d -[370732] [1] 192.168.2.84:34727 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[370829] [[39]:[2]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 160 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0053006f006e0067004e0061006d006500000058007b00220073007400720069006e00670022003a0022005200690073006500200055007000200028004f0072006900670069006e0061006c0020004d0069007800290022002c002200740079007000650022003a0038007d -[371284] [2] 192.168.2.84:34727 /Engine/Deck1/Track/SongName => {"string":"Rise Up (Original Mix)","type":8} -[371349] [[39]:[3]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b00440061007400610000002e007b0022007300740061007400650022003a0074007200750065002c002200740079007000650022003a0033007d -[371919] [3] 192.168.2.84:34727 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[372094] [[39]:[4]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 370 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f0054007200610063006b004e0061006d006500000128007b00220073007400720069006e00670022003a0022006e00650074003a002f002f00340062006500310034003100310032002d0035006500610064002d0034003800340038002d0061003000370064002d006200330037006300610038006100370032003200300065002f0048004f004e00550053005a00200028005500530042002000310029002f0043006f006e00740065006e00740073002f0053007000610063006500200046006f006f0064002f0046006c00790069006e0067002000530074006500700073002f00310035003000330036003900350036005f0052006900730065002000550070005f0028004f0072006900670069006e0061006c0020004d006900780029002e006d007000330022002c002200740079007000650022003a0038007d -[372768] [4] 192.168.2.84:34727 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} -[372846] [[39]:[5]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0031002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[373364] [5] 192.168.2.84:34727 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[373430] [[39]:[6]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0031002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[373873] [6] 192.168.2.84:34727 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[373931] [[39]:[7]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 100 736d61610000000000000024002f0045006e00670069006e0065002f004400650063006b0032002f0050006c0061007900000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[374392] [7] 192.168.2.84:34727 /Engine/Deck2/Play => {"state":false,"type":1} -[374457] [[39]:[8]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 110 736d6161000000000000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[374881] [8] 192.168.2.84:34727 /Engine/Deck2/PlayState => {"state":false,"type":1} -[374938] [[39]:[9]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 120 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004100720074006900730074004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[375341] [9] 192.168.2.84:34727 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[375409] [[39]:[10]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 132 736d61610000000000000048002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e006500740077006f0072006b00500061007400680000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[375810] [10] 192.168.2.84:34727 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[375862] [[39]:[11]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 124 736d6161000000000000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004c006f006100640065006400000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0031007d -[376259] [11] 192.168.2.84:34727 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[376314] [[39]:[12]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 116 736d61610000000000000038002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0053006f006e0067004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[376803] [12] 192.168.2.84:34727 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[376887] [[39]:[13]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004400610074006100000030007b0022007300740061007400650022003a00660061006c00730065002c002200740079007000650022003a0033007d -[377368] [13] 192.168.2.84:34727 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[377436] [[39]:[14]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 118 736d6161000000000000003a002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f0054007200610063006b004e0061006d00650000002c007b00220073007400720069006e00670022003a00220022002c002200740079007000650022003a0038007d -[377976] [14] 192.168.2.84:34727 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[378035] [[39]:[15]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 108 736d61610000000000000030002f0045006e00670069006e0065002f004400650063006b0032002f00430075007200720065006e007400420050004d0000002c007b002200740079007000650022003a0030002c002200760061006c007500650022003a003100320030007d -[378471] [15] 192.168.2.84:34727 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[378532] [[39]:[16]] [StateMap] 1e6c417a-b674-4c87-b4aa-fb7ad2298976 (while) 122 736d61610000000000000042002f0045006e00670069006e0065002f004400650063006b0032002f00450078007400650072006e0061006c004d00690078006500720056006f006c0075006d006500000028007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030007d -[378945] [16] 192.168.2.84:34727 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[380099] [StateMap] connection from 192.168.2.99:49172 -[381698] [[56]:[1]] [StateMap] noID (!deviceID) 42 000000000000000000000000800000059501ab6f0000001000530074006100740065004d00610070c35b -[382319] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f -[382765] Sending Statemap subscriptions to 192.168.2.99:49172 -[393510] [[57]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 108 736d6161000000000000002e002f004d0069007800650072002f004300480031006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0031002e00320037007d -[395418] [1] 192.168.2.99:49172 /Mixer/CH1faderPosition => {"type":0,"value":1.27} -[395499] [[57]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003100000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d -[395988] [2] 192.168.2.99:49172 /Mixer/ChannelAssignment1 => {"string":",1","type":8} -[396050] [[57]:[3]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003200000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d -[396501] [3] 192.168.2.99:49172 /Mixer/ChannelAssignment2 => {"string":",1","type":8} -[396557] [[57]:[4]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003300000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d -[397005] [4] 192.168.2.99:49172 /Mixer/ChannelAssignment3 => {"string":",1","type":8} -[397059] [[57]:[5]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 114 736d61610000000000000032002f004d0069007800650072002f004300680061006e006e0065006c00410073007300690067006e006d0065006e0074003400000030007b00220073007400720069006e00670022003a0022002c00310022002c002200740079007000650022003a0038007d -[397491] [5] 192.168.2.99:49172 /Mixer/ChannelAssignment4 => {"string":",1","type":8} -[397726] [[63]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 112 736d61610000000000000032002f004d0069007800650072002f00430072006f00730073006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0030002e00380034007d -[398282] [1] 192.168.2.99:49172 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} -[398339] [[63]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 108 736d6161000000000000002e002f004d0069007800650072002f004300480032006600610064006500720050006f0073006900740069006f006e0000002e007b002200740079007000650022003a0030002c002200760061006c007500650022003a0031002e00320037007d -[398773] [2] 192.168.2.99:49172 /Mixer/CH2faderPosition => {"type":0,"value":1.27} -[423299] [[66]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[469167] [[68]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[531447] [[70]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[567314] [[72]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[627678] [[74]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[667681] [[76]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[729783] [[78]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[768027] [[80]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[828281] [[82]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[868429] [[84]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[928164] [[86]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[968569] [[88]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[1031665] [[90]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[6129353] [[92]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6189932] [[94]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[6229884] [[96]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[6289972] [[98]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[6330629] [[100]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[6389854] [[102]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[6429383] [[104]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[6490674] [[106]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[6529491] [[108]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[6590209] [[110]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[6628199] [[112]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6690497] [[114]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[6729622] [[116]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[11850759] [[118]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11890826] [[120]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[11951446] [[122]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[11991334] [[124]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[12053335] [[126]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[12091401] [[128]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[12151186] [[130]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[12191177] [[132]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[12251414] [[134]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[12291255] [[136]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[12351329] [[138]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12391422] [[140]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[12451339] [[142]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[17580480] [[144]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17592879] [[146]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[17661235] [[148]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[17693569] [[150]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[17753617] [[152]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[17792913] [[154]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[17853619] [[156]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[17895119] [[158]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[17953894] [[160]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[17993034] [[162]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[18053934] [[164]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18097892] [[166]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[18154023] [[168]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[23255188] [[170]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23296669] [[172]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[23354774] [[174]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[23395015] [[176]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[23456492] [[178]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[23494715] [[180]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[23554542] [[182]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[23596843] [[184]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[23654814] [[186]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[23694878] [[188]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[23754884] [[190]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23795407] [[192]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[23855584] [[194]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[29049504] [[196]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29050395] [[196]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[29058336] [[199]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[29120643] [[201]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[29161113] [[203]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[29219442] [[205]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[29260929] [[207]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[29379105] [[209]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[29380256] [[209]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[29422740] [[212]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[29458880] [[214]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29519070] [[216]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[29559131] [[218]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[34679096] [[220]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34722363] [[222]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[34762641] [[224]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[34822601] [[226]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[34862361] [[228]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[34921999] [[230]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[34962800] [[232]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[35023038] [[234]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[35064924] [[236]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[35122362] [[238]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[35162628] [[240]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35222307] [[242]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[35262602] [[244]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[40381826] [[246]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40421775] [[248]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[40484271] [[250]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[40521985] [[252]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[40583915] [[254]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[40624044] [[256]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[40686310] [[258]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[40722274] [[260]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[40783114] [[262]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[40824203] [[264]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[40882330] [[266]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[40924711] [[268]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[40984968] [[270]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[46083981] [[272]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46147085] [[274]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[46186760] [[276]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[46244061] [[278]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[46283906] [[280]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[46343780] [[282]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[46383930] [[284]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[46444268] [[286]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[46484284] [[288]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[46544160] [[290]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[46586080] [[292]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46642367] [[294]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[46684497] [[296]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[51884381] [[298]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51885417] [[298]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[51885591] [[298]:[3]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[51945920] [[302]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[51991350] [[304]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[52045747] [[306]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[52085710] [[308]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[52145639] [[310]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[52186059] [[312]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[52247267] [[314]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[52286461] [[316]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52346405] [[318]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[52386077] [[320]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[57505618] [[322]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57549401] [[324]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[57616483] [[326]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[57645490] [[328]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[57705782] [[330]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[57745405] [[332]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[57809815] [[334]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[57845432] [[336]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[57905781] [[338]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[57945526] [[340]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[58005779] [[342]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58045744] [[344]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[58105616] [[346]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[63207210] [[348]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63249408] [[350]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[63306971] [[352]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[63348095] [[354]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[63406944] [[356]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[63446861] [[358]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[63507499] [[360]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[63545538] [[362]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[63605604] [[364]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[63647274] [[366]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[63706730] [[368]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63745751] [[370]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[63807276] [[372]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[68906530] [[374]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[68966849] [[376]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[69006847] [[378]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[69066984] [[380]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[69106941] [[382]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[69166858] [[384]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[69207017] [[386]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[69267201] [[388]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[69307096] [[390]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[69367108] [[392]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[69407110] [[394]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69467553] [[396]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[69507343] [[398]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[74616183] [[400]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74668979] [[402]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[74708220] [[404]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[74766229] [[406]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[74808430] [[408]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[74868672] [[410]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[74927125] [[412]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[74966965] [[414]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[75027357] [[416]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[75069140] [[418]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[75126765] [[420]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75166757] [[422]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[75228556] [[424]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[80328614] [[426]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80368015] [[428]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[80428406] [[430]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[80468710] [[432]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[80528742] [[434]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[80582957] [[436]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[80628844] [[438]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[80668765] [[440]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[80728966] [[442]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[80768754] [[444]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[80828883] [[446]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80868487] [[448]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[80929587] [[450]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[86028139] [[452]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86088151] [[454]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[86128441] [[456]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[86187903] [[458]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[86230360] [[460]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[86289800] [[462]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[86333685] [[464]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[86389673] [[466]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[86428098] [[468]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[86488449] [[470]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[86530270] [[472]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86588418] [[474]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[86628376] [[476]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[91820811] [[478]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91821824] [[478]:[2]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[91827500] [[481]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[91889984] [[483]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[91929612] [[485]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[91990378] [[487]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[92029856] [[489]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[92091374] [[491]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[92129830] [[493]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[92188559] [[495]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[92230318] [[497]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92290231] [[499]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[92331985] [[501]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 -[97433258] [[503]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97493273] [[505]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 76 736d6161000007d20000003c002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f00430075007200720065006e007400420050004d00000064 -[97535269] [[507]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004100000064 -[97593274] [[509]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f0050006c0061007900650072004a006f00670043006f006c006f0072004200000064 -[97633262] [[511]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0031002f004400650063006b00490073004d0061007300740065007200000064 -[97693558] [[513]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004400650063006b0032002f004400650063006b00490073004d0061007300740065007200000064 -[97734087] [[515]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0031002f0050006c006100790053007400610074006500000064 -[97793801] [[517]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 62 736d6161000007d20000002e002f0045006e00670069006e0065002f004400650063006b0032002f0050006c006100790053007400610074006500000064 -[97833994] [[519]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0043006c00690065006e0074002f0050007200650066006500720065006e006300650073002f004c0061007900650072004200000064 -[97893624] [[521]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 82 736d6161000007d200000042002f0045006e00670069006e0065002f00530079006e0063002f004e006500740077006f0072006b002f004d0061007300740065007200530074006100740075007300000064 -[97934440] [[523]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0031002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[97993678] [[525]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 86 736d6161000007d200000046002f0045006e00670069006e0065002f004400650063006b0032002f0054007200610063006b002f004c006f006f00700045006e00610062006c00650053007400610074006500000064 -[98034097] [[527]:[1]] [StateMap] 00000000-0000-0000-8000-00059501ab6f (while) 68 736d6161000007d200000034002f0045006e00670069006e0065002f004d00610073007400650072002f004d0061007300740065007200540065006d0070006f00000064 +[4975] opened StateMap server on 59164 +[6850] opened FileTransfer server on 59165 +[7572] opened Directory server on 59166 +[12861] UDP message sent to 192.168.2.255 from port 49925 +[12995] Announced myself on 59166 +[46385] [Directory] connection from 192.168.2.84:59125 +[47193] [Directory] connection from 192.168.2.84:58323 +[47398] [Directory] connection from 192.168.2.83:40143 +[47582] [Directory] connection from 192.168.2.84:41505 +[47745] [Directory] connection from 192.168.2.83:42957 +[47898] [Directory] connection from 192.168.2.83:60365 +[49460] [Directory] sent ServiceAnnouncement to 192.168.2.84:59125 +[50638] [Directory] sent ServiceAnnouncement to 192.168.2.84:58323 +[51089] [Directory] sent ServiceAnnouncement to 192.168.2.83:40143 +[51358] [Directory] sent ServiceAnnouncement to 192.168.2.84:41505 +[51617] [Directory] sent ServiceAnnouncement to 192.168.2.83:42957 +[51854] [Directory] sent ServiceAnnouncement to 192.168.2.83:60365 +[72744] [FileTransfer] connection from 192.168.2.83:54245 +[72998] [FileTransfer] connection from 192.168.2.84:60113 +[73146] [FileTransfer] connection from 192.168.2.84:51205 +[73280] [FileTransfer] connection from 192.168.2.83:51783 +[73408] [FileTransfer] connection from 192.168.2.83:43079 +[73529] [FileTransfer] connection from 192.168.2.84:51121 +[73657] [StateMap] connection from 192.168.2.84:56371 +[73766] [StateMap] connection from 192.168.2.83:36975 +[74051] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[74085] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 +[74383] ServicesAnnouncement to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[74389] TimeCode to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[74404] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[74871] ServicesAnnouncement to FileTransfer from 94c669ad-c31c-47b0-96b9-e9e5b874db05 +[74878] TimeCode to FileTransfer from 94c669ad-c31c-47b0-96b9-e9e5b874db05 +[74981] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[74986] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[74999] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e +[75336] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[75343] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 +[75441] ServicesAnnouncement to FileTransfer from cfdf92af-2e4a-4e8b-8c27-b65560e197fa +[75448] TimeCode to FileTransfer from cfdf92af-2e4a-4e8b-8c27-b65560e197fa +[75637] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[75678] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[75744] Sending Statemap subscriptions to 192.168.2.84:56371 +[80151] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[80166] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[80184] Sending Statemap subscriptions to 192.168.2.83:36975 +[96474] 192.168.2.84:56371 /Client/Preferences/Player => {"string":"2","type":4} +[96896] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e +[98301] 192.168.2.83:36975 /Client/Preferences/Player => {"string":"1","type":4} +[99076] 192.168.2.84:56371 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[99489] 192.168.2.84:56371 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[99828] 192.168.2.84:56371 /Engine/Master/MasterTempo => {"type":0,"value":122} +[100268] 192.168.2.84:56371 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[100782] 192.168.2.84:56371 /Engine/Deck1/Play => {"state":false,"type":1} +[101190] 192.168.2.84:56371 /Engine/Deck1/PlayState => {"state":false,"type":1} +[102395] 192.168.2.84:56371 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} +[102845] 192.168.2.84:56371 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} +[103194] 192.168.2.84:56371 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[103529] 192.168.2.84:56371 /Engine/Deck1/Track/SongName => {"string":"Rise Up (Original Mix)","type":8} +[103846] 192.168.2.84:56371 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[104188] 192.168.2.84:56371 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} +[104494] 192.168.2.84:56371 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[104794] 192.168.2.84:56371 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[105095] 192.168.2.84:56371 /Engine/Deck2/Play => {"state":false,"type":1} +[105413] 192.168.2.84:56371 /Engine/Deck2/PlayState => {"state":false,"type":1} +[105714] 192.168.2.84:56371 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[106020] 192.168.2.84:56371 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[107089] 192.168.2.84:56371 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[107401] 192.168.2.84:56371 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[107708] 192.168.2.84:56371 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[108012] 192.168.2.84:56371 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[108374] 192.168.2.84:56371 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[108730] 192.168.2.84:56371 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[108954] [Directory] connection from 192.168.2.99:49205 +[109613] 192.168.2.83:36975 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[109947] 192.168.2.83:36975 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[110280] 192.168.2.83:36975 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[110590] 192.168.2.83:36975 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[110896] 192.168.2.83:36975 /Engine/Deck1/Play => {"state":false,"type":1} +[111204] 192.168.2.83:36975 /Engine/Deck1/PlayState => {"state":false,"type":1} +[111511] 192.168.2.83:36975 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} +[111862] 192.168.2.83:36975 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[112243] 192.168.2.83:36975 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[112620] 192.168.2.83:36975 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} +[112960] 192.168.2.83:36975 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[113312] 192.168.2.83:36975 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} +[113620] 192.168.2.83:36975 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[113921] 192.168.2.83:36975 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[114218] 192.168.2.83:36975 /Engine/Deck2/Play => {"state":false,"type":1} +[114509] 192.168.2.83:36975 /Engine/Deck2/PlayState => {"state":false,"type":1} +[114807] 192.168.2.83:36975 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[115122] 192.168.2.83:36975 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[115424] 192.168.2.83:36975 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[115730] 192.168.2.83:36975 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[116039] 192.168.2.83:36975 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[116973] 192.168.2.83:36975 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[117286] 192.168.2.83:36975 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[117592] 192.168.2.83:36975 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[118191] [Directory] sent ServiceAnnouncement to 192.168.2.99:49205 +[134843] [StateMap] connection from 192.168.2.99:49206 +[135128] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f +[135208] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f +[135221] Sending Statemap subscriptions to 192.168.2.99:49206 +[149449] 192.168.2.99:49206 /Mixer/CH1faderPosition => {"type":0,"value":1.27} +[149956] 192.168.2.99:49206 /Mixer/ChannelAssignment1 => {"string":",1","type":8} +[150370] 192.168.2.99:49206 /Mixer/ChannelAssignment2 => {"string":",1","type":8} +[150773] 192.168.2.99:49206 /Mixer/ChannelAssignment3 => {"string":",1","type":8} +[151168] 192.168.2.99:49206 /Mixer/ChannelAssignment4 => {"string":",1","type":8} +[151564] 192.168.2.99:49206 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} +[151961] 192.168.2.99:49206 /Mixer/CH2faderPosition => {"type":0,"value":1.27} +[617520] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e +[623196] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) +[632545] dbProgress 4be14112-5ead-4848-a07d-b37ca8a7220e 270336 0 0 +[633658] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/270336 +[840682] Download complete. +[840950] Signaling transfer complete. +[843338] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[846738] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[1022246] UDP message sent to 192.168.2.255 from port 49925 +[1060981] sent TimeStamp to 192.168.2.99:49205 +[2025007] UDP message sent to 192.168.2.255 from port 49925 +[2633341] sent TimeStamp to 192.168.2.99:49205 +[3032183] UDP message sent to 192.168.2.255 from port 49925 +[3352868] sent TimeStamp to 192.168.2.83:60365 +[4035450] UDP message sent to 192.168.2.255 from port 49925 +[4061430] sent TimeStamp to 192.168.2.99:49205 +[4376713] sent TimeStamp to 192.168.2.83:42957 +[4378355] sent TimeStamp to 192.168.2.83:40143 +[4782904] sent TimeStamp to 192.168.2.84:58323 +[4783739] sent TimeStamp to 192.168.2.84:59125 +[4784341] sent TimeStamp to 192.168.2.84:41505 +[5042331] UDP message sent to 192.168.2.255 from port 49925 +[5561244] sent TimeStamp to 192.168.2.99:49205 +[6044303] UDP message sent to 192.168.2.255 from port 49925 +[7044767] UDP message sent to 192.168.2.255 from port 49925 +[7063825] sent TimeStamp to 192.168.2.99:49205 +[8043401] UDP message sent to 192.168.2.255 from port 49925 +[8367621] sent TimeStamp to 192.168.2.83:60365 +[8563586] sent TimeStamp to 192.168.2.99:49205 +[9046337] UDP message sent to 192.168.2.255 from port 49925 +[9393810] sent TimeStamp to 192.168.2.83:42957 +[9395208] sent TimeStamp to 192.168.2.83:40143 +[9802773] sent TimeStamp to 192.168.2.84:58323 +[9803980] sent TimeStamp to 192.168.2.84:59125 +[9804745] sent TimeStamp to 192.168.2.84:41505 +[10052900] UDP message sent to 192.168.2.255 from port 49925 +[10061797] sent TimeStamp to 192.168.2.99:49205 +[11050626] UDP message sent to 192.168.2.255 from port 49925 +[11584767] sent TimeStamp to 192.168.2.99:49205 +[12051110] UDP message sent to 192.168.2.255 from port 49925 +[13052886] UDP message sent to 192.168.2.255 from port 49925 +[13066269] sent TimeStamp to 192.168.2.99:49205 +[13385822] sent TimeStamp to 192.168.2.83:60365 +[14054642] UDP message sent to 192.168.2.255 from port 49925 +[14302889] sent TimeStamp to 192.168.2.83:42957 +[14304840] sent TimeStamp to 192.168.2.83:40143 +[14617758] sent TimeStamp to 192.168.2.99:49205 +[14730719] sent TimeStamp to 192.168.2.84:58323 +[14732091] sent TimeStamp to 192.168.2.84:59125 +[14732979] sent TimeStamp to 192.168.2.84:41505 +[15057390] UDP message sent to 192.168.2.255 from port 49925 +[16057075] UDP message sent to 192.168.2.255 from port 49925 +[16070918] sent TimeStamp to 192.168.2.99:49205 +[17056491] UDP message sent to 192.168.2.255 from port 49925 +[17566917] sent TimeStamp to 192.168.2.99:49205 +[18060610] UDP message sent to 192.168.2.255 from port 49925 +[18300426] sent TimeStamp to 192.168.2.83:60365 +[19061741] UDP message sent to 192.168.2.255 from port 49925 +[19074979] sent TimeStamp to 192.168.2.99:49205 +[19302478] sent TimeStamp to 192.168.2.83:42957 +[19304335] sent TimeStamp to 192.168.2.83:40143 +[19729080] sent TimeStamp to 192.168.2.84:58323 +[19730807] sent TimeStamp to 192.168.2.84:59125 +[19731743] sent TimeStamp to 192.168.2.84:41505 +[20062623] UDP message sent to 192.168.2.255 from port 49925 +[20630099] sent TimeStamp to 192.168.2.99:49205 +[21068123] UDP message sent to 192.168.2.255 from port 49925 +[22068009] UDP message sent to 192.168.2.255 from port 49925 +[22083938] sent TimeStamp to 192.168.2.99:49205 diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index d96c8d1..6ea2ed7 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -1,30 +1,25 @@ -import { ConnectionInfo, IpAddress, PlayerStatus, ServiceMessage, DeviceId, StageLinqOptions } from '../types'; +import { ConnectionInfo, PlayerStatus, ServiceMessage, DeviceId, StageLinqOptions } from '../types'; import { EventEmitter } from 'events'; -//import { NetworkDevice } from '.'; -import { Player } from '../devices/Player'; -import { sleep } from '../utils'; -import { FileTransfer, StateData, StateMap, TimeSynchronization, Directory } from '../services'; -import { Logger } from '../LogEmitter'; +//import { Player } from '../devices/Player'; +//import { sleep } from '../utils'; +import { + FileTransfer, + StateData, + StateMap, + //TimeSynchronization, + Directory +} from '../services'; +//import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; import { AddressInfo } from 'net'; -import { dir } from 'console'; - -//enum ConnectionStatus { CONNECTING, CONNECTED, FAILED }; +/* interface StageLinqDevice { //networkDevice: NetworkDevice; fileTransferService: FileTransfer; }; - -export interface ServiceInitMessage { - parent: InstanceType; - services?: Map; -} - -// This time needs to be just long enough for discovery messages from all to -// come through. -const WAIT_FOR_DEVICES_TIMEOUT_MS = 3000; +*/ export declare interface StageLinqDevices { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; @@ -48,13 +43,8 @@ export class StageLinqDevices extends EventEmitter { private _databases: Databases; public peers: Map = new Map(); public _peers: Record = {}; - private devices: Map = new Map(); - //private services2: Map> = new Map(); - //private discoveryStatus: Map = new Map(); - private options: StageLinqOptions; - - //private deviceWatchTimeout: NodeJS.Timeout | null = null; - //private stateMapCallback: { connectionInfo: ConnectionInfo, networkDevice: NetworkDevice }[] = []; + + protected options: StageLinqOptions; constructor(options: StageLinqOptions) { super(); @@ -69,80 +59,19 @@ export class StageLinqDevices extends EventEmitter { */ async initialize(): Promise { - let initMsg: ServiceInitMessage = { - parent: this, - } - - initMsg.services = new Map(); - //const timeSync = new TimeSynchronization(initMsg); - //const timeSyncInfo = await timeSync.listen(); - //initMsg.services.set('TimeSynchronization', timeSyncInfo.port); - //await this.startServiceListener(TimeSynchronization); + await this.startServiceListener(StateMap); + await this.startServiceListener(FileTransfer); + const directory = await this.startServiceListener(Directory); //we need the server's port for announcement message - - //if (this.options.services.includes(Services.StateMap)) { - //const stateMap = new StateMap(this); - const stateMap = await this.connectToService(StateMap); - //const fileTransfer = await this.connectToService(FileTransfer); - const directory = await this.connectToService(Directory); - - //fileTransfer.on('dbDownloading', (sourceName, dbPath) => { - // console.log(`Downloading ${sourceName} to ${dbPath}`); - //}); - - // Fires while the database source is being read - //stageLinq.databases.on('dbProgress', (sourceName, total, bytes, percent) => { - // console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); - //}); - - // Fires when the database source has been read and saved to a temporary path. - //fileTransfer.on('dbDownloaded', (sourceName, dbPath) => { - // console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); - //});) - //const stateMapInfo = await stateMap.listen(); - //initMsg.services.set('StateMap', stateMapInfo.port); - //this.services[StateMap.name] = stateMap; - //this._services.set(StateMap.name, stateMap); - //} -/* - if (this.options.services.includes(Services.FileTransfer)) { - const fileTransfer = new FileTransfer(this); - const FileTransferInfo = await fileTransfer.listen(); - initMsg.services.set('FileTransfer', FileTransferInfo.port); - this.services[FileTransfer.name] = fileTransfer; - this._services.set(FileTransfer.name, fileTransfer); - } - - - const directory = new Directory(this); - const directoryInfo = await directory.listen(); - initMsg.services.set('DirectoryService', directoryInfo.port); - this.directoryPort = directoryInfo.port; - this.services[Directory.name] = directory; - this._services.set(Directory.name, directory); - */ return directory.serverInfo } - async connectToService>(ctor: { + async startServiceListener>(ctor: { new (parent: InstanceType): T; - }): Promise { - //assert(this.connection); - // FIXME: find out why we need these waits before connecting to a service - //await sleep(500); - - const serviceName = ctor.name; - - - //if (this.services[serviceName]) { - // return this.services[serviceName] as T; - // } - - //assert(this.servicePorts.hasOwnProperty(serviceName)); - //assert(this.servicePorts[serviceName] > 0); - //const port = this.servicePorts[serviceName]; - + }): Promise { + + const serviceName = ctor.name; const service = new ctor(this); await service.listen(); @@ -150,57 +79,16 @@ export class StageLinqDevices extends EventEmitter { this.services[serviceName] = service; return service; } -/* - // Factory function - async startServiceListener>(ctor: { - new (p_initMsg:ServiceInitMessage): T; - }): Promise { - //assert(this.connection); - // FIXME: find out why we need these waits before connecting to a service - //await sleep(500); - - const serviceName = ctor.name; - - if (this.services[serviceName]) { - return this.services[serviceName] as T; - } - - //assert(this.servicePorts.hasOwnProperty(serviceName)); - //assert(this.servicePorts[serviceName] > 0); - //const port = this.servicePorts[serviceName]; - - const service = new ctor(); - - await service.listen(); - //service.on('listening', (serverInfo) =>{ - // this.directoryPort = serverInfo.port; - this.services[serviceName] = service; - //}); - return service; - - } - */ - /** * Disconnect from all connected devices */ async disconnectAll() { - //for (const device of this.devices.values()) { - // device.networkDevice.disconnect(); - //} - //console.info('closing servers') + this._services.forEach(service => { console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); - service.server.close(); - }) - - //const stateMap = this.services[StateMap.name]; - //const directory = this.services[Directory.name]; - //this.services - //await stateMap.server.close(); - //await directory.server.close(); - + service.closeServer(); + }); } get databases() { @@ -223,6 +111,7 @@ export class StageLinqDevices extends EventEmitter { * @param connectionInfo Connection info * @param networkDevice Network device */ + /* private async setupStateMap(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { // Setup StateMap diff --git a/network/announce.ts b/network/announce.ts index 42bd2e4..6a25e92 100644 --- a/network/announce.ts +++ b/network/announce.ts @@ -5,13 +5,12 @@ import { LISTEN_PORT, } from '../types'; import { createSocket, Socket as UDPSocket } from 'dgram'; -//import * as dgram from 'dgram' import { Logger } from '../LogEmitter'; import { networkInterfaces } from 'os'; import { strict as assert } from 'assert'; import { subnet } from 'ip'; import { WriteContext } from '../utils'; -import type { DiscoveryMessage, DeviceId } from '../types'; +import type { DiscoveryMessage } from '../types'; function findBroadcastIPs(): string[] { const interfaces = Object.values(networkInterfaces()); @@ -29,7 +28,6 @@ function findBroadcastIPs(): string[] { return ips; } - let announceClient: UDPSocket | null = null; let announceTimer: NodeJS.Timer | null = null; @@ -74,7 +72,7 @@ async function broadcastMessage(p_message: Uint8Array): Promise { const address = announceClient.address() announceClient.send(p_message, LISTEN_PORT, p_ip, () => { - // Logger.log('UDP message sent to ' + p_ip, ' from port ' + address.port); + Logger.silly('UDP message sent to ' + p_ip, ' from port ' + address.port); resolve(); }); }); @@ -92,7 +90,7 @@ export async function unannounce(message: DiscoveryMessage): Promise { writeDiscoveryMessage(ctx, message); const msg = new Uint8Array(ctx.getBuffer()); await broadcastMessage(msg); - // Logger.info("Unannounced myself"); + Logger.debug("Unannounced myself"); } export async function announce(message: DiscoveryMessage): Promise { @@ -111,14 +109,14 @@ export async function announce(message: DiscoveryMessage): Promise { await broadcastMessage(msg); announceTimer = setInterval(broadcastMessage, ANNOUNCEMENT_INTERVAL, msg); - Logger.info(`Announced myself on ${message.port}`); + Logger.debug(`Announced myself on ${message.port}`); } export interface DiscoveryMessageOptions { name: string; version: string; source: string; - token: Uint8Array; + token: Uint8Array; //FIXME make this DeviceId port?: number }; @@ -131,7 +129,7 @@ export function createDiscoveryMessage(action: string, discoveryMessageOptions: version: discoveryMessageOptions.version }, source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token + token: discoveryMessageOptions.token //FIXME make this DeviceId }; return msg; -} +} \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index ceb6496..4bf53aa 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -2,63 +2,51 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -//import { ServiceInitMessage } from '../network'; -import { ServiceInitMessage, StageLinqDevices } from '../network'; -import { ServiceMessage, ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens, deviceIdFromBuff, DeviceId } from '../types'; +//import { StageLinqDevices } from '../network'; +import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId } from '../types'; import { Logger } from '../LogEmitter'; -import { sleep } from '../utils/sleep'; -import { Socket, AddressInfo } from 'net'; - - +//import { sleep } from '../utils/sleep'; +import { Socket } from 'net'; export interface DirectoryData { deviceId: string; servicePorts: ServicePorts; - } export class Directory extends Service { public name: string = "Directory"; public timeAlive: number; public servicePorts: ServicePorts; - public serviceRequestAllowed: boolean = false; - public services: Map; - protected preparseData = false; - - constructor(p_parent:InstanceType) { - super(p_parent); - //this.services = p_initMsg.services; - //this.parent.directoryPort = - } + //public serviceRequestAllowed: boolean = false; + //public services: Map; + protected isBufferedService = false; async init() { } - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number, isSub?: boolean): ServiceMessage { + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + assert((socket)); + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) return } - protected parseData(ctx: ReadContext, socket: Socket, msgId:number, svcMsg:boolean): ServiceMessage { + protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { let deviceId: string = ""; let servicePorts: ServicePorts = {}; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); - const deviceId = deviceIdFromBuff(token) + const deviceId = new DeviceId(token); const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(":"); - //if (!this.deviceIps.has(ipAddressPort) { - this.deviceIps.set(ipAddressPort, deviceId); - //} - this.connections.set(deviceId, socket); - //this.testPoint(ctx, this.getDeviceIdFromSocket(socket), msgId, "switch", false, svcMsg ); - //console.log(msgId, id, deviceId); + this.peerDeviceIds[ipAddressPort] = deviceId; + this.peerSockets.set(deviceId, socket); + switch (id) { case MessageId.TimeStamp: ctx.seek(16); this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); if (ctx.isEOF() === false ){ - //console.log(ctx.readRemainingAsNewBuffer().toString('hex')); ctx.readRemaining(); } this.sendTimeStampReply(token,socket); @@ -66,12 +54,12 @@ export class Directory extends Service { case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); const port = ctx.readUInt16(); - console.log('received ',service,port) + console.warn('received ',service,port) servicePorts[service] = port; this.servicePorts[service] = port; break; case MessageId.ServicesRequest: - const serviceRequest = ctx.readRemaining(); + ctx.readRemaining(); // this.sendServiceAnnouncement(socket); break; default: @@ -90,105 +78,40 @@ export class Directory extends Service { } protected messageHandler(directoryMsg: ServiceMessage): void { + assert(directoryMsg); } private async sendServiceAnnouncement(socket?: Socket): Promise { - //let svc = this.parent._services.entries(); - //console.warn(svc); - await sleep(250); - const directoryPort = this.serverInfo.port + // await sleep(250); const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - //for (let i=0; i { - await sleep(1500); - const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(Tokens.Listen); - await socket.write(ctx.getBuffer()); - console.log(`sent ServiceRequest to ${socket.remoteAddress}:${socket.remotePort}`) - } - - private async requestAllServicePorts(socket: Socket): Promise { - //assert(this.connection); - - return new Promise(async (resolve, reject) => { - setTimeout(() => { - reject(new Error(`Failed to requestServices for ` )); - }, LISTEN_TIMEOUT); - - // Wait for serviceRequestAllowed - - // FIXME: Refactor into message writer helper class - const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(Tokens.Listen); - const written = await socket.write(ctx.getBuffer()); - //assert(written === ctx.tell()); - - while (true) { - // FIXME: How to determine when all services have been announced? - if (Object.keys(this.servicePorts).length > 3) { - Logger.debug(`Discovered the following services on `); - for (const [name, port] of Object.entries(this.servicePorts)) { - Logger.debug(`\tport: ${port} => ${name}`); - } - resolve(); - break; - } - await sleep(250); - } - }); - } - */ -} - - + Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) + } +} \ No newline at end of file diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index d70a115..8fe43ae 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -6,8 +6,7 @@ import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source, DeviceId } from '../types'; -import { deviceIdFromBuff } from '../types'; -import { Socket, AddressInfo } from 'net'; +import { Socket } from 'net'; import { getTempFilePath } from '../utils'; import * as fs from 'fs'; @@ -46,40 +45,6 @@ export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (progress: FileTransferProgress) => void): this; } -function fastForward(ctx: ReadContext, targetString: string, msgId: number): ReadContext { - - assert(targetString.length % 2 === 0); - const shiftLeft = (collection:Uint8Array, value:any) => { - for (let i = 0; i < collection.length - 1; i++) { - collection[i] = collection[i + 1]; // Shift left - } - collection[collection.length - 1] = value; // Place new value at tail - return collection; - } - - const ctxSize = ctx.sizeLeft(); - const bufferSize = (targetString.length / 2); - let checkBufferArray = new Uint8Array(bufferSize); - checkBufferArray.fill(0); - let count = 0; - - while (Buffer.from(checkBufferArray).toString('hex') !== targetString) { - shiftLeft(checkBufferArray, ctx.read(1)); - count++ - if (ctx.isEOF()) { - ctx.seek(0-ctxSize) - Logger.debug(`[${msgId}] fastForwarded checked ${count} bytes, returned original`); - return ctx - } - } - ctx.seek(0-bufferSize); - if (count !== bufferSize) { - Logger.debug(`[${msgId}] fastForwarded ${count} bytes`); - } - return ctx -}; - - export class FileTransfer extends Service { private receivedFile: WriteContext = null; public name: string = "FileTransfer"; @@ -90,119 +55,20 @@ export class FileTransfer extends Service { async init() {} - /* - protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - - //console.log(msgId, checkSvcReq); - const _msgId = p_ctx.readUInt32(); - const token = p_ctx.read(16); - - //if (this.parent.peers.has(deviceIdFromBuff(token))) { - const svcName = p_ctx.readNetworkStringUTF16(); - const svcPort = p_ctx.readUInt16(); - const length = p_ctx.readUInt32(); - const deviceId = deviceIdFromBuff(token); - this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); - this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); - - const thisDevice: FileTransferServiceData = { - deviceId: deviceId, - socket: socket, - service: this - } - this.services.set(deviceId, thisDevice); - - console.log(`[${msgId}] `,deviceId, svcName, svcPort); - //} else { - // p_ctx.seek(-20); - //} - return - } - */ - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - //Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - //assert((this.p)) - //this.subscribe(socket); + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + assert((socket)); + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) return } - protected parseData(p_ctx: ReadContext, socket: Socket, msgId:number, svcMsg?: boolean): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); const deviceId = this.peerDeviceIds[ipAddressPort]; - // this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "preSvc", true); - - //test if this is a serviceRequest - - //const checkSvcReq = p_ctx.readUInt32(); - - //if (p_ctx.sizeLeft() === 88 && checkSvcReq === 0) { - //console.warn(p_ctx.sizeLeft()); - /* - if (svcMsg) { - //console.log(msgId, checkSvcReq); - const _msgId = p_ctx.readUInt32(); - const token = p_ctx.read(16); - - if (this.parent.peers.has(deviceIdFromBuff(token))) { - const svcName = p_ctx.readNetworkStringUTF16(); - const svcPort = p_ctx.readUInt16(); - const length = p_ctx.readUInt32(); - const deviceId = deviceIdFromBuff(token); - this.deviceIds.set(deviceId,[socket.remoteAddress,socket.remotePort].join(":")); - this.deviceIps.set([socket.remoteAddress,socket.remotePort].join(":"), deviceId); - - const thisDevice: FileTransferServiceData = { - deviceId: deviceId, - socket: socket, - service: this - } - this.services.set(deviceId, thisDevice); - - console.log(`[${msgId}] `,deviceId, svcName, svcPort); - } else { - p_ctx.seek(-20); - } - } //else { - */ - //p_ctx.seek(-4); - //} - // this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "postSvc", true); - - /* - let checkBufferArray = new Uint8Array([0,0,0,0]) - - const shiftLeft = (collection:Uint8Array, value:any) => { - for (let i = 0; i < collection.length - 1; i++) { - collection[i] = collection[i + 1]; // Shift left - } - collection[collection.length - 1] = value; // Place new value at tail - return collection; - } - - let checkString = ""; - - while (checkString !== "666c7478") { - shiftLeft(checkBufferArray, p_ctx.read(1)); - checkString = Buffer.from(checkBufferArray).toString('hex'); - if (p_ctx.isEOF()) { - return - } - } - p_ctx.seek(-4); - */ - - //this.testPoint(p_ctx, dev, msgId, "ff-pre", true ); - //if (p_ctx.sizeLeft() < 100) { - // p_ctx = fastForward(p_ctx, "666c7478", msgId); - //} - - const check = p_ctx.getString(4); - //this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "mag-post", true ); if (check !== MAGIC_MARKER) { - Logger.error(msgId,svcMsg, assert(check === MAGIC_MARKER)) + Logger.error(assert(check === MAGIC_MARKER)) } let code = p_ctx.readUInt32(); @@ -213,7 +79,7 @@ export class FileTransfer extends Service { const id = p_ctx.readUInt32(); assert(id === 0x07d2); assert(p_ctx.readUInt32() === 0); - //console.log(MessageId[id]); + return { id: MessageId.TimeCode, message: { @@ -223,12 +89,8 @@ export class FileTransfer extends Service { }; } - // p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "id" ); - // Else const messageId: MessageId = p_ctx.readUInt32(); - //console.log(`[${msgId}] `,MessageId[messageId], messageId); - //console.log(`[${msgId}] `,deviceId.toString(), ' MessageID: ', MessageId[messageId]); switch (messageId) { case MessageId.SourceLocations: { const sources: string[] = []; @@ -248,15 +110,13 @@ export class FileTransfer extends Service { Logger.debug(`getting sources for `, deviceId.toString()); this.getSources(sources, socket); } - + return { id: messageId, message: { sources: sources, socket: socket, - }, - }; } @@ -265,6 +125,7 @@ export class FileTransfer extends Service { // Last 4 bytes (FAT32) indicate size of file p_ctx.seek(49); const size = p_ctx.readUInt32(); + return { id: messageId, message: { @@ -276,6 +137,7 @@ export class FileTransfer extends Service { case MessageId.EndOfMessage: { // End of result indication? + return { id: messageId, message: null, @@ -318,12 +180,11 @@ export class FileTransfer extends Service { } case MessageId.Unknown0: { - + //sizeLeft() of 6 means its not an offline analyzer + //FIXME actually parse these messages if (p_ctx.sizeLeft() >= 5) { - Logger.debug(`requesting sources from `, deviceId.toString()); this.requestSources(socket); - } return { @@ -345,21 +206,17 @@ export class FileTransfer extends Service { if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); - } else { - // Logger.log(p_data); - } + } } async getFile(p_location: string, socket: Socket): Promise { + assert(this.receivedFile === null); - await this.requestFileTransferId(p_location, socket); const txinfo = await this.waitForMessage(MessageId.FileTransferId); if (txinfo) { - //Logger.info(`heard ${txinfo}`); this.receivedFile = new WriteContext({ size: txinfo.size }); - const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); const total = parseInt(txinfo.size); @@ -367,9 +224,8 @@ export class FileTransfer extends Service { Logger.warn(`${p_location} doesn't exist or is a streaming file`); return; } - await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1, socket); - + try { await new Promise(async (resolve, reject) => { setTimeout(() => { @@ -385,10 +241,10 @@ export class FileTransfer extends Service { bytesDownloaded: bytesDownloaded, percentComplete: percentComplete }) - Logger.debug(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); + Logger.info(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } - Logger.debug(`Download complete.`); + Logger.info(`Download complete.`); resolve(true); }); } catch (err) { @@ -405,139 +261,44 @@ export class FileTransfer extends Service { this.receivedFile = null; return buf; } -/* -export interface Source { - name: string; - database: { - location: string; - size: number; - }; -} -*/ - -/* - async getSources( socket: Socket): Promise { - const result: Source[] = []; - - - await this.requestSourcesOrig(socket); - const message = await this.waitForMessage(MessageId.SourceLocations); - //console.log('message ', message); - if (message) { - - const msgDeviceId = (message.socket) ? this.getDeviceIdFromSocket(message.socket) : "noSocket" - //console.log('message ', msgDeviceId, message); - for (const source of message.sources) { - Logger.info('getSource source: ', source); - //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db - const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; - for (const database of databases) { - await this.requestStat(database, socket); - const fstatMessage = await this.waitForMessage(MessageId.FileStat); - const deviceId = this.getDeviceIdFromSocket(socket); - if (fstatMessage.size > 0) { - result.push({ - name: source, - database: { - location: database, - size: fstatMessage.size, - }, - - - }); - //const data = this.serviceList.get(deviceId); - const thisDevice: FileTransferServiceData = { - deviceId: deviceId, - socket: socket, - service: this, - source: { - name: source, - database: { - location: database, - size: fstatMessage.size - } - } - } - //Logger.debug(thisDevice); - this.services.set(deviceId, thisDevice); - this.sources.set(deviceId, thisDevice); - await sleep(500); - this.downloadDb(deviceId); - break; - } - } - } - } - - return result; - } - */ - async getSources(sources: string[], socket: Socket): Promise { const result: Source[] = []; let devices: DeviceSources = {} - - - //await this.requestSources(socket); - //const message = await this.waitForMessage(MessageId.SourceLocations); - //console.log('message ', message); - //if (message) { - const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - - const msgDeviceId = this.peerDeviceIds[ipAddressPort];// : "noSocket" - //console.log('message ', msgDeviceId, message.sources); - for (const source of sources) { - //Logger.info('getSource source: ', source); - //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db - const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; - for (const database of databases) { - await this.requestStat(database, socket); - const fstatMessage = await this.waitForMessage(MessageId.FileStat); - const deviceId = this.getDeviceIdFromSocket(socket); - if (fstatMessage.size > 0) { - - const thisSource: Source = { - name: source, - database: { - location: database, - size: fstatMessage.size, - } - } - - result.push(thisSource); - //const data = this.serviceList.get(deviceId); - /* - const thisDevice: FileTransferServiceData = { - deviceId: deviceId, - socket: socket, - service: this, - source: { - name: source, - database: { - location: database, - size: fstatMessage.size - } - } + const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + const msgDeviceId = this.peerDeviceIds[ipAddressPort]; + + for (const source of sources) { + //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db + const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; + for (const database of databases) { + await this.requestStat(database, socket); + const fstatMessage = await this.waitForMessage(MessageId.FileStat); + + if (fstatMessage.size > 0) { + + const thisSource: Source = { + name: source, + database: { + location: database, + size: fstatMessage.size, } - */ - //Logger.debug(thisDevice); - //this.services.set(deviceId, thisDevice); - this.sources.set(deviceId, thisSource); - devices[source] = thisSource; - //await sleep(500); - //this.downloadDb(deviceId); - break; } + + result.push(thisSource); + + devices[source] = thisSource; + + break; } } - //} - await this.deviceSources.set(msgDeviceId, devices); + } + + await this.deviceSources.set(msgDeviceId.toString(), devices); await sleep(500); - this.downloadDb(msgDeviceId, socket); - const testDev = this.deviceSources.get(msgDeviceId); - //Logger.info(testDev); + this.downloadDb(msgDeviceId.toString(), socket); + return result; } @@ -601,30 +362,28 @@ export interface Source { async downloadDb(deviceId: string, socket: Socket) { // sourceId: string, service: FileTransfer, _source: Source) { //console.info(source); - Logger.info(`downloadDb request for ${deviceId}`); + Logger.debug(`downloadDb request for ${deviceId}`); const deviceSources = await this.deviceSources.get(deviceId); - // const service = this.services.get(deviceId) - for (const sourceName in deviceSources) { const source = deviceSources[sourceName]; const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); - Logger.debug(`Reading database ${deviceId}/${source.name}`); + Logger.info(`Reading database ${deviceId}/${source.name}`); this.emit('dbDownloading', deviceId, dbPath); - //this.on('fileTransferProgress', (progress) => { - //this.emit('fileTransferProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - // Logger.debug('fileTransferProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - //}); + this.on('fileTransferProgress', (progress) => { + this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + }); // Save database to a file const file = await this.getFile(source.database.location, socket); - Logger.debug(`Saving ${deviceId}/${sourceName} to ${dbPath}`); + Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); - Logger.debug(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); + Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); this.emit('dbDownloaded', deviceId, dbPath); } @@ -654,5 +413,4 @@ export interface Source { return this.sources.get(dbSourceName); } */ - -} +} \ No newline at end of file diff --git a/services/Service.ts b/services/Service.ts index a9e4915..4164a6d 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,13 +1,13 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, Tokens, ConnectionInfo, DeviceId, deviceIdFromBuff } from '../types'; -import { ServiceInitMessage, StageLinqDevices } from '../network'; +import { MessageId, MESSAGE_TIMEOUT, ConnectionInfo, DeviceId } from '../types'; +import { StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; -import type { ServiceMessage, IpAddress, IpAddressPort } from '../types'; +import type { ServiceMessage, IpAddressPort } from '../types'; export declare interface ServiceDevice { on(event: 'listening', listener: (address: AddressInfo) => void): this; @@ -24,41 +24,9 @@ export declare type ServiceData = { service?: InstanceType; } -//type PeerData = { - -//} -/* -interface MsgId { - (val: number): string; - //loopId: number; - //getString(): string; - increment(): void; - reset(): void; -} - -function getMsgId(): MsgId { - let msgId = function (start: number) {} as MsgId; - //counter.interval = 123; - msgId.reset = function () {}; - msgId.increment = function () {}; - return msgId; - } - */ -interface Counter { - (start: number): string; - interval: number; - reset(): void; - } - - function getCounter(): Counter { - let counter = function (start: number) {} as Counter; - counter.interval = 1; - counter.reset = function () {}; - return counter; - } - - class MsgId { +//Just a handy debugging feature. I'll expand on this later. +class MsgId { public id: number = 0; public loopId: number = 1; @@ -69,82 +37,40 @@ interface Counter { incrementId() {this.id++}; incrementLoopId() {this.loopId++}; reset() {this.loopId = 1} - toString(): string { - return `[${this.id}]:[${this.loopId}]` - } - } - + toString(): string { return `[${this.id}]:[${this.loopId}]` } +} -type ServiceBuffers = { +type PeerBuffers = { [key: string]: Buffer; } export abstract class Service extends EventEmitter { - //private address: string; - public port: number; - protected preparseData:boolean = true; + //public port: number; + public readonly name: string = "Service"; + protected isBufferedService: boolean = true; + protected parent: InstanceType; + + protected server: Server = null; public serverInfo: AddressInfo; - public peerDeviceIds: Record = {} - //public peerDeviceIds: Record = {} public serverStatus: boolean = false; - public connections: Map = new Map(); - public deviceIds: Map = new Map(); - public deviceIps: Map = new Map(); - public serviceList: Map = new Map(); - public hasSubbed: boolean = false; - //protected serviceBuffers: Map = new Map(); - protected serviceBuffers: ServiceBuffers = {}; - //protected controller: NetworkDevice; - //protected connection: tcp.Connection = null; - protected connection: Socket = null; - public server: Server = null; - public serInitMsg: ServiceInitMessage; - protected parent: InstanceType; - private msgId: number = 0; + + protected peerDeviceIds: Record = {} + protected peerSockets: Map = new Map(); + protected peerBuffers: PeerBuffers = {}; + + private msgId: number = 0; //only used fro debugging - //constructor(p_address?: string, p_port?: number, p_controller?: NetworkDevice) { constructor(p_parent:InstanceType) { super(); this.parent = p_parent; - //this.serInitMsg = p_initMsg; - } - protected async isSubMsg(_ctx: ReadContext): Promise { - - const ctx = _ctx.readRemainingAsNewCtx(); - const messageId = ctx.readUInt32() - - const token = ctx.read(16); - const deviceId = deviceIdFromBuff(token); - let netStringLength = 0 - if (_ctx.sizeLeft() >= 8) { - netStringLength = ctx.readUInt32(); - netStringLength += 4; - } - //this.testPoint(ctx, deviceId, this.msgId, "isSub", true ); - const hasPeer = await this.parent.peers.has(deviceId) - if (messageId === 0 && hasPeer) { - - return (20 + netStringLength) - } else { - return 0 - } - } - - private async serverMessageParser(p_data: Buffer, socket: Socket) { - - } - - private async serviceMessage(p_data:Buffer, ipAddressPort: IpAddressPort , deviceId:DeviceId) { - } - - async createServer(serviceName: string): Promise { + + async createServer(): Promise { return await new Promise((resolve, reject) => { - //let serviceBuffers:ServiceBuffers = {} - //let queue: Buffer = null; + const server = net.createServer((socket) => { - //const deviceId = this.deviceIps.set([socket.rem]) + Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) //Handle identification of incoming socket. @@ -153,337 +79,139 @@ export abstract class Service extends EventEmitter { port: socket.remotePort, family: socket.remoteFamily, } - const ipAddressPort = [socket.remoteAddress,socket.remotePort].join(":"); + const ipAddressPort = [addressInfo.address, addressInfo.port].join(":"); //Initialize new buffer for this connection let queue: Buffer = null; - this.serviceBuffers[ipAddressPort] = queue; - //this.serviceBuffers.set(ipAddressPort,null); + this.peerBuffers[ipAddressPort] = queue; let deviceId = this.peerDeviceIds[ipAddressPort]; - - //let deviceId = (this.deviceIps.has(ipAddressPort)) ? this.deviceIps.get(ipAddressPort) : ipAddressPort; - - - socket.on('error', (err) => { reject(err); }); socket.on('data', async p_data => { - //let messages:ReadContext[] = []; + this.msgId++ const msgId = new MsgId(this.msgId); - //append queue to current data let buffer: Buffer = null; - if (this.serviceBuffers[ipAddressPort] && this.serviceBuffers[ipAddressPort].length > 0) { - buffer = Buffer.concat([this.serviceBuffers[ipAddressPort], p_data]); - //Logger.info(`[${msgId.toString()}] serviceBuffer ${ipAddressPort} ${this.serviceBuffers[ipAddressPort].length} ${this.serviceBuffers[ipAddressPort].toString('hex')}`); + if (this.peerBuffers[ipAddressPort] && this.peerBuffers[ipAddressPort].length > 0) { + buffer = Buffer.concat([this.peerBuffers[ipAddressPort], p_data]); } else { buffer = p_data; } - this.serviceBuffers[ipAddressPort] = null + this.peerBuffers[ipAddressPort] = null // FIXME: Clean up this arraybuffer confusion mess const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); - //If directory service, send unparsed data immediately, empty buffer - if (this.name === "Directory") { - const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket, msgId.id); - //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); + // Notes on isBufferedService + // some simple services (Directory, TimeSync, others..) + // might receive data the is hard to parse with the buffer. + // if isBufferedService is false, we send this data immediately to parse. + if (!this.isBufferedService) { + const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket); this.messageHandler(parsedData); this.emit('message', parsedData); - } + }; + //check if device has announced itself to this service yet - if (!deviceId && ctx.sizeLeft() >= 20) { - this.testPoint(ctx, "noID", msgId, "!deviceID", true); - const messageId = ctx.readUInt32() + if (!deviceId && ctx.sizeLeft() >= 20) { + + const messageId = ctx.readUInt32(); deviceId = new DeviceId(ctx.read(16)); - //peak at network string length then rewind + //peak at network string length then rewind and read string const stringLength = ctx.readUInt32(); - - //Logger.debug(`string length: ${stringLength} ctx sizeLeft: ${ctx.sizeLeft()}`) ctx.seek(-4); (assert (stringLength <= ctx.sizeLeft())); - const serviceName = ctx.readNetworkStringUTF16(); + //make sure reading port won't overrun buffer (assert (ctx.sizeLeft() >= 2)); - const port = ctx.readUInt16(); - //(assert(port === addressInfo.port)) + ctx.readUInt16(); //read port, though we don't need it + this.peerDeviceIds[ipAddressPort] = deviceId; - //this.parseServiceData - //const wtx = ne - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket, msgId.id); - //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); + + const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket); this.messageHandler(parsedData); this.emit('message', parsedData); } - - /* - let hexString = p_data.toString('hex'); - const hexStringLength = hexString.length; - if (hexString.length > 195) { - hexString = [hexString.substring(0,20), hexString.substring(hexString.length-20,hexString.length)].join('...'); - } - if (this.name === "FileTransfer") { - Logger.debug(this.name, thisMsgId, p_data.length, hexStringLength, hexString); - } - */ - - //let queue: Buffer = this.serviceBuffers.get(ipAddressPort); - - //let serviceBuffers:ServiceBuffers = {} - - - //if (p_data.buffer) { - - //} - /* - const testArrayBuffer = p_data.buffer.slice(p_data.byteOffset, p_data.byteOffset + p_data.byteLength); - const ttx = new ReadContext(testArrayBuffer,false); - //this.testPoint(ttx, deviceId, thisMsgId, "p_data", true ); - //let queue - let isSub = 0; - if (this.name === "Directory") { - isSub = 99 - } else { - isSub = await this.isSubMsg(ttx); - } - - - if (!!isSub) { - Logger.debug(this.name, thisMsgId,' sub msg ', hexString); - this.msgId++ - const parsedData = this.parseData(new ReadContext(testArrayBuffer,false), socket, thisMsgId,true); - //this.testPoint(new ReadContext(testArrayBuffer,false), deviceId, thisMsgId, "while", true ); - this.messageHandler(parsedData); - this.emit('message', parsedData); - } - - if (this.deviceIps.has(ipAddressPort) && deviceId === ipAddressPort) { - deviceId = this.deviceIps.get(ipAddressPort); - } - - - const isSubSeek = (isSub > ctx.sizeLeft()) ? ctx.sizeLeft() : isSub - ctx.seek(isSubSeek); - this.testPoint(ctx, deviceId, thisMsgId, "buffQueue", true ); - queue = null; + try { + while (ctx.isEOF() === false) { + + if (ctx.sizeLeft() < 4) { + this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); + break; + } - */ - //ctx = await this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "data", true ); - /* - let isSub = false; - while (ctx.isEOF() === false) { - if (ctx.sizeLeft() <= 20) break; - const messageId = ctx.readUInt32() - if (messageId !== 0) break; - const token = ctx.read(16); - if (ctx.sizeLeft() < 4) break; - const length = ctx.readUInt32(); - if (length <= ctx.sizeLeft()) break; - ctx.seek(-4); - const service = ctx.readNetworkStringUTF16() - if (ctx.sizeLeft() !== 4) break; - isSub = true; - const port = ctx.readUInt16(); - } - - ctx.rewind(); -*/ - - - //const messageId = ctx.readUInt32(); - //ctx.rewind(); - //console.warn(socket.localPort, " ", this.parent.directoryPort); - - /* - if (!this.preparseData || socket.localPort === this.parent.directoryPort || !!isSub) { - try { - this.testPoint(ctx, deviceId, thisMsgId, "toparse", true ); - const parsedData = this.parseData(ctx, socket,thisMsgId); - this.emit('message', parsedData); - this.messageHandler(parsedData); - } catch (err) { - Logger.error(this.name, thisMsgId, deviceId, err); - } - } else { - */ - //if (this.name !== 'Directory') { - //Logger.debug(`[${this.name}] isEof: ${ctx.isEOF()} ctx sizeLeft: ${ctx.sizeLeft()}`); - //} - - try { - //ctx = this.testPoint(ctx, this.getDeviceIdFromSocket(socket), this.msgId, "no-preparse", true ); - //let loopId = 1 - while (ctx.isEOF() === false) { + const length = ctx.readUInt32(); + if ( length <= ctx.sizeLeft()) { - if (ctx.sizeLeft() < 4) { - this.serviceBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); - break; - } - - const length = ctx.readUInt32() - - //if ( length > 0 && length <= ctx.sizeLeft()) { - - if ( length <= ctx.sizeLeft()) { - if (length === 0) { - Logger.warn('wtf!'); - } - const message = ctx.read(length); - // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer - const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - - //let data = new ReadContext(message.buffer.slice(message.byteOffset, message.byteOffset + length), false) - //data = await this.testPoint(data, this.getDeviceIdFromSocket(socket), this.msgId, "preparse", true ); - - this.msgId++ - const parsedData = this.parseData(new ReadContext(data,false), socket, msgId.loopId); - this.testPoint(new ReadContext(data,false), deviceId.toString(), msgId, "while", true ); - //messages.push(new ReadContext(data, false)) - // Forward parsed data to message handler - - this.messageHandler(parsedData); - this.emit('message', parsedData); - } else { - ctx.seek(-4); // Rewind 4 bytes to include the length again - this.testPoint(ctx, deviceId.toString(), msgId, "toqueue", true ); - this.serviceBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); - if (queue && queue.length < 50) { - //Logger.debug(this.name, msgId.toString(), queue.toString('hex')); - } - break; - } - msgId.incrementLoopId(); + const message = ctx.read(length); + // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer + const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); + + this.msgId++ + const parsedData = this.parseData(new ReadContext(data,false), socket); + + this.messageHandler(parsedData); + this.emit('message', parsedData); + } else { + ctx.seek(-4); // Rewind 4 bytes to include the length again + this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); + break; } - //for (const ctx of messages) { - // const stringMsg = ctx.getString(ctx.sizeLeft()) - // console.log(stringMsg); - //} - } catch (err) { - Logger.error(this.name, msgId.toString(), deviceId.toString(), err); + msgId.incrementLoopId(); } - //} - + } catch (err) { + Logger.error(this.name, deviceId.toString(), err); + } }); }).listen(0, '0.0.0.0', () => { this.serverStatus = true; this.serverInfo = server.address() as net.AddressInfo; - console.log(`opened ${this.name} server on ${this.serverInfo.port}`); + Logger.info(`opened ${this.name} server on ${this.serverInfo.port}`); resolve(server); }); }); } async listen(): Promise { - const server = await this.createServer(this.name) + const server = await this.createServer() this.server = server; - const serverAddress = server.address() as net.AddressInfo; - this.port = serverAddress.port; - return server.address() as net.AddressInfo; + //const serverAddress = server.address() as net.AddressInfo; + //this.port = serverAddress.port; + return server.address() as AddressInfo; } - -/* - async connect(): Promise { - assert(!this.connection); - this.connection = await tcp.connect(this.address, this.port); - let queue: Buffer = null; - - this.connection.socket.on('data', (p_data: Buffer) => { - let buffer: Buffer = null; - if (queue && queue.length > 0) { - buffer = Buffer.concat([queue, p_data]); - } else { - buffer = p_data; - } - - // FIXME: Clean up this arraybuffer confusion mess - const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); - const ctx = new ReadContext(arrayBuffer, false); - queue = null; - - try { - while (ctx.isEOF() === false) { - if (ctx.sizeLeft() < 4) { - queue = ctx.readRemainingAsNewBuffer(); - break; - } - - const length = ctx.readUInt32(); - if (length <= ctx.sizeLeft()) { - const message = ctx.read(length); - // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer - const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - // Logger.info("RECV", length); - //hex(message); - const parsedData = this.parseData(new ReadContext(data, false)); - - // Forward parsed data to message handler - this.messageHandler(parsedData); - this.emit('message', parsedData); - } else { - ctx.seek(-4); // Rewind 4 bytes to include the length again - queue = ctx.readRemainingAsNewBuffer(); - break; - } - } - } catch (err) { - // FIXME: Rethrow based on the severity? - Logger.error(err); - } - }); - - // FIXME: Is this required for all Services? - const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesAnnouncement); - ctx.write(Tokens.SoundSwitch); - ctx.writeNetworkStringUTF16(this.name); - ctx.writeUInt16(this.connection.localPort); // FIXME: In the Go code this is the local TCP port, but 0 or any other 16 bit value seems to work fine as well - await this.write(ctx); - - await this.init(); - - Logger.debug(`Connected to service '${this.name}' at port ${this.port}`); - } -*/ - disconnect() { - assert(this.connection); + closeServer() { + assert(this.server); try { - this.connection.destroy(); + this.server.close(); } catch (e) { - Logger.error('Error disconnecting', e); - } finally { - //this.connection = null; - } + Logger.error('Error closing server', e); + } } - getDeviceIdFromSocket(socket: Socket):string { - const ipPort = [socket.remoteAddress, socket.remotePort].join(":"); - const deviceId = this.deviceIps.get(ipPort); - return deviceId + getDeviceIdFromSocket(socket: Socket): DeviceId { + + return this.peerDeviceIds[[socket.remoteAddress, socket.remotePort].join(':')] } async waitForMessage(p_messageId: number): Promise { return await new Promise((resolve, reject) => { - //Logger.info(`listening for msg ${p_messageId}`); const listener = (p_message: ServiceMessage) => { - //Logger.info(`heard ${p_message.message}`); if (p_message.id === p_messageId) { - this.removeListener('message', listener); - //resolve(p_message.message); resolve(p_message.message); } }; @@ -515,7 +243,7 @@ export abstract class Service extends EventEmitter { return thisEntry.keys.toString(); } - protected testPoint(_ctx: ReadContext, deviceId: string, msg: MsgId, name: string, silent?:boolean) { + protected testPoint(_ctx: ReadContext, deviceId: string, name: string, silent?:boolean) { const ctx = _ctx.readRemainingAsNewCtx(); const length = ctx.sizeLeft(); let buff = "" @@ -529,22 +257,20 @@ export abstract class Service extends EventEmitter { buff += "..."; } if (silent) { - Logger.silent(`[${msg.toString()}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); + Logger.silent(`[${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } else { - Logger.debug(`[${msg.toString()}] [${this.name}] ${deviceId} (${name}) ${length} ${buff}`); + Logger.debug(`[${this.name}] ${deviceId} (${name}) ${length} ${buff}`); } } - // FIXME: Cannot use abstract because of async; is there another way to get this? protected async init() { assert.fail('Implement this'); } - //protected abstract parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage; - protected abstract parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage; + protected abstract parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; - protected abstract parseData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage; + protected abstract parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage; protected abstract messageHandler(p_data: ServiceMessage): void; } diff --git a/services/StateMap.ts b/services/StateMap.ts index 16ad100..83dde87 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,11 +1,14 @@ import { strict as assert } from 'assert'; -import { MessageId, StageLinqValue, StageLinqValueObj } from '../types'; +import { + MessageId, + StageLinqValue, + //StageLinqValueObj, +} from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; import type { ServiceMessage, DeviceId } from '../types'; -import { deviceIdFromBuff } from '../types'; -import { Socket, AddressInfo } from 'net'; +import { Socket } from 'net'; import { Logger } from '../LogEmitter'; export const States = [ @@ -90,7 +93,6 @@ const MAGIC_MARKER_JSON = 0x00000000; export interface StateData { name?: string; client?: string; - msgId?: number; json?: { type: number; string?: string; @@ -107,57 +109,39 @@ export class StateMap extends Service { public async subscribe(socket: Socket) { - Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort}`); + Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); - const keys = Object.keys(StageLinqValueObj); - const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) - - for (const value of values) { - // await this.subscribeState(value, 0, socket); - } - - for (const state of States) { await this.subscribeState(state, 0, socket); } - + + //Use this option to subscribe to ALL possible states + //Warning, it seems to make mixer not return states + // + //const keys = Object.keys(StageLinqValueObj); + //const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) + //for (const value of values) { + // await this.subscribeState(value, 0, socket); + //} } - //protected parseServiceData(p_ctx: ReadContext, socket?: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket, msgId?: number,isSub?:boolean): ServiceMessage { - //Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - //assert((this.p)) - this.subscribe(socket); - return - } + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + this.subscribe(socket); + return + } - protected parseData(p_ctx: ReadContext, socket: Socket, msgId: number, isSub: boolean): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - //p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "parseTop",true ); - //test if this is a serviceRequest - /* - const checkSvcReq = p_ctx.readUInt32(); - if (p_ctx.sizeLeft() === 38 && checkSvcReq === 0) { - const token = p_ctx.read(16); - const svcName = p_ctx.readNetworkStringUTF16(); - const svcPort = p_ctx.readUInt16(); - //console.log(deviceIdFromBuff(token), svcName, svcPort) - this.subscribe(socket); - return - } - p_ctx.rewind(); -*/ const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { - //this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "magCheck", true); - Logger.error(this.name, msgId) + Logger.error(assert(marker !== MAGIC_MARKER)); } assert(marker === MAGIC_MARKER); const type = p_ctx.readUInt32(); switch (type) { case MAGIC_MARKER_JSON: { - // p_ctx = this.testPoint(p_ctx, this.getDeviceIdFromSocket(socket), msgId, "parseJSON", true); const name = p_ctx.readNetworkStringUTF16(); let jsonString = ""; try { @@ -168,15 +152,12 @@ export class StateMap extends Service { message: { name: name, client: [socket.remoteAddress,socket.remotePort].join(":"), - msgId: msgId, json: json, }, }; } catch(err) { - Logger.error(this.name, msgId, jsonString, err); + Logger.error(this.name, jsonString, err); } - - } case MAGIC_MARKER_INTERVAL: { @@ -187,7 +168,6 @@ export class StateMap extends Service { message: { name: name, client: [socket.remoteAddress,socket.remotePort].join(":"), - msgId: msgId, interval: interval, }, }; @@ -203,7 +183,7 @@ export class StateMap extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.message.json) { Logger.info( - `[${p_data.message.msgId}] ${p_data.message.client} ${p_data.message.name} => ${ + `${p_data.message.client} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` ); @@ -227,31 +207,6 @@ export class StateMap extends Service { ctx.writeUInt32(message.length); ctx.write(message) const buffer = ctx.getBuffer(); - //Logger.debug('subscribe ', buffer.toString('hex')); await socket.write(buffer); - //ctx.rewind(); - } -} - -/* - - const checkBufferArray = new Uint8Array([0,0,0,0]) - const smaaArray = new Uint8Array([115, 109, 97, 97]); - - const shiftLeft = (collection:Uint8Array, value:any) => { - for (let i = 0; i < collection.length - 1; i++) { - collection[i] = collection[i + 1]; // Shift left - } - collection[collection.length - 1] = value; // Place new value at tail - return collection; - } - - let checkString = ""; - while (!p_ctx.isEOF()) { - checkString = ""; - while (checkString !== "736d6161") { - shiftLeft(checkBufferArray, p_ctx.read(1)); - checkString = Buffer.from(checkBufferArray).toString('hex'); - } - */ +} \ No newline at end of file diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 31a4281..e76d544 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -1,3 +1,4 @@ +/* import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; @@ -128,4 +129,5 @@ export class TimeSynchronization extends Service { } } -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/services/index.ts b/services/index.ts index 311b433..bc2221a 100644 --- a/services/index.ts +++ b/services/index.ts @@ -2,4 +2,4 @@ export * from './FileTransfer'; export * from './Service'; export * from './StateMap'; export * from './Directory'; -export * from './TimeSync'; \ No newline at end of file +//export * from './TimeSync'; \ No newline at end of file diff --git a/types/DeviceId.ts b/types/DeviceId.ts index 0337d51..1de2c6e 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -1,6 +1,3 @@ -import { strict as assert } from 'assert'; - - class InvalidDeviceIdError extends Error { constructor(m?: string) { super(m || "Error: invalid DeviceId !"); @@ -8,60 +5,8 @@ class InvalidDeviceIdError extends Error { // Set the prototype explicitly. Object.setPrototypeOf(this, InvalidDeviceIdError.prototype); } - -} -/* -interface deviceId { - str?: string; - arr?: Uint8Array -} - - -type NetworkState = - | NetworkLoadingState - | NetworkFailedState - | NetworkSuccessState - | NetworkFromCachedState; - -*/ - -/* -function getStr(deviceId: string | Uint8Array): string { - switch (typeof deviceId) { - case ('string'): - return deviceId as string; - break; - case ('object'): - return toStr(deviceId) as string - break; - } -} - -function getArray(deviceId: string | Uint8Array): Uint8Array { - switch (typeof deviceId) { - case ('object'): - return deviceId as Uint8Array - break; - case ('string'): - return toArr(deviceId) as Uint8Array; - break; - - } -} - -function toArr(str: string | Uint8Array): Uint8Array { - //const u_str = str.toString().split("-").join()//.match(/.{2}/g) - //let buf = Buffer.from(u_str, 'hex') - return Buffer.from(str.toString().split("-").join(), 'hex') -} - -function toStr(arr:Uint8Array | string): string { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(arr).toString('hex')).splice(1).join('-'); } -*/ -// export export class DeviceId { protected m_str: string; protected m_array: Uint8Array; @@ -70,14 +15,12 @@ export class DeviceId { this.m_str = this.forceString(deviceId); this.m_array = this.forceArray(deviceId); - let reg:RegExp = new RegExp("[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}", "i") if(!reg.test(this.m_str)) throw new InvalidDeviceIdError(); } - toString() { return this.m_str; } @@ -85,6 +28,7 @@ export class DeviceId { return this.m_array; } + //there must be a less hack way to do this... private forceString(deviceId: string | Uint8Array): string { switch (typeof deviceId) { case ('string'): @@ -105,58 +49,8 @@ export class DeviceId { break; case ('string'): return Buffer.from(deviceId.toString().split("-").join(), 'hex') as Uint8Array - //return toArr(deviceId) as Uint8Array; break; - - } - } - - /* - private toArr(str: string | Uint8Array): Uint8Array { - //const u_str = str.toString().split("-").join()//.match(/.{2}/g) - //let buf = Buffer.from(u_str, 'hex') - return Buffer.from(str.toString().split("-").join(), 'hex') - } - - private toStr(arr:Uint8Array | string): string { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(arr).toString('hex')).splice(1).join('-'); - } - - - format(str: string): string { - assert(str.length === 32); - - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(str).toString('hex')).splice(1).join('-'); - } - */ - - private static format(str: string): string { - assert(str.length === 32); - - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(str).toString('hex')).splice(1).join('-'); - } - - private static newUuid(version?:number) :DeviceId - { - version = version || 4; - - - // your favourite guid generation function could go here - // ex: http://stackoverflow.com/a/8809472/188246 - let d = new Date().getTime(); - if (window.performance && typeof window.performance.now === "function") { - d += performance.now(); //use high-precision timer if available } - let uuid:string = ('xxxxxxxx-xxxx-' + version.toString().substr(0,1) + 'xxx-yxxx-xxxxxxxxxxxx').replace(/[xy]/g, (c) => { - let r = (d + Math.random() * 16) % 16 | 0; - d = Math.floor(d/16); - return (c=='x' ? r : (r & 0x3 | 0x8)).toString(16); - }); - - return new DeviceId(uuid); } } @@ -165,21 +59,8 @@ export function deviceIdFromBuff(token: Uint8Array): string { .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); } - -function getProduct(id: DeviceId) { - alert(id); // alerts "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" -} - - -//const guid2 = new UUID(); -//console.log(guid2.toString()); // some guid string - - -//const guid = new UUID("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"); -//getProduct(guid); // ok -//getProduct("notGuidbutJustString"); // errors, good - - +/* +Saving incase this is a better way to type DeviceIds type OptionalRecord = Record | undefined type Uuid = string & { __uuidBrand: T } @@ -215,4 +96,6 @@ function funcWithProductIdArg(productId: ProductId) { // // * @ts-expect-error Not a ProductId. -//funcWithProductIdArg('123e4567-e89b-12d3-a456-426614174000') \ No newline at end of file +//funcWithProductIdArg('123e4567-e89b-12d3-a456-426614174000') + +*/ \ No newline at end of file diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index f2f69de..21fdf82 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -123,4 +123,40 @@ export class ReadContext extends Context { assert.fail(`Read outside buffer`); return null; } + + /* + fastForward(ctx: ReadContext, targetString: string, msgId: number): ReadContext { + + assert(targetString.length % 2 === 0); + const shiftLeft = (collection:Uint8Array, value:any) => { + for (let i = 0; i < collection.length - 1; i++) { + collection[i] = collection[i + 1]; // Shift left + } + collection[collection.length - 1] = value; // Place new value at tail + return collection; + } + + const ctxSize = ctx.sizeLeft(); + const bufferSize = (targetString.length / 2); + let checkBufferArray = new Uint8Array(bufferSize); + checkBufferArray.fill(0); + let count = 0; + + while (Buffer.from(checkBufferArray).toString('hex') !== targetString) { + shiftLeft(checkBufferArray, ctx.read(1)); + count++ + if (ctx.isEOF()) { + ctx.seek(0-ctxSize) + Logger.debug(`[${msgId}] fastForwarded checked ${count} bytes, returned original`); + return ctx + } + } + ctx.seek(0-bufferSize); + if (count !== bufferSize) { + Logger.debug(`[${msgId}] fastForwarded ${count} bytes`); + } + return ctx + }; + */ } + diff --git a/utils/index.ts b/utils/index.ts index 4395054..2d77101 100644 --- a/utils/index.ts +++ b/utils/index.ts @@ -3,5 +3,4 @@ export * from './getTempFilePath'; export * from './hex'; export * from './ReadContext'; export * from './sleep'; -export * from './tcp'; export * from './WriteContext'; diff --git a/utils/tcp.ts b/utils/tcp.ts index e9b3fda..fa2a406 100644 --- a/utils/tcp.ts +++ b/utils/tcp.ts @@ -1,3 +1,4 @@ +/* import { Socket as TCPSocket} from 'net'; import * as net from 'net'; import { PromiseSocket } from 'promise-socket'; @@ -16,22 +17,22 @@ export async function connect(p_ip: string, p_port: number): Promise Logger.debug(`TCP connection to '${p_ip}:${p_port}' local port: ${promiseSocket.socket.localPort}`); return promiseSocket; } +*/ - +/* export async function createServer(p_name: string): Promise { return await new Promise((resolve, reject) => { const server = new net.Server; server.listen(); server.on('error', err =>{ reject(err) - //throw new Error(`Server Error ${err}`); }) server.on('connection', socket =>{ resolve(socket) }) }); } - +*/ /* export async function createServer(p_name: string): Promise { return await new Promise((resolve, reject) => { From e5a52ae244368bb16f25bf4389cbbe1d647df5f6 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 10 Oct 2022 22:55:00 -0400 Subject: [PATCH 015/146] Handle disconect msg via fltx --- .gitignore | 1 + .vscode/launch.json | 2 +- Databases/Databases.ts | 1 + cli/index.ts | 10 +- log.txt | 677 ++++++++++++++++++++++++++++----------- network/NetworkDevice.ts | 340 -------------------- services/FileTransfer.ts | 15 + types/index.ts | 3 +- 8 files changed, 523 insertions(+), 526 deletions(-) delete mode 100644 network/NetworkDevice.ts diff --git a/.gitignore b/.gitignore index 6f350bb..e86812f 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,4 @@ typings/ # TernJS port file .tern-port scratch.ts +log.txt diff --git a/.vscode/launch.json b/.vscode/launch.json index 9514b4b..5e27840 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,7 @@ "type": "node", "request": "launch", "name": "Launch JS", - "program": "${workspaceFolder}/dist/cli.js", + "program": "${workspaceFolder}/dist/cli/index.js", "internalConsoleOptions": "openOnSessionStart", "sourceMaps": true, "smartStep": true, diff --git a/Databases/Databases.ts b/Databases/Databases.ts index ff72031..241c73b 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -1,3 +1,4 @@ + import { ConnectionInfo, Source } from '../types'; import { EventEmitter } from 'stream'; import { FileTransfer } from '../services'; diff --git a/cli/index.ts b/cli/index.ts index 6616c69..f32d172 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -72,7 +72,7 @@ async function main() { actingAs: ActingAsDevice.NowPlaying, services: [ - //Services.StateMap, + Services.StateMap, Services.FileTransfer, Services.Directory, ], @@ -95,10 +95,10 @@ async function main() { console.log(...args); args.push("\n"); }); - //stageLinq.logger.on('debug', (...args: any) => { - // console.debug(...args); - // args.push("\n"); - //}); + stageLinq.logger.on('debug', (...args: any) => { + console.debug(...args); + args.push("\n"); + }); // Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); diff --git a/log.txt b/log.txt index ffb1660..b6021e4 100644 --- a/log.txt +++ b/log.txt @@ -1,180 +1,499 @@ -[41] [BEGIN] +[44] [BEGIN] -[4975] opened StateMap server on 59164 -[6850] opened FileTransfer server on 59165 -[7572] opened Directory server on 59166 -[12861] UDP message sent to 192.168.2.255 from port 49925 -[12995] Announced myself on 59166 -[46385] [Directory] connection from 192.168.2.84:59125 -[47193] [Directory] connection from 192.168.2.84:58323 -[47398] [Directory] connection from 192.168.2.83:40143 -[47582] [Directory] connection from 192.168.2.84:41505 -[47745] [Directory] connection from 192.168.2.83:42957 -[47898] [Directory] connection from 192.168.2.83:60365 -[49460] [Directory] sent ServiceAnnouncement to 192.168.2.84:59125 -[50638] [Directory] sent ServiceAnnouncement to 192.168.2.84:58323 -[51089] [Directory] sent ServiceAnnouncement to 192.168.2.83:40143 -[51358] [Directory] sent ServiceAnnouncement to 192.168.2.84:41505 -[51617] [Directory] sent ServiceAnnouncement to 192.168.2.83:42957 -[51854] [Directory] sent ServiceAnnouncement to 192.168.2.83:60365 -[72744] [FileTransfer] connection from 192.168.2.83:54245 -[72998] [FileTransfer] connection from 192.168.2.84:60113 -[73146] [FileTransfer] connection from 192.168.2.84:51205 -[73280] [FileTransfer] connection from 192.168.2.83:51783 -[73408] [FileTransfer] connection from 192.168.2.83:43079 -[73529] [FileTransfer] connection from 192.168.2.84:51121 -[73657] [StateMap] connection from 192.168.2.84:56371 -[73766] [StateMap] connection from 192.168.2.83:36975 -[74051] ServicesAnnouncement to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[74085] TimeCode to FileTransfer from f2befde7-cf4f-424d-ab2f-4f0f7edcb387 -[74383] ServicesAnnouncement to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[74389] TimeCode to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[74404] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[74871] ServicesAnnouncement to FileTransfer from 94c669ad-c31c-47b0-96b9-e9e5b874db05 -[74878] TimeCode to FileTransfer from 94c669ad-c31c-47b0-96b9-e9e5b874db05 -[74981] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[74986] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[74999] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e -[75336] ServicesAnnouncement to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[75343] TimeCode to FileTransfer from 69632315-3d54-4096-bbb9-b4b7f0cc0554 -[75441] ServicesAnnouncement to FileTransfer from cfdf92af-2e4a-4e8b-8c27-b65560e197fa -[75448] TimeCode to FileTransfer from cfdf92af-2e4a-4e8b-8c27-b65560e197fa -[75637] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[75678] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[75744] Sending Statemap subscriptions to 192.168.2.84:56371 -[80151] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[80166] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[80184] Sending Statemap subscriptions to 192.168.2.83:36975 -[96474] 192.168.2.84:56371 /Client/Preferences/Player => {"string":"2","type":4} -[96896] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e -[98301] 192.168.2.83:36975 /Client/Preferences/Player => {"string":"1","type":4} -[99076] 192.168.2.84:56371 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[99489] 192.168.2.84:56371 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[99828] 192.168.2.84:56371 /Engine/Master/MasterTempo => {"type":0,"value":122} -[100268] 192.168.2.84:56371 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[100782] 192.168.2.84:56371 /Engine/Deck1/Play => {"state":false,"type":1} -[101190] 192.168.2.84:56371 /Engine/Deck1/PlayState => {"state":false,"type":1} -[102395] 192.168.2.84:56371 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} -[102845] 192.168.2.84:56371 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} -[103194] 192.168.2.84:56371 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[103529] 192.168.2.84:56371 /Engine/Deck1/Track/SongName => {"string":"Rise Up (Original Mix)","type":8} -[103846] 192.168.2.84:56371 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[104188] 192.168.2.84:56371 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Flying Steps/15036956_Rise Up_(Original Mix).mp3","type":8} -[104494] 192.168.2.84:56371 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[104794] 192.168.2.84:56371 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[105095] 192.168.2.84:56371 /Engine/Deck2/Play => {"state":false,"type":1} -[105413] 192.168.2.84:56371 /Engine/Deck2/PlayState => {"state":false,"type":1} -[105714] 192.168.2.84:56371 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[106020] 192.168.2.84:56371 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[107089] 192.168.2.84:56371 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[107401] 192.168.2.84:56371 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[107708] 192.168.2.84:56371 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[108012] 192.168.2.84:56371 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[108374] 192.168.2.84:56371 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[108730] 192.168.2.84:56371 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[108954] [Directory] connection from 192.168.2.99:49205 -[109613] 192.168.2.83:36975 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[109947] 192.168.2.83:36975 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[110280] 192.168.2.83:36975 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[110590] 192.168.2.83:36975 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[110896] 192.168.2.83:36975 /Engine/Deck1/Play => {"state":false,"type":1} -[111204] 192.168.2.83:36975 /Engine/Deck1/PlayState => {"state":false,"type":1} -[111511] 192.168.2.83:36975 /Engine/Deck1/Track/ArtistName => {"string":"Made In TLV","type":8} -[111862] 192.168.2.83:36975 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[112243] 192.168.2.83:36975 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[112620] 192.168.2.83:36975 /Engine/Deck1/Track/SongName => {"string":"Isla Blanca (Original Mix)","type":8} -[112960] 192.168.2.83:36975 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[113312] 192.168.2.83:36975 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Made In TLV/Isla Blanca/15564436_Isla Blanca_(Original Mix).mp3","type":8} -[113620] 192.168.2.83:36975 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[113921] 192.168.2.83:36975 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[114218] 192.168.2.83:36975 /Engine/Deck2/Play => {"state":false,"type":1} -[114509] 192.168.2.83:36975 /Engine/Deck2/PlayState => {"state":false,"type":1} -[114807] 192.168.2.83:36975 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[115122] 192.168.2.83:36975 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[115424] 192.168.2.83:36975 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[115730] 192.168.2.83:36975 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[116039] 192.168.2.83:36975 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[116973] 192.168.2.83:36975 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[117286] 192.168.2.83:36975 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[117592] 192.168.2.83:36975 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[118191] [Directory] sent ServiceAnnouncement to 192.168.2.99:49205 -[134843] [StateMap] connection from 192.168.2.99:49206 -[135128] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f -[135208] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f -[135221] Sending Statemap subscriptions to 192.168.2.99:49206 -[149449] 192.168.2.99:49206 /Mixer/CH1faderPosition => {"type":0,"value":1.27} -[149956] 192.168.2.99:49206 /Mixer/ChannelAssignment1 => {"string":",1","type":8} -[150370] 192.168.2.99:49206 /Mixer/ChannelAssignment2 => {"string":",1","type":8} -[150773] 192.168.2.99:49206 /Mixer/ChannelAssignment3 => {"string":",1","type":8} -[151168] 192.168.2.99:49206 /Mixer/ChannelAssignment4 => {"string":",1","type":8} -[151564] 192.168.2.99:49206 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} -[151961] 192.168.2.99:49206 /Mixer/CH2faderPosition => {"type":0,"value":1.27} -[617520] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e -[623196] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) -[632545] dbProgress 4be14112-5ead-4848-a07d-b37ca8a7220e 270336 0 0 -[633658] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/270336 -[840682] Download complete. -[840950] Signaling transfer complete. -[843338] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[846738] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[1022246] UDP message sent to 192.168.2.255 from port 49925 -[1060981] sent TimeStamp to 192.168.2.99:49205 -[2025007] UDP message sent to 192.168.2.255 from port 49925 -[2633341] sent TimeStamp to 192.168.2.99:49205 -[3032183] UDP message sent to 192.168.2.255 from port 49925 -[3352868] sent TimeStamp to 192.168.2.83:60365 -[4035450] UDP message sent to 192.168.2.255 from port 49925 -[4061430] sent TimeStamp to 192.168.2.99:49205 -[4376713] sent TimeStamp to 192.168.2.83:42957 -[4378355] sent TimeStamp to 192.168.2.83:40143 -[4782904] sent TimeStamp to 192.168.2.84:58323 -[4783739] sent TimeStamp to 192.168.2.84:59125 -[4784341] sent TimeStamp to 192.168.2.84:41505 -[5042331] UDP message sent to 192.168.2.255 from port 49925 -[5561244] sent TimeStamp to 192.168.2.99:49205 -[6044303] UDP message sent to 192.168.2.255 from port 49925 -[7044767] UDP message sent to 192.168.2.255 from port 49925 -[7063825] sent TimeStamp to 192.168.2.99:49205 -[8043401] UDP message sent to 192.168.2.255 from port 49925 -[8367621] sent TimeStamp to 192.168.2.83:60365 -[8563586] sent TimeStamp to 192.168.2.99:49205 -[9046337] UDP message sent to 192.168.2.255 from port 49925 -[9393810] sent TimeStamp to 192.168.2.83:42957 -[9395208] sent TimeStamp to 192.168.2.83:40143 -[9802773] sent TimeStamp to 192.168.2.84:58323 -[9803980] sent TimeStamp to 192.168.2.84:59125 -[9804745] sent TimeStamp to 192.168.2.84:41505 -[10052900] UDP message sent to 192.168.2.255 from port 49925 -[10061797] sent TimeStamp to 192.168.2.99:49205 -[11050626] UDP message sent to 192.168.2.255 from port 49925 -[11584767] sent TimeStamp to 192.168.2.99:49205 -[12051110] UDP message sent to 192.168.2.255 from port 49925 -[13052886] UDP message sent to 192.168.2.255 from port 49925 -[13066269] sent TimeStamp to 192.168.2.99:49205 -[13385822] sent TimeStamp to 192.168.2.83:60365 -[14054642] UDP message sent to 192.168.2.255 from port 49925 -[14302889] sent TimeStamp to 192.168.2.83:42957 -[14304840] sent TimeStamp to 192.168.2.83:40143 -[14617758] sent TimeStamp to 192.168.2.99:49205 -[14730719] sent TimeStamp to 192.168.2.84:58323 -[14732091] sent TimeStamp to 192.168.2.84:59125 -[14732979] sent TimeStamp to 192.168.2.84:41505 -[15057390] UDP message sent to 192.168.2.255 from port 49925 -[16057075] UDP message sent to 192.168.2.255 from port 49925 -[16070918] sent TimeStamp to 192.168.2.99:49205 -[17056491] UDP message sent to 192.168.2.255 from port 49925 -[17566917] sent TimeStamp to 192.168.2.99:49205 -[18060610] UDP message sent to 192.168.2.255 from port 49925 -[18300426] sent TimeStamp to 192.168.2.83:60365 -[19061741] UDP message sent to 192.168.2.255 from port 49925 -[19074979] sent TimeStamp to 192.168.2.99:49205 -[19302478] sent TimeStamp to 192.168.2.83:42957 -[19304335] sent TimeStamp to 192.168.2.83:40143 -[19729080] sent TimeStamp to 192.168.2.84:58323 -[19730807] sent TimeStamp to 192.168.2.84:59125 -[19731743] sent TimeStamp to 192.168.2.84:41505 -[20062623] UDP message sent to 192.168.2.255 from port 49925 -[20630099] sent TimeStamp to 192.168.2.99:49205 -[21068123] UDP message sent to 192.168.2.255 from port 49925 -[22068009] UDP message sent to 192.168.2.255 from port 49925 -[22083938] sent TimeStamp to 192.168.2.99:49205 +[4933] opened StateMap server on 60454 +[6884] opened FileTransfer server on 60455 +[7604] opened Directory server on 60456 +[12354] UDP message sent to 192.168.2.255 from port 55570 +[13543] Announced myself on 60456 +[81054] [Directory] connection from 192.168.2.84:46167 +[82136] [Directory] connection from 192.168.2.84:52171 +[82656] [Directory] connection from 192.168.2.84:33279 +[84011] [Directory] sent ServiceAnnouncement to 192.168.2.84:46167 +[84802] [Directory] sent ServiceAnnouncement to 192.168.2.84:52171 +[85359] [Directory] sent ServiceAnnouncement to 192.168.2.84:33279 +[87021] [Directory] connection from 192.168.2.99:49207 +[87579] [Directory] connection from 192.168.2.83:44351 +[88044] [Directory] connection from 192.168.2.83:36873 +[88466] [Directory] connection from 192.168.2.83:51993 +[89158] [Directory] sent ServiceAnnouncement to 192.168.2.99:49207 +[89695] [Directory] sent ServiceAnnouncement to 192.168.2.83:44351 +[90205] [Directory] sent ServiceAnnouncement to 192.168.2.83:36873 +[90702] [Directory] sent ServiceAnnouncement to 192.168.2.83:51993 +[100015] [FileTransfer] connection from 192.168.2.84:33259 +[100750] ServicesAnnouncement to FileTransfer from 82b44917-28c1-498e-9bb8-acf9e8d0fdb6 +[101160] TimeCode to FileTransfer from 82b44917-28c1-498e-9bb8-acf9e8d0fdb6 +[105491] [FileTransfer] connection from 192.168.2.84:57023 +[105974] [FileTransfer] connection from 192.168.2.84:33477 +[106428] [StateMap] connection from 192.168.2.84:37641 +[106930] ServicesAnnouncement to FileTransfer from 07faa3e3-bd0b-4888-845e-b0d5c37e6483 +[107219] TimeCode to FileTransfer from 07faa3e3-bd0b-4888-845e-b0d5c37e6483 +[107657] [StateMap] connection from 192.168.2.83:51905 +[108154] ServicesAnnouncement to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[108437] TimeCode to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[108752] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[109523] [FileTransfer] connection from 192.168.2.83:36811 +[109937] [FileTransfer] connection from 192.168.2.83:56369 +[110415] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[110731] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[111097] Sending Statemap subscriptions to 192.168.2.84:37641 1e6c417a-b674-4c87-b4aa-fb7ad2298976 +[115512] [StateMap] connection from 192.168.2.99:49208 +[116148] [FileTransfer] connection from 192.168.2.83:57341 +[116620] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[116910] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e +[117218] Sending Statemap subscriptions to 192.168.2.83:51905 4be14112-5ead-4848-a07d-b37ca8a7220e +[120925] ServicesAnnouncement to FileTransfer from 94be47d0-8232-4cbf-934a-73255a403965 +[121267] TimeCode to FileTransfer from 94be47d0-8232-4cbf-934a-73255a403965 +[121749] ServicesAnnouncement to FileTransfer from f9d4390e-2500-469d-9e0a-d6a1de595e8c +[122231] TimeCode to FileTransfer from f9d4390e-2500-469d-9e0a-d6a1de595e8c +[123512] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f +[123810] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f +[124178] Sending Statemap subscriptions to 192.168.2.99:49208 00000000-0000-0000-8000-00059501ab6f +[127098] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[127396] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e +[127715] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e +[128985] 192.168.2.83:51905 /Client/Preferences/Player => {"string":"1","type":4} +[129352] 192.168.2.83:51905 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[129677] 192.168.2.83:51905 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[130006] 192.168.2.83:51905 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} +[130317] 192.168.2.83:51905 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[132932] 192.168.2.84:37641 /Client/Preferences/Player => {"string":"2","type":4} +[133487] 192.168.2.83:51905 /Engine/Deck1/Play => {"state":false,"type":1} +[133801] 192.168.2.83:51905 /Engine/Deck1/PlayState => {"state":false,"type":1} +[134113] 192.168.2.83:51905 /Engine/Deck1/Track/ArtistName => {"string":"Goom Gum","type":8} +[134458] 192.168.2.83:51905 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Goom Gum/Aposch/15921162_Aposch_(Original Mix).mp3","type":8} +[134764] 192.168.2.83:51905 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[135088] 192.168.2.83:51905 /Engine/Deck1/Track/SongName => {"string":"Aposch (Original Mix)","type":8} +[135399] 192.168.2.83:51905 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[135734] 192.168.2.83:51905 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Goom Gum/Aposch/15921162_Aposch_(Original Mix).mp3","type":8} +[136451] 192.168.2.84:37641 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} +[136775] 192.168.2.84:37641 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} +[137094] 192.168.2.84:37641 /Engine/Master/MasterTempo => {"type":0,"value":122} +[137414] 192.168.2.84:37641 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} +[137720] 192.168.2.84:37641 /Engine/Deck1/Play => {"state":false,"type":1} +[138033] 192.168.2.84:37641 /Engine/Deck1/PlayState => {"state":false,"type":1} +[138344] 192.168.2.84:37641 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} +[138692] 192.168.2.84:37641 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} +[139024] 192.168.2.84:37641 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} +[139823] 192.168.2.84:37641 /Engine/Deck1/Track/SongName => {"string":"Dark Force (Original Mix)","type":8} +[140143] 192.168.2.84:37641 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} +[140492] 192.168.2.84:37641 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} +[140803] 192.168.2.84:37641 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} +[141122] 192.168.2.84:37641 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[141432] 192.168.2.84:37641 /Engine/Deck2/Play => {"state":false,"type":1} +[141736] 192.168.2.84:37641 /Engine/Deck2/PlayState => {"state":false,"type":1} +[142047] 192.168.2.84:37641 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[142358] 192.168.2.84:37641 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[142899] 192.168.2.83:51905 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} +[143215] 192.168.2.83:51905 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} +[143549] 192.168.2.83:51905 /Engine/Deck2/Play => {"state":false,"type":1} +[143864] 192.168.2.83:51905 /Engine/Deck2/PlayState => {"state":false,"type":1} +[144175] 192.168.2.83:51905 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} +[144495] 192.168.2.83:51905 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} +[144803] 192.168.2.83:51905 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[145118] 192.168.2.83:51905 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[145431] 192.168.2.83:51905 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[145861] 192.168.2.83:51905 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[146284] 192.168.2.83:51905 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[146604] 192.168.2.83:51905 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[147179] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e +[148284] 192.168.2.99:49208 /Mixer/CH1faderPosition => {"type":0,"value":1.27} +[148617] 192.168.2.99:49208 /Mixer/ChannelAssignment1 => {"string":",1","type":8} +[148961] 192.168.2.99:49208 /Mixer/ChannelAssignment2 => {"string":",1","type":8} +[149284] 192.168.2.99:49208 /Mixer/ChannelAssignment3 => {"string":",1","type":8} +[149604] 192.168.2.99:49208 /Mixer/ChannelAssignment4 => {"string":",1","type":8} +[149925] 192.168.2.99:49208 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} +[150263] 192.168.2.99:49208 /Mixer/CH2faderPosition => {"type":0,"value":1.27} +[151299] 192.168.2.84:37641 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} +[151620] 192.168.2.84:37641 /Engine/Deck2/Track/SongName => {"string":"","type":8} +[151937] 192.168.2.84:37641 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} +[152412] 192.168.2.84:37641 /Engine/Deck2/Track/TrackName => {"string":"","type":8} +[153231] 192.168.2.84:37641 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} +[153555] 192.168.2.84:37641 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} +[662625] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e +[669626] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) +[686001] dbProgress 4be14112-5ead-4848-a07d-b37ca8a7220e 270336 0 0 +[687354] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/270336 +[890691] Download complete. +[891810] Signaling transfer complete. +[893358] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[896499] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db +[990248] sent TimeStamp to 192.168.2.99:49207 +[1021572] UDP message sent to 192.168.2.255 from port 55570 +[1276553] sent TimeStamp to 192.168.2.83:51993 +[2024180] UDP message sent to 192.168.2.255 from port 55570 +[2279186] sent TimeStamp to 192.168.2.83:44351 +[2280749] sent TimeStamp to 192.168.2.83:36873 +[2495796] sent TimeStamp to 192.168.2.99:49207 +[3025441] UDP message sent to 192.168.2.255 from port 55570 +[3033758] 192.168.2.83:51905 /Engine/Deck1/PlayState => {"state":false,"type":1} +[3443500] sent TimeStamp to 192.168.2.84:52171 +[3444222] sent TimeStamp to 192.168.2.84:33279 +[3444715] sent TimeStamp to 192.168.2.84:46167 +[4034072] UDP message sent to 192.168.2.255 from port 55570 +[4047388] sent TimeStamp to 192.168.2.99:49207 +[5034563] UDP message sent to 192.168.2.255 from port 55570 +[5499160] sent TimeStamp to 192.168.2.99:49207 +[6035889] UDP message sent to 192.168.2.255 from port 55570 +[6275416] sent TimeStamp to 192.168.2.83:51993 +[6996568] sent TimeStamp to 192.168.2.99:49207 +[7039091] UDP message sent to 192.168.2.255 from port 55570 +[7333793] sent TimeStamp to 192.168.2.83:36873 +[7335111] sent TimeStamp to 192.168.2.83:44351 +[8040044] UDP message sent to 192.168.2.255 from port 55570 +[8459603] sent TimeStamp to 192.168.2.84:52171 +[8461027] sent TimeStamp to 192.168.2.84:33279 +[8462002] sent TimeStamp to 192.168.2.84:46167 +[8498144] sent TimeStamp to 192.168.2.99:49207 +[9041241] UDP message sent to 192.168.2.255 from port 55570 +[10045242] UDP message sent to 192.168.2.255 from port 55570 +[10058376] sent TimeStamp to 192.168.2.99:49207 +[11044195] UDP message sent to 192.168.2.255 from port 55570 +[11328556] sent TimeStamp to 192.168.2.83:51993 +[11499504] sent TimeStamp to 192.168.2.99:49207 +[12047169] UDP message sent to 192.168.2.255 from port 55570 +[12354856] sent TimeStamp to 192.168.2.83:36873 +[12356429] sent TimeStamp to 192.168.2.83:44351 +[12998649] sent TimeStamp to 192.168.2.99:49207 +[13050990] UDP message sent to 192.168.2.255 from port 55570 +[13477994] sent TimeStamp to 192.168.2.84:33279 +[13479402] sent TimeStamp to 192.168.2.84:46167 +[13480471] sent TimeStamp to 192.168.2.84:52171 +[14049512] UDP message sent to 192.168.2.255 from port 55570 +[14501242] sent TimeStamp to 192.168.2.99:49207 +[15053459] UDP message sent to 192.168.2.255 from port 55570 +[16004242] sent TimeStamp to 192.168.2.99:49207 +[16052890] UDP message sent to 192.168.2.255 from port 55570 +[16348849] sent TimeStamp to 192.168.2.83:51993 +[17052065] UDP message sent to 192.168.2.255 from port 55570 +[17276308] sent TimeStamp to 192.168.2.83:36873 +[17277213] sent TimeStamp to 192.168.2.83:44351 +[17593541] sent TimeStamp to 192.168.2.99:49207 +[18052921] UDP message sent to 192.168.2.255 from port 55570 +[18415141] sent TimeStamp to 192.168.2.84:52171 +[18416616] sent TimeStamp to 192.168.2.84:33279 +[18417559] sent TimeStamp to 192.168.2.84:46167 +[19055579] UDP message sent to 192.168.2.255 from port 55570 +[19117691] sent TimeStamp to 192.168.2.99:49207 +[20057840] UDP message sent to 192.168.2.255 from port 55570 +[20507577] sent TimeStamp to 192.168.2.99:49207 +[21059682] UDP message sent to 192.168.2.255 from port 55570 +[21275560] sent TimeStamp to 192.168.2.83:51993 +[22060582] UDP message sent to 192.168.2.255 from port 55570 +[22070285] sent TimeStamp to 192.168.2.99:49207 +[22276785] sent TimeStamp to 192.168.2.83:36873 +[22278428] sent TimeStamp to 192.168.2.83:44351 +[23060164] UDP message sent to 192.168.2.255 from port 55570 +[23370543] sent TimeStamp to 192.168.2.84:52171 +[23372058] sent TimeStamp to 192.168.2.84:33279 +[23372838] sent TimeStamp to 192.168.2.84:46167 +[23785478] sent TimeStamp to 192.168.2.99:49207 +[24062134] UDP message sent to 192.168.2.255 from port 55570 +[25050290] sent TimeStamp to 192.168.2.99:49207 +[25063253] UDP message sent to 192.168.2.255 from port 55570 +[26067330] UDP message sent to 192.168.2.255 from port 55570 +[26279792] sent TimeStamp to 192.168.2.83:51993 +[26512812] sent TimeStamp to 192.168.2.99:49207 +[27066911] UDP message sent to 192.168.2.255 from port 55570 +[27277928] sent TimeStamp to 192.168.2.83:36873 +[27279057] sent TimeStamp to 192.168.2.83:44351 +[28068432] UDP message sent to 192.168.2.255 from port 55570 +[28079756] sent TimeStamp to 192.168.2.99:49207 +[28374585] sent TimeStamp to 192.168.2.84:46167 +[28375565] sent TimeStamp to 192.168.2.84:52171 +[28376327] sent TimeStamp to 192.168.2.84:33279 +[29069427] UDP message sent to 192.168.2.255 from port 55570 +[29555164] sent TimeStamp to 192.168.2.99:49207 +[30070316] UDP message sent to 192.168.2.255 from port 55570 +[31073705] UDP message sent to 192.168.2.255 from port 55570 +[31085036] sent TimeStamp to 192.168.2.99:49207 +[31278370] sent TimeStamp to 192.168.2.83:51993 +[32075431] UDP message sent to 192.168.2.255 from port 55570 +[32277214] sent TimeStamp to 192.168.2.83:36873 +[32278807] sent TimeStamp to 192.168.2.83:44351 +[32525578] sent TimeStamp to 192.168.2.99:49207 +[33076604] UDP message sent to 192.168.2.255 from port 55570 +[33448103] sent TimeStamp to 192.168.2.84:46167 +[33449063] sent TimeStamp to 192.168.2.84:52171 +[33449730] sent TimeStamp to 192.168.2.84:33279 +[34063002] sent TimeStamp to 192.168.2.99:49207 +[34076245] UDP message sent to 192.168.2.255 from port 55570 +[35078058] UDP message sent to 192.168.2.255 from port 55570 +[35675114] sent TimeStamp to 192.168.2.99:49207 +[36080867] UDP message sent to 192.168.2.255 from port 55570 +[36277314] sent TimeStamp to 192.168.2.83:51993 +[37029902] sent TimeStamp to 192.168.2.99:49207 +[37081758] UDP message sent to 192.168.2.255 from port 55570 +[37277637] sent TimeStamp to 192.168.2.83:44351 +[37279023] sent TimeStamp to 192.168.2.83:36873 +[38083479] UDP message sent to 192.168.2.255 from port 55570 +[38372068] sent TimeStamp to 192.168.2.84:46167 +[38373702] sent TimeStamp to 192.168.2.84:33279 +[38376722] sent TimeStamp to 192.168.2.84:52171 +[38494797] sent TimeStamp to 192.168.2.99:49207 +[39083407] UDP message sent to 192.168.2.255 from port 55570 +[40083911] UDP message sent to 192.168.2.255 from port 55570 +[40099549] sent TimeStamp to 192.168.2.99:49207 +[41089080] UDP message sent to 192.168.2.255 from port 55570 +[41278759] sent TimeStamp to 192.168.2.83:51993 +[41538222] sent TimeStamp to 192.168.2.99:49207 +[42088939] UDP message sent to 192.168.2.255 from port 55570 +[42277600] sent TimeStamp to 192.168.2.83:44351 +[42279533] sent TimeStamp to 192.168.2.83:36873 +[43073556] sent TimeStamp to 192.168.2.99:49207 +[43090058] UDP message sent to 192.168.2.255 from port 55570 +[43479829] sent TimeStamp to 192.168.2.84:46167 +[43481050] sent TimeStamp to 192.168.2.84:52171 +[43482174] sent TimeStamp to 192.168.2.84:33279 +[44089920] UDP message sent to 192.168.2.255 from port 55570 +[44611253] sent TimeStamp to 192.168.2.99:49207 +[45092346] UDP message sent to 192.168.2.255 from port 55570 +[46045224] sent TimeStamp to 192.168.2.99:49207 +[46097126] UDP message sent to 192.168.2.255 from port 55570 +[46286492] sent TimeStamp to 192.168.2.83:51993 +[47096253] UDP message sent to 192.168.2.255 from port 55570 +[47279124] sent TimeStamp to 192.168.2.83:44351 +[47280480] sent TimeStamp to 192.168.2.83:36873 +[47497248] sent TimeStamp to 192.168.2.99:49207 +[48099827] UDP message sent to 192.168.2.255 from port 55570 +[48402282] sent TimeStamp to 192.168.2.84:52171 +[48403666] sent TimeStamp to 192.168.2.84:46167 +[48404645] sent TimeStamp to 192.168.2.84:33279 +[49011695] sent TimeStamp to 192.168.2.99:49207 +[49097509] UDP message sent to 192.168.2.255 from port 55570 +[50097579] UDP message sent to 192.168.2.255 from port 55570 +[50497850] sent TimeStamp to 192.168.2.99:49207 +[51101258] UDP message sent to 192.168.2.255 from port 55570 +[51279814] sent TimeStamp to 192.168.2.83:51993 +[52001278] sent TimeStamp to 192.168.2.99:49207 +[52102934] UDP message sent to 192.168.2.255 from port 55570 +[52277754] sent TimeStamp to 192.168.2.83:36873 +[52279479] sent TimeStamp to 192.168.2.83:44351 +[53107412] UDP message sent to 192.168.2.255 from port 55570 +[53375773] sent TimeStamp to 192.168.2.84:33279 +[53377130] sent TimeStamp to 192.168.2.84:46167 +[53378260] sent TimeStamp to 192.168.2.84:52171 +[53502349] sent TimeStamp to 192.168.2.99:49207 +[54107732] UDP message sent to 192.168.2.255 from port 55570 +[55053463] sent TimeStamp to 192.168.2.99:49207 +[55110796] UDP message sent to 192.168.2.255 from port 55570 +[56110359] UDP message sent to 192.168.2.255 from port 55570 +[56275091] sent TimeStamp to 192.168.2.83:51993 +[56588659] sent TimeStamp to 192.168.2.99:49207 +[57111032] UDP message sent to 192.168.2.255 from port 55570 +[57282008] sent TimeStamp to 192.168.2.83:36873 +[57282974] sent TimeStamp to 192.168.2.83:44351 +[58022800] sent TimeStamp to 192.168.2.99:49207 +[58113086] UDP message sent to 192.168.2.255 from port 55570 +[58369815] sent TimeStamp to 192.168.2.84:33279 +[58370583] sent TimeStamp to 192.168.2.84:46167 +[58371142] sent TimeStamp to 192.168.2.84:52171 +[59113779] UDP message sent to 192.168.2.255 from port 55570 +[59572751] sent TimeStamp to 192.168.2.99:49207 +[60116796] UDP message sent to 192.168.2.255 from port 55570 +[61095700] sent TimeStamp to 192.168.2.99:49207 +[61121332] UDP message sent to 192.168.2.255 from port 55570 +[61276051] sent TimeStamp to 192.168.2.83:51993 +[62118222] UDP message sent to 192.168.2.255 from port 55570 +[62275595] sent TimeStamp to 192.168.2.83:36873 +[62277295] sent TimeStamp to 192.168.2.83:44351 +[62508773] sent TimeStamp to 192.168.2.99:49207 +[63120589] UDP message sent to 192.168.2.255 from port 55570 +[63448902] sent TimeStamp to 192.168.2.84:52171 +[63450022] sent TimeStamp to 192.168.2.84:33279 +[63450759] sent TimeStamp to 192.168.2.84:46167 +[64008306] sent TimeStamp to 192.168.2.99:49207 +[64120934] UDP message sent to 192.168.2.255 from port 55570 +[65124993] UDP message sent to 192.168.2.255 from port 55570 +[65601180] sent TimeStamp to 192.168.2.99:49207 +[66126340] UDP message sent to 192.168.2.255 from port 55570 +[66276185] sent TimeStamp to 192.168.2.83:51993 +[67032858] sent TimeStamp to 192.168.2.99:49207 +[67124901] UDP message sent to 192.168.2.255 from port 55570 +[67275703] sent TimeStamp to 192.168.2.83:36873 +[67276855] sent TimeStamp to 192.168.2.83:44351 +[68125388] UDP message sent to 192.168.2.255 from port 55570 +[68466508] sent TimeStamp to 192.168.2.84:46167 +[68468264] sent TimeStamp to 192.168.2.84:52171 +[68469540] sent TimeStamp to 192.168.2.84:33279 +[68511517] sent TimeStamp to 192.168.2.99:49207 +[69126270] UDP message sent to 192.168.2.255 from port 55570 +[70107763] sent TimeStamp to 192.168.2.99:49207 +[70124695] UDP message sent to 192.168.2.255 from port 55570 +[71132186] UDP message sent to 192.168.2.255 from port 55570 +[71279049] sent TimeStamp to 192.168.2.83:51993 +[71554486] sent TimeStamp to 192.168.2.99:49207 +[72131567] UDP message sent to 192.168.2.255 from port 55570 +[72277945] sent TimeStamp to 192.168.2.83:36873 +[72279181] sent TimeStamp to 192.168.2.83:44351 +[73039150] sent TimeStamp to 192.168.2.99:49207 +[73132810] UDP message sent to 192.168.2.255 from port 55570 +[73381565] sent TimeStamp to 192.168.2.84:52171 +[73382353] sent TimeStamp to 192.168.2.84:46167 +[73382961] sent TimeStamp to 192.168.2.84:33279 +[74132582] UDP message sent to 192.168.2.255 from port 55570 +[74497378] sent TimeStamp to 192.168.2.99:49207 +[75135086] UDP message sent to 192.168.2.255 from port 55570 +[76000927] sent TimeStamp to 192.168.2.99:49207 +[76139147] UDP message sent to 192.168.2.255 from port 55570 +[76274968] sent TimeStamp to 192.168.2.83:51993 +[77140833] UDP message sent to 192.168.2.255 from port 55570 +[77272749] sent TimeStamp to 192.168.2.83:36873 +[77273601] sent TimeStamp to 192.168.2.83:44351 +[77532357] sent TimeStamp to 192.168.2.99:49207 +[78141243] UDP message sent to 192.168.2.255 from port 55570 +[78368115] sent TimeStamp to 192.168.2.84:52171 +[78369879] sent TimeStamp to 192.168.2.84:33279 +[78370759] sent TimeStamp to 192.168.2.84:46167 +[79014069] sent TimeStamp to 192.168.2.99:49207 +[79140677] UDP message sent to 192.168.2.255 from port 55570 +[80141139] UDP message sent to 192.168.2.255 from port 55570 +[80551699] sent TimeStamp to 192.168.2.99:49207 +[81146005] UDP message sent to 192.168.2.255 from port 55570 +[81274891] sent TimeStamp to 192.168.2.83:51993 +[82084880] sent TimeStamp to 192.168.2.99:49207 +[82145837] UDP message sent to 192.168.2.255 from port 55570 +[82275126] sent TimeStamp to 192.168.2.83:36873 +[82276540] sent TimeStamp to 192.168.2.83:44351 +[83145719] UDP message sent to 192.168.2.255 from port 55570 +[83417706] sent TimeStamp to 192.168.2.84:52171 +[83419672] sent TimeStamp to 192.168.2.84:46167 +[83421006] sent TimeStamp to 192.168.2.84:33279 +[83528326] sent TimeStamp to 192.168.2.99:49207 +[84146863] UDP message sent to 192.168.2.255 from port 55570 +[85061255] sent TimeStamp to 192.168.2.99:49207 +[85149381] UDP message sent to 192.168.2.255 from port 55570 +[86150631] UDP message sent to 192.168.2.255 from port 55570 +[86276056] sent TimeStamp to 192.168.2.83:51993 +[86529909] sent TimeStamp to 192.168.2.99:49207 +[87151736] UDP message sent to 192.168.2.255 from port 55570 +[87273161] sent TimeStamp to 192.168.2.83:36873 +[87274044] sent TimeStamp to 192.168.2.83:44351 +[88030452] sent TimeStamp to 192.168.2.99:49207 +[88154127] UDP message sent to 192.168.2.255 from port 55570 +[88439902] sent TimeStamp to 192.168.2.84:52171 +[88441325] sent TimeStamp to 192.168.2.84:33279 +[88442362] sent TimeStamp to 192.168.2.84:46167 +[89153879] UDP message sent to 192.168.2.255 from port 55570 +[89564259] sent TimeStamp to 192.168.2.99:49207 +[90153250] UDP message sent to 192.168.2.255 from port 55570 +[91100952] sent TimeStamp to 192.168.2.99:49207 +[91157450] UDP message sent to 192.168.2.255 from port 55570 +[91273593] sent TimeStamp to 192.168.2.83:51993 +[92157743] UDP message sent to 192.168.2.255 from port 55570 +[92272712] sent TimeStamp to 192.168.2.83:36873 +[92273485] sent TimeStamp to 192.168.2.83:44351 +[92532948] sent TimeStamp to 192.168.2.99:49207 +[93161474] UDP message sent to 192.168.2.255 from port 55570 +[93370870] sent TimeStamp to 192.168.2.84:33279 +[93372541] sent TimeStamp to 192.168.2.84:46167 +[93373762] sent TimeStamp to 192.168.2.84:52171 +[94068531] sent TimeStamp to 192.168.2.99:49207 +[94161903] UDP message sent to 192.168.2.255 from port 55570 +[95162611] UDP message sent to 192.168.2.255 from port 55570 +[95690154] sent TimeStamp to 192.168.2.99:49207 +[96165023] UDP message sent to 192.168.2.255 from port 55570 +[96279544] sent TimeStamp to 192.168.2.83:51993 +[97037651] sent TimeStamp to 192.168.2.99:49207 +[97165376] UDP message sent to 192.168.2.255 from port 55570 +[97273823] sent TimeStamp to 192.168.2.83:36873 +[97275127] sent TimeStamp to 192.168.2.83:44351 +[98165587] UDP message sent to 192.168.2.255 from port 55570 +[98369012] sent TimeStamp to 192.168.2.84:52171 +[98370527] sent TimeStamp to 192.168.2.84:46167 +[98371776] sent TimeStamp to 192.168.2.84:33279 +[98509434] sent TimeStamp to 192.168.2.99:49207 +[99165270] UDP message sent to 192.168.2.255 from port 55570 +[100111347] sent TimeStamp to 192.168.2.99:49207 +[100169962] UDP message sent to 192.168.2.255 from port 55570 +[101173035] UDP message sent to 192.168.2.255 from port 55570 +[101275705] sent TimeStamp to 192.168.2.83:51993 +[101542951] sent TimeStamp to 192.168.2.99:49207 +[102172300] UDP message sent to 192.168.2.255 from port 55570 +[102275220] sent TimeStamp to 192.168.2.83:36873 +[102276314] sent TimeStamp to 192.168.2.83:44351 +[103081881] sent TimeStamp to 192.168.2.99:49207 +[103172343] UDP message sent to 192.168.2.255 from port 55570 +[103366969] sent TimeStamp to 192.168.2.84:52171 +[103376054] sent TimeStamp to 192.168.2.84:46167 +[103377471] sent TimeStamp to 192.168.2.84:33279 +[104172057] UDP message sent to 192.168.2.255 from port 55570 +[104615625] sent TimeStamp to 192.168.2.99:49207 +[105175820] UDP message sent to 192.168.2.255 from port 55570 +[106051294] sent TimeStamp to 192.168.2.99:49207 +[106179992] UDP message sent to 192.168.2.255 from port 55570 +[106275173] sent TimeStamp to 192.168.2.83:51993 +[107182777] UDP message sent to 192.168.2.255 from port 55570 +[107280481] sent TimeStamp to 192.168.2.83:36873 +[107282095] sent TimeStamp to 192.168.2.83:44351 +[107592581] sent TimeStamp to 192.168.2.99:49207 +[108182560] UDP message sent to 192.168.2.255 from port 55570 +[108369299] sent TimeStamp to 192.168.2.84:33279 +[108370267] sent TimeStamp to 192.168.2.84:46167 +[108370927] sent TimeStamp to 192.168.2.84:52171 +[109123758] sent TimeStamp to 192.168.2.99:49207 +[109183158] UDP message sent to 192.168.2.255 from port 55570 +[110183595] UDP message sent to 192.168.2.255 from port 55570 +[110518417] sent TimeStamp to 192.168.2.99:49207 +[111184657] UDP message sent to 192.168.2.255 from port 55570 +[111276297] sent TimeStamp to 192.168.2.83:51993 +[112091286] sent TimeStamp to 192.168.2.99:49207 +[112189040] UDP message sent to 192.168.2.255 from port 55570 +[112283459] sent TimeStamp to 192.168.2.83:36873 +[112284823] sent TimeStamp to 192.168.2.83:44351 +[113189633] UDP message sent to 192.168.2.255 from port 55570 +[113370557] sent TimeStamp to 192.168.2.84:52171 +[113372027] sent TimeStamp to 192.168.2.84:46167 +[113373310] sent TimeStamp to 192.168.2.84:33279 +[113500539] sent TimeStamp to 192.168.2.99:49207 +[114190385] UDP message sent to 192.168.2.255 from port 55570 +[115062647] sent TimeStamp to 192.168.2.99:49207 +[115190688] UDP message sent to 192.168.2.255 from port 55570 +[116191657] UDP message sent to 192.168.2.255 from port 55570 +[116276047] sent TimeStamp to 192.168.2.83:51993 +[116596824] sent TimeStamp to 192.168.2.99:49207 +[117192350] UDP message sent to 192.168.2.255 from port 55570 +[117275111] sent TimeStamp to 192.168.2.83:44351 +[117276899] sent TimeStamp to 192.168.2.83:36873 +[118134425] sent TimeStamp to 192.168.2.99:49207 +[118196299] UDP message sent to 192.168.2.255 from port 55570 +[118369611] sent TimeStamp to 192.168.2.84:46167 +[118371043] sent TimeStamp to 192.168.2.84:52171 +[118372047] sent TimeStamp to 192.168.2.84:33279 +[119196014] UDP message sent to 192.168.2.255 from port 55570 +[119572923] sent TimeStamp to 192.168.2.99:49207 +[120197076] UDP message sent to 192.168.2.255 from port 55570 +[121005814] sent TimeStamp to 192.168.2.99:49207 +[121197928] UDP message sent to 192.168.2.255 from port 55570 +[121275770] sent TimeStamp to 192.168.2.83:51993 +[122198270] UDP message sent to 192.168.2.255 from port 55570 +[122276225] sent TimeStamp to 192.168.2.83:36873 +[122277333] sent TimeStamp to 192.168.2.83:44351 +[122507585] sent TimeStamp to 192.168.2.99:49207 +[123199485] UDP message sent to 192.168.2.255 from port 55570 +[123368124] sent TimeStamp to 192.168.2.84:52171 +[123369396] sent TimeStamp to 192.168.2.84:33279 +[123370192] sent TimeStamp to 192.168.2.84:46167 +[124073626] sent TimeStamp to 192.168.2.99:49207 +[124200615] UDP message sent to 192.168.2.255 from port 55570 +[125202533] UDP message sent to 192.168.2.255 from port 55570 +[125609623] sent TimeStamp to 192.168.2.99:49207 +[126203353] UDP message sent to 192.168.2.255 from port 55570 +[126275779] sent TimeStamp to 192.168.2.83:51993 +[127040730] sent TimeStamp to 192.168.2.99:49207 +[127204024] UDP message sent to 192.168.2.255 from port 55570 +[127274792] sent TimeStamp to 192.168.2.83:36873 +[127276153] sent TimeStamp to 192.168.2.83:44351 +[128206206] UDP message sent to 192.168.2.255 from port 55570 +[128372269] sent TimeStamp to 192.168.2.84:52171 +[128373336] sent TimeStamp to 192.168.2.84:33279 +[128374119] sent TimeStamp to 192.168.2.84:46167 +[128512696] sent TimeStamp to 192.168.2.99:49207 +[129208098] UDP message sent to 192.168.2.255 from port 55570 +[130117666] sent TimeStamp to 192.168.2.99:49207 +[130209704] UDP message sent to 192.168.2.255 from port 55570 +[131210040] UDP message sent to 192.168.2.255 from port 55570 +[131275852] sent TimeStamp to 192.168.2.83:51993 +[131558241] sent TimeStamp to 192.168.2.99:49207 +[132212093] UDP message sent to 192.168.2.255 from port 55570 +[132275768] sent TimeStamp to 192.168.2.83:36873 +[132276669] sent TimeStamp to 192.168.2.83:44351 diff --git a/network/NetworkDevice.ts b/network/NetworkDevice.ts deleted file mode 100644 index 461bec6..0000000 --- a/network/NetworkDevice.ts +++ /dev/null @@ -1,340 +0,0 @@ -/* -import { Logger } from '../LogEmitter'; -import { ReadContext } from '../utils/ReadContext'; -import { ServicePorts, ConnectionInfo, LISTEN_TIMEOUT, MessageId, Tokens } from '../types'; -import { sleep } from '../utils/sleep'; -import { strict as assert } from 'assert'; -import { WriteContext } from '../utils/WriteContext'; -import * as FileType from 'file-type'; -import * as fs from 'fs'; -import * as services from '../services'; -import * as tcp from '../utils/tcp'; -import { Server, Socket, AddressInfo } from 'net'; -import { PromiseSocket } from 'promise-socket'; -import Database = require('better-sqlite3'); - - - -interface SourceAndTrackPath { - source: string; - trackPath: string; -} - -export class NetworkDevice { - public listenPort:number = 0; - private connection: tcp.Connection = null; - //private source: string = null; - private serviceRequestAllowed = false; - private servicePorts: ServicePorts = {}; - private services: Record> = {}; - private timeAlive: number = 0; - private connectedSources: { - [key: string]: { - db: Database.Database; - albumArt: { - path: string; - extensions: { - [key: string]: string; - }; - }; - }; - } = {}; - - private connectionInfo: ConnectionInfo; - - constructor(info: ConnectionInfo) { - this.connectionInfo = info; - this.listen(); - - } - - private get address() { - return this.connectionInfo.address; - } - - private get port() { - return this.connectionInfo.port; - } - - /////////////////////////////////////////////////////////////////////////// - // Connect / Disconnect - - async listen(): Promise { - const server = new Server - server.listen(); - - server.on('listening',() => { - const { port } = server.address() as AddressInfo; - this.listenPort = port; - Logger.warn(`server listening on port ${port}`); - }) - - server.on('error', err =>{ - //throw new error err - throw new Error(`Server Error ${err}`); - }); - server.on('connection', socket =>{ - const promiseSocket = new PromiseSocket(socket); - //promiseSocket. - this.connection = promiseSocket; - socket.on('data', (p_message: Buffer) => { - this.messageHandler(p_message); - - }); - }); - - //const { port } = server.address() as AddressInfo; - //this.listenPort = port; - - - } - - async connect(): Promise { - const info = this.connectionInfo; - Logger.debug(`Attempting to connect to ${info.address}:${info.port}`) - this.connection = await tcp.connect(info.address, info.port); - this.connection.socket.on('data', (p_message: Buffer) => { - this.messageHandler(p_message); - }); - await this.requestAllServicePorts(); - } - - disconnect(): void { - // Disconnect all services - for (const [key, service] of Object.entries(this.services)) { - service.disconnect(); - this.services[key] = null; - } - - assert(this.connection); - this.connection.destroy(); - this.connection = null; - } - - /////////////////////////////////////////////////////////////////////////// - // Message Handler - - messageHandler(p_message: Buffer): void { - const ctx = new ReadContext(p_message.buffer, false); - while (ctx.isEOF() === false) { - const id = ctx.readUInt32(); - // const deviceToken = ctx.read(16); - ctx.seek(16); - switch (id) { - case MessageId.TimeStamp: - ctx.seek(16); - // const secondToken = ctx.read(16); // should be 00.. - // we _shouldn't_ be receiving anything but blank tokens in the 2nd field - // assert(secondToken.every((x) => x === 0)); - - // Time Alive is in nanoseconds; convert back to seconds - this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); - // this.sendTimeStampMsg(deviceToken, Tokens.SoundSwitch); - break; - case MessageId.ServicesAnnouncement: - const service = ctx.readNetworkStringUTF16(); - const port = ctx.readUInt16(); - this.servicePorts[service] = port; - break; - case MessageId.ServicesRequest: - this.serviceRequestAllowed = true; - break; - default: - assert.fail(`NetworkDevice Unhandled message id '${id}'`); - } - } - } - - /////////////////////////////////////////////////////////////////////////// - // Public methods - - getPort(): number { - return this.port; - } - getTimeAlive(): number { - return this.timeAlive; - } - - // Factory function - async connectToService>(ctor: { - new (p_address: string, p_port: number, p_controller: NetworkDevice): T; - }): Promise { - assert(this.connection); - // FIXME: find out why we need these waits before connecting to a service - await sleep(500); - - const serviceName = ctor.name; - - if (this.services[serviceName]) { - return this.services[serviceName] as T; - } - - assert(this.servicePorts.hasOwnProperty(serviceName)); - assert(this.servicePorts[serviceName] > 0); - const port = this.servicePorts[serviceName]; - - const service = new ctor(this.address, port, this); - - await service.connect(); - this.services[serviceName] = service; - return service; - } - - // TODO: Refactor this out of here. - async addSource(p_sourceName: string, p_localDbPath: string, p_localAlbumArtPath: string) { - if (this.connectedSources[p_sourceName]) { - return; - } - const db = new Database(p_localDbPath); - - // Get all album art extensions - const stmt = db.prepare('SELECT * FROM AlbumArt WHERE albumArt NOT NULL'); - const result = stmt.all(); - const albumArtExtensions: Record = {}; - for (const entry of result) { - const filetype = await FileType.fromBuffer(entry.albumArt); - albumArtExtensions[entry.id] = filetype ? filetype.ext : null; - } - - this.connectedSources[p_sourceName] = { - db: db, - albumArt: { - path: p_localAlbumArtPath, - extensions: albumArtExtensions, - }, - }; - } - - // TODO: Refactor this out of here. - async dumpAlbumArt(p_sourceName: string) { - if (!this.connectedSources[p_sourceName]) { - assert.fail(`Source '${p_sourceName}' not connected`); - return; - } - const path = this.connectedSources[p_sourceName].albumArt.path; - if (fs.existsSync(path) === false) { - fs.mkdirSync(path, { recursive: true }); - } - - const result = await this.querySource(p_sourceName, 'SELECT * FROM AlbumArt WHERE albumArt NOT NULL'); - for (const entry of result) { - const filetype = await FileType.fromBuffer(entry.albumArt); - const ext = filetype ? '.' + filetype.ext : ''; - const filepath = `${path}/${entry.id}${ext}`; - fs.writeFileSync(filepath, entry.albumArt); - } - Logger.info(`dumped ${result.length} albums arts in '${path}'`); - } - - // Database helpers - - querySource(p_sourceName: string, p_query: string, ...p_params: any[]): any[] { - if (!this.connectedSources[p_sourceName]) { - //assert.fail(`Source '${p_sourceName}' not connected`); - return []; - } - const db = this.connectedSources[p_sourceName].db; - const stmt = db.prepare(p_query); - - return stmt.all(p_params); - } - - getAlbumArtPath(p_networkPath: string): string { - const result = this.getSourceAndTrackFromNetworkPath(p_networkPath); - if (!result) { - return null; - } - - const sql = 'SELECT * FROM Track WHERE path = ?'; - const dbResult = this.querySource(result.source, sql, result.trackPath); - if (dbResult.length === 0) { - return null; - } - - assert(dbResult.length === 1); // there can only be one path - const id = dbResult[0].idAlbumArt; - const ext = this.connectedSources[result.source].albumArt.extensions[id]; - if (!ext) { - return null; - } - - return `${this.connectedSources[result.source].albumArt.path}${id}.${ext}`; - } - - /////////////////////////////////////////////////////////////////////////// - // Private methods - - private getSourceAndTrackFromNetworkPath(p_path: string): SourceAndTrackPath { - if (!p_path || p_path.length === 0) { - return null; - } - - const parts = p_path.split('/'); - //assert(parts.length > ) - assert(parts[0] === 'net:'); - assert(parts[1] === ''); - assert(parts[2].length === 36); - const source = parts[3]; - let trackPath = parts.slice(5).join('/'); - if (parts[4] !== 'Engine Library') { - // This probably occurs with RekordBox conversions; tracks are outside Engine Library folder - trackPath = `../${parts[4]}/${trackPath}`; - } - return { - source: source, - trackPath: trackPath, - }; - } - - private async requestAllServicePorts(): Promise { - assert(this.connection); - - return new Promise(async (resolve, reject) => { - setTimeout(() => { - reject(new Error(`Failed to requestServices for ` + - `${this.connectionInfo.source} ` + - `${this.connectionInfo.address}:${this.connectionInfo.port}`)); - }, LISTEN_TIMEOUT); - - // Wait for serviceRequestAllowed - while (true) { - if (this.serviceRequestAllowed) { - break; - } - await sleep(250); - } - - // FIXME: Refactor into message writer helper class - const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(Tokens.SoundSwitch); - const written = await this.connection.write(ctx.getBuffer()); - assert(written === ctx.tell()); - - while (true) { - // FIXME: How to determine when all services have been announced? - if (Object.keys(this.servicePorts).length > 3) { - Logger.debug(`Discovered the following services on ${this.address}:${this.port}`); - for (const [name, port] of Object.entries(this.servicePorts)) { - Logger.debug(`\tport: ${port} => ${name}`); - } - resolve(); - break; - } - await sleep(250); - } - }); - } - */ - - // private async sendTimeStampMsg(deviceToken: Uint8Array, userToken: Uint8Array, timeAlive?: bigint) { - // const ctx = new WriteContext(); - // ctx.writeUInt32(MessageId.TimeStamp); - // ctx.write(deviceToken); - // ctx.write(userToken); - // const timeAliveNumber:bigint = (!!timeAlive) ? timeAlive : 0n; - // ctx.writeUInt64(timeAliveNumber); - // const written = await this.connection.write(ctx.getBuffer()); - // assert(written === ctx.tell()); - // } -//} diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 8fe43ae..6690dc0 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -32,6 +32,7 @@ enum MessageId { FileTransferId = 0x4, FileTransferChunk = 0x5, Unknown0 = 0x8, + DeviceShutdown = 0x9, } interface FileTransferProgress { @@ -194,6 +195,20 @@ export class FileTransfer extends Service { }; } + case MessageId.DeviceShutdown: { + Logger.debug('shutdown msg length', p_ctx.sizeLeft()); + if (p_ctx.sizeLeft() > 0) { + const msg = p_ctx.readRemainingAsNewBuffer().toString('hex'); + Logger.debug(msg) + } + + return { + id: messageId, + socket: socket, + message: null, + }; + } + default: { assert.fail(`File Transfer Unhandled message id '${messageId}'`); diff --git a/types/index.ts b/types/index.ts index 3de9905..506488a 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,6 +1,7 @@ import { Socket } from 'net'; import { DiscoveryMessageOptions } from '../network'; + export * from './common'; export * from './player'; export * from './tokens'; @@ -52,7 +53,7 @@ export type IpAddressPort = string; export enum Services { - //StateMap = "StateMap", + StateMap = "StateMap", FileTransfer = "FileTransfer", Directory = "DirectoryService", } From 8c96ec7e507d82cc2e9abc2c26b66805a0a4c238 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 11 Oct 2022 15:33:17 -0400 Subject: [PATCH 016/146] Small timestamp fix --- .gitignore | 4 + StageLinq/index.ts | 4 +- log.txt | 499 ---------------------- package-lock.json | 956 +----------------------------------------- services/Directory.ts | 22 +- 5 files changed, 29 insertions(+), 1456 deletions(-) delete mode 100644 log.txt diff --git a/.gitignore b/.gitignore index e86812f..b016af9 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,7 @@ typings/ .tern-port scratch.ts log.txt +log.txt +.vscode/settings.json +version +log.txt diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 589c33a..cb935a0 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -2,7 +2,7 @@ import { announce, createDiscoveryMessage, StageLinqListener, unannounce } from import { EventEmitter } from 'events'; import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; -import { Action, ActingAsDevice, StageLinqOptions, deviceIdFromBuff, DeviceId } from '../types'; +import { Action, ActingAsDevice, StageLinqOptions, DeviceId } from '../types'; //import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -44,7 +44,7 @@ export class StageLinq extends EventEmitter { this.devices._peers[connectionInfo.address] = deviceId; if (!this.devices.peers.has(deviceId.toString()) || this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port) { - this.devices.peers.set(deviceIdFromBuff(connectionInfo.token), connectionInfo); + this.devices.peers.set(deviceId.toString(), connectionInfo); } }); } diff --git a/log.txt b/log.txt deleted file mode 100644 index b6021e4..0000000 --- a/log.txt +++ /dev/null @@ -1,499 +0,0 @@ -[44] [BEGIN] - -[4933] opened StateMap server on 60454 -[6884] opened FileTransfer server on 60455 -[7604] opened Directory server on 60456 -[12354] UDP message sent to 192.168.2.255 from port 55570 -[13543] Announced myself on 60456 -[81054] [Directory] connection from 192.168.2.84:46167 -[82136] [Directory] connection from 192.168.2.84:52171 -[82656] [Directory] connection from 192.168.2.84:33279 -[84011] [Directory] sent ServiceAnnouncement to 192.168.2.84:46167 -[84802] [Directory] sent ServiceAnnouncement to 192.168.2.84:52171 -[85359] [Directory] sent ServiceAnnouncement to 192.168.2.84:33279 -[87021] [Directory] connection from 192.168.2.99:49207 -[87579] [Directory] connection from 192.168.2.83:44351 -[88044] [Directory] connection from 192.168.2.83:36873 -[88466] [Directory] connection from 192.168.2.83:51993 -[89158] [Directory] sent ServiceAnnouncement to 192.168.2.99:49207 -[89695] [Directory] sent ServiceAnnouncement to 192.168.2.83:44351 -[90205] [Directory] sent ServiceAnnouncement to 192.168.2.83:36873 -[90702] [Directory] sent ServiceAnnouncement to 192.168.2.83:51993 -[100015] [FileTransfer] connection from 192.168.2.84:33259 -[100750] ServicesAnnouncement to FileTransfer from 82b44917-28c1-498e-9bb8-acf9e8d0fdb6 -[101160] TimeCode to FileTransfer from 82b44917-28c1-498e-9bb8-acf9e8d0fdb6 -[105491] [FileTransfer] connection from 192.168.2.84:57023 -[105974] [FileTransfer] connection from 192.168.2.84:33477 -[106428] [StateMap] connection from 192.168.2.84:37641 -[106930] ServicesAnnouncement to FileTransfer from 07faa3e3-bd0b-4888-845e-b0d5c37e6483 -[107219] TimeCode to FileTransfer from 07faa3e3-bd0b-4888-845e-b0d5c37e6483 -[107657] [StateMap] connection from 192.168.2.83:51905 -[108154] ServicesAnnouncement to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[108437] TimeCode to FileTransfer from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[108752] requesting sources from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[109523] [FileTransfer] connection from 192.168.2.83:36811 -[109937] [FileTransfer] connection from 192.168.2.83:56369 -[110415] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[110731] ServicesAnnouncement to StateMap from 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[111097] Sending Statemap subscriptions to 192.168.2.84:37641 1e6c417a-b674-4c87-b4aa-fb7ad2298976 -[115512] [StateMap] connection from 192.168.2.99:49208 -[116148] [FileTransfer] connection from 192.168.2.83:57341 -[116620] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[116910] ServicesAnnouncement to StateMap from 4be14112-5ead-4848-a07d-b37ca8a7220e -[117218] Sending Statemap subscriptions to 192.168.2.83:51905 4be14112-5ead-4848-a07d-b37ca8a7220e -[120925] ServicesAnnouncement to FileTransfer from 94be47d0-8232-4cbf-934a-73255a403965 -[121267] TimeCode to FileTransfer from 94be47d0-8232-4cbf-934a-73255a403965 -[121749] ServicesAnnouncement to FileTransfer from f9d4390e-2500-469d-9e0a-d6a1de595e8c -[122231] TimeCode to FileTransfer from f9d4390e-2500-469d-9e0a-d6a1de595e8c -[123512] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f -[123810] ServicesAnnouncement to StateMap from 00000000-0000-0000-8000-00059501ab6f -[124178] Sending Statemap subscriptions to 192.168.2.99:49208 00000000-0000-0000-8000-00059501ab6f -[127098] ServicesAnnouncement to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[127396] TimeCode to FileTransfer from 4be14112-5ead-4848-a07d-b37ca8a7220e -[127715] requesting sources from 4be14112-5ead-4848-a07d-b37ca8a7220e -[128985] 192.168.2.83:51905 /Client/Preferences/Player => {"string":"1","type":4} -[129352] 192.168.2.83:51905 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[129677] 192.168.2.83:51905 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[130006] 192.168.2.83:51905 /Engine/Master/MasterTempo => {"type":0,"value":122.00059509277344} -[130317] 192.168.2.83:51905 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[132932] 192.168.2.84:37641 /Client/Preferences/Player => {"string":"2","type":4} -[133487] 192.168.2.83:51905 /Engine/Deck1/Play => {"state":false,"type":1} -[133801] 192.168.2.83:51905 /Engine/Deck1/PlayState => {"state":false,"type":1} -[134113] 192.168.2.83:51905 /Engine/Deck1/Track/ArtistName => {"string":"Goom Gum","type":8} -[134458] 192.168.2.83:51905 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Goom Gum/Aposch/15921162_Aposch_(Original Mix).mp3","type":8} -[134764] 192.168.2.83:51905 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[135088] 192.168.2.83:51905 /Engine/Deck1/Track/SongName => {"string":"Aposch (Original Mix)","type":8} -[135399] 192.168.2.83:51905 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[135734] 192.168.2.83:51905 /Engine/Deck1/Track/TrackName => {"string":"/media/HONUSZ/Contents/Goom Gum/Aposch/15921162_Aposch_(Original Mix).mp3","type":8} -[136451] 192.168.2.84:37641 /Client/Preferences/PlayerJogColorA => {"color":"#ff2b84ef","type":16} -[136775] 192.168.2.84:37641 /Client/Preferences/PlayerJogColorB => {"color":"#ff02c63e","type":16} -[137094] 192.168.2.84:37641 /Engine/Master/MasterTempo => {"type":0,"value":122} -[137414] 192.168.2.84:37641 /Engine/Sync/Network/MasterStatus => {"state":false,"type":1} -[137720] 192.168.2.84:37641 /Engine/Deck1/Play => {"state":false,"type":1} -[138033] 192.168.2.84:37641 /Engine/Deck1/PlayState => {"state":false,"type":1} -[138344] 192.168.2.84:37641 /Engine/Deck1/Track/ArtistName => {"string":"Space Food","type":8} -[138692] 192.168.2.84:37641 /Engine/Deck1/Track/TrackNetworkPath => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} -[139024] 192.168.2.84:37641 /Engine/Deck1/Track/SongLoaded => {"state":true,"type":1} -[139823] 192.168.2.84:37641 /Engine/Deck1/Track/SongName => {"string":"Dark Force (Original Mix)","type":8} -[140143] 192.168.2.84:37641 /Engine/Deck1/Track/TrackData => {"state":true,"type":3} -[140492] 192.168.2.84:37641 /Engine/Deck1/Track/TrackName => {"string":"net://4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3","type":8} -[140803] 192.168.2.84:37641 /Engine/Deck1/CurrentBPM => {"type":0,"value":122} -[141122] 192.168.2.84:37641 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[141432] 192.168.2.84:37641 /Engine/Deck2/Play => {"state":false,"type":1} -[141736] 192.168.2.84:37641 /Engine/Deck2/PlayState => {"state":false,"type":1} -[142047] 192.168.2.84:37641 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[142358] 192.168.2.84:37641 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[142899] 192.168.2.83:51905 /Engine/Deck1/CurrentBPM => {"type":0,"value":120} -[143215] 192.168.2.83:51905 /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0} -[143549] 192.168.2.83:51905 /Engine/Deck2/Play => {"state":false,"type":1} -[143864] 192.168.2.83:51905 /Engine/Deck2/PlayState => {"state":false,"type":1} -[144175] 192.168.2.83:51905 /Engine/Deck2/Track/ArtistName => {"string":"","type":8} -[144495] 192.168.2.83:51905 /Engine/Deck2/Track/TrackNetworkPath => {"string":"","type":8} -[144803] 192.168.2.83:51905 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[145118] 192.168.2.83:51905 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[145431] 192.168.2.83:51905 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[145861] 192.168.2.83:51905 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[146284] 192.168.2.83:51905 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[146604] 192.168.2.83:51905 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[147179] getting sources for 4be14112-5ead-4848-a07d-b37ca8a7220e -[148284] 192.168.2.99:49208 /Mixer/CH1faderPosition => {"type":0,"value":1.27} -[148617] 192.168.2.99:49208 /Mixer/ChannelAssignment1 => {"string":",1","type":8} -[148961] 192.168.2.99:49208 /Mixer/ChannelAssignment2 => {"string":",1","type":8} -[149284] 192.168.2.99:49208 /Mixer/ChannelAssignment3 => {"string":",1","type":8} -[149604] 192.168.2.99:49208 /Mixer/ChannelAssignment4 => {"string":",1","type":8} -[149925] 192.168.2.99:49208 /Mixer/CrossfaderPosition => {"type":0,"value":0.84} -[150263] 192.168.2.99:49208 /Mixer/CH2faderPosition => {"type":0,"value":1.27} -[151299] 192.168.2.84:37641 /Engine/Deck2/Track/SongLoaded => {"state":false,"type":1} -[151620] 192.168.2.84:37641 /Engine/Deck2/Track/SongName => {"string":"","type":8} -[151937] 192.168.2.84:37641 /Engine/Deck2/Track/TrackData => {"state":false,"type":3} -[152412] 192.168.2.84:37641 /Engine/Deck2/Track/TrackName => {"string":"","type":8} -[153231] 192.168.2.84:37641 /Engine/Deck2/CurrentBPM => {"type":0,"value":120} -[153555] 192.168.2.84:37641 /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0} -[662625] downloadDb request for 4be14112-5ead-4848-a07d-b37ca8a7220e -[669626] Reading database 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) -[686001] dbProgress 4be14112-5ead-4848-a07d-b37ca8a7220e 270336 0 0 -[687354] Reading /HONUSZ (USB 1)/Engine Library/Database2/m.db progressComplete=0% 0/270336 -[890691] Download complete. -[891810] Signaling transfer complete. -[893358] Saving 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[896499] Downloaded 4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1) to /var/folders/zk/cdxdvt1j13311r5t6_d9vpbc0000gn/T/localdb/4be14112-5ead-4848-a07d-b37ca8a7220e/HONUSZ (USB 1)/m.db -[990248] sent TimeStamp to 192.168.2.99:49207 -[1021572] UDP message sent to 192.168.2.255 from port 55570 -[1276553] sent TimeStamp to 192.168.2.83:51993 -[2024180] UDP message sent to 192.168.2.255 from port 55570 -[2279186] sent TimeStamp to 192.168.2.83:44351 -[2280749] sent TimeStamp to 192.168.2.83:36873 -[2495796] sent TimeStamp to 192.168.2.99:49207 -[3025441] UDP message sent to 192.168.2.255 from port 55570 -[3033758] 192.168.2.83:51905 /Engine/Deck1/PlayState => {"state":false,"type":1} -[3443500] sent TimeStamp to 192.168.2.84:52171 -[3444222] sent TimeStamp to 192.168.2.84:33279 -[3444715] sent TimeStamp to 192.168.2.84:46167 -[4034072] UDP message sent to 192.168.2.255 from port 55570 -[4047388] sent TimeStamp to 192.168.2.99:49207 -[5034563] UDP message sent to 192.168.2.255 from port 55570 -[5499160] sent TimeStamp to 192.168.2.99:49207 -[6035889] UDP message sent to 192.168.2.255 from port 55570 -[6275416] sent TimeStamp to 192.168.2.83:51993 -[6996568] sent TimeStamp to 192.168.2.99:49207 -[7039091] UDP message sent to 192.168.2.255 from port 55570 -[7333793] sent TimeStamp to 192.168.2.83:36873 -[7335111] sent TimeStamp to 192.168.2.83:44351 -[8040044] UDP message sent to 192.168.2.255 from port 55570 -[8459603] sent TimeStamp to 192.168.2.84:52171 -[8461027] sent TimeStamp to 192.168.2.84:33279 -[8462002] sent TimeStamp to 192.168.2.84:46167 -[8498144] sent TimeStamp to 192.168.2.99:49207 -[9041241] UDP message sent to 192.168.2.255 from port 55570 -[10045242] UDP message sent to 192.168.2.255 from port 55570 -[10058376] sent TimeStamp to 192.168.2.99:49207 -[11044195] UDP message sent to 192.168.2.255 from port 55570 -[11328556] sent TimeStamp to 192.168.2.83:51993 -[11499504] sent TimeStamp to 192.168.2.99:49207 -[12047169] UDP message sent to 192.168.2.255 from port 55570 -[12354856] sent TimeStamp to 192.168.2.83:36873 -[12356429] sent TimeStamp to 192.168.2.83:44351 -[12998649] sent TimeStamp to 192.168.2.99:49207 -[13050990] UDP message sent to 192.168.2.255 from port 55570 -[13477994] sent TimeStamp to 192.168.2.84:33279 -[13479402] sent TimeStamp to 192.168.2.84:46167 -[13480471] sent TimeStamp to 192.168.2.84:52171 -[14049512] UDP message sent to 192.168.2.255 from port 55570 -[14501242] sent TimeStamp to 192.168.2.99:49207 -[15053459] UDP message sent to 192.168.2.255 from port 55570 -[16004242] sent TimeStamp to 192.168.2.99:49207 -[16052890] UDP message sent to 192.168.2.255 from port 55570 -[16348849] sent TimeStamp to 192.168.2.83:51993 -[17052065] UDP message sent to 192.168.2.255 from port 55570 -[17276308] sent TimeStamp to 192.168.2.83:36873 -[17277213] sent TimeStamp to 192.168.2.83:44351 -[17593541] sent TimeStamp to 192.168.2.99:49207 -[18052921] UDP message sent to 192.168.2.255 from port 55570 -[18415141] sent TimeStamp to 192.168.2.84:52171 -[18416616] sent TimeStamp to 192.168.2.84:33279 -[18417559] sent TimeStamp to 192.168.2.84:46167 -[19055579] UDP message sent to 192.168.2.255 from port 55570 -[19117691] sent TimeStamp to 192.168.2.99:49207 -[20057840] UDP message sent to 192.168.2.255 from port 55570 -[20507577] sent TimeStamp to 192.168.2.99:49207 -[21059682] UDP message sent to 192.168.2.255 from port 55570 -[21275560] sent TimeStamp to 192.168.2.83:51993 -[22060582] UDP message sent to 192.168.2.255 from port 55570 -[22070285] sent TimeStamp to 192.168.2.99:49207 -[22276785] sent TimeStamp to 192.168.2.83:36873 -[22278428] sent TimeStamp to 192.168.2.83:44351 -[23060164] UDP message sent to 192.168.2.255 from port 55570 -[23370543] sent TimeStamp to 192.168.2.84:52171 -[23372058] sent TimeStamp to 192.168.2.84:33279 -[23372838] sent TimeStamp to 192.168.2.84:46167 -[23785478] sent TimeStamp to 192.168.2.99:49207 -[24062134] UDP message sent to 192.168.2.255 from port 55570 -[25050290] sent TimeStamp to 192.168.2.99:49207 -[25063253] UDP message sent to 192.168.2.255 from port 55570 -[26067330] UDP message sent to 192.168.2.255 from port 55570 -[26279792] sent TimeStamp to 192.168.2.83:51993 -[26512812] sent TimeStamp to 192.168.2.99:49207 -[27066911] UDP message sent to 192.168.2.255 from port 55570 -[27277928] sent TimeStamp to 192.168.2.83:36873 -[27279057] sent TimeStamp to 192.168.2.83:44351 -[28068432] UDP message sent to 192.168.2.255 from port 55570 -[28079756] sent TimeStamp to 192.168.2.99:49207 -[28374585] sent TimeStamp to 192.168.2.84:46167 -[28375565] sent TimeStamp to 192.168.2.84:52171 -[28376327] sent TimeStamp to 192.168.2.84:33279 -[29069427] UDP message sent to 192.168.2.255 from port 55570 -[29555164] sent TimeStamp to 192.168.2.99:49207 -[30070316] UDP message sent to 192.168.2.255 from port 55570 -[31073705] UDP message sent to 192.168.2.255 from port 55570 -[31085036] sent TimeStamp to 192.168.2.99:49207 -[31278370] sent TimeStamp to 192.168.2.83:51993 -[32075431] UDP message sent to 192.168.2.255 from port 55570 -[32277214] sent TimeStamp to 192.168.2.83:36873 -[32278807] sent TimeStamp to 192.168.2.83:44351 -[32525578] sent TimeStamp to 192.168.2.99:49207 -[33076604] UDP message sent to 192.168.2.255 from port 55570 -[33448103] sent TimeStamp to 192.168.2.84:46167 -[33449063] sent TimeStamp to 192.168.2.84:52171 -[33449730] sent TimeStamp to 192.168.2.84:33279 -[34063002] sent TimeStamp to 192.168.2.99:49207 -[34076245] UDP message sent to 192.168.2.255 from port 55570 -[35078058] UDP message sent to 192.168.2.255 from port 55570 -[35675114] sent TimeStamp to 192.168.2.99:49207 -[36080867] UDP message sent to 192.168.2.255 from port 55570 -[36277314] sent TimeStamp to 192.168.2.83:51993 -[37029902] sent TimeStamp to 192.168.2.99:49207 -[37081758] UDP message sent to 192.168.2.255 from port 55570 -[37277637] sent TimeStamp to 192.168.2.83:44351 -[37279023] sent TimeStamp to 192.168.2.83:36873 -[38083479] UDP message sent to 192.168.2.255 from port 55570 -[38372068] sent TimeStamp to 192.168.2.84:46167 -[38373702] sent TimeStamp to 192.168.2.84:33279 -[38376722] sent TimeStamp to 192.168.2.84:52171 -[38494797] sent TimeStamp to 192.168.2.99:49207 -[39083407] UDP message sent to 192.168.2.255 from port 55570 -[40083911] UDP message sent to 192.168.2.255 from port 55570 -[40099549] sent TimeStamp to 192.168.2.99:49207 -[41089080] UDP message sent to 192.168.2.255 from port 55570 -[41278759] sent TimeStamp to 192.168.2.83:51993 -[41538222] sent TimeStamp to 192.168.2.99:49207 -[42088939] UDP message sent to 192.168.2.255 from port 55570 -[42277600] sent TimeStamp to 192.168.2.83:44351 -[42279533] sent TimeStamp to 192.168.2.83:36873 -[43073556] sent TimeStamp to 192.168.2.99:49207 -[43090058] UDP message sent to 192.168.2.255 from port 55570 -[43479829] sent TimeStamp to 192.168.2.84:46167 -[43481050] sent TimeStamp to 192.168.2.84:52171 -[43482174] sent TimeStamp to 192.168.2.84:33279 -[44089920] UDP message sent to 192.168.2.255 from port 55570 -[44611253] sent TimeStamp to 192.168.2.99:49207 -[45092346] UDP message sent to 192.168.2.255 from port 55570 -[46045224] sent TimeStamp to 192.168.2.99:49207 -[46097126] UDP message sent to 192.168.2.255 from port 55570 -[46286492] sent TimeStamp to 192.168.2.83:51993 -[47096253] UDP message sent to 192.168.2.255 from port 55570 -[47279124] sent TimeStamp to 192.168.2.83:44351 -[47280480] sent TimeStamp to 192.168.2.83:36873 -[47497248] sent TimeStamp to 192.168.2.99:49207 -[48099827] UDP message sent to 192.168.2.255 from port 55570 -[48402282] sent TimeStamp to 192.168.2.84:52171 -[48403666] sent TimeStamp to 192.168.2.84:46167 -[48404645] sent TimeStamp to 192.168.2.84:33279 -[49011695] sent TimeStamp to 192.168.2.99:49207 -[49097509] UDP message sent to 192.168.2.255 from port 55570 -[50097579] UDP message sent to 192.168.2.255 from port 55570 -[50497850] sent TimeStamp to 192.168.2.99:49207 -[51101258] UDP message sent to 192.168.2.255 from port 55570 -[51279814] sent TimeStamp to 192.168.2.83:51993 -[52001278] sent TimeStamp to 192.168.2.99:49207 -[52102934] UDP message sent to 192.168.2.255 from port 55570 -[52277754] sent TimeStamp to 192.168.2.83:36873 -[52279479] sent TimeStamp to 192.168.2.83:44351 -[53107412] UDP message sent to 192.168.2.255 from port 55570 -[53375773] sent TimeStamp to 192.168.2.84:33279 -[53377130] sent TimeStamp to 192.168.2.84:46167 -[53378260] sent TimeStamp to 192.168.2.84:52171 -[53502349] sent TimeStamp to 192.168.2.99:49207 -[54107732] UDP message sent to 192.168.2.255 from port 55570 -[55053463] sent TimeStamp to 192.168.2.99:49207 -[55110796] UDP message sent to 192.168.2.255 from port 55570 -[56110359] UDP message sent to 192.168.2.255 from port 55570 -[56275091] sent TimeStamp to 192.168.2.83:51993 -[56588659] sent TimeStamp to 192.168.2.99:49207 -[57111032] UDP message sent to 192.168.2.255 from port 55570 -[57282008] sent TimeStamp to 192.168.2.83:36873 -[57282974] sent TimeStamp to 192.168.2.83:44351 -[58022800] sent TimeStamp to 192.168.2.99:49207 -[58113086] UDP message sent to 192.168.2.255 from port 55570 -[58369815] sent TimeStamp to 192.168.2.84:33279 -[58370583] sent TimeStamp to 192.168.2.84:46167 -[58371142] sent TimeStamp to 192.168.2.84:52171 -[59113779] UDP message sent to 192.168.2.255 from port 55570 -[59572751] sent TimeStamp to 192.168.2.99:49207 -[60116796] UDP message sent to 192.168.2.255 from port 55570 -[61095700] sent TimeStamp to 192.168.2.99:49207 -[61121332] UDP message sent to 192.168.2.255 from port 55570 -[61276051] sent TimeStamp to 192.168.2.83:51993 -[62118222] UDP message sent to 192.168.2.255 from port 55570 -[62275595] sent TimeStamp to 192.168.2.83:36873 -[62277295] sent TimeStamp to 192.168.2.83:44351 -[62508773] sent TimeStamp to 192.168.2.99:49207 -[63120589] UDP message sent to 192.168.2.255 from port 55570 -[63448902] sent TimeStamp to 192.168.2.84:52171 -[63450022] sent TimeStamp to 192.168.2.84:33279 -[63450759] sent TimeStamp to 192.168.2.84:46167 -[64008306] sent TimeStamp to 192.168.2.99:49207 -[64120934] UDP message sent to 192.168.2.255 from port 55570 -[65124993] UDP message sent to 192.168.2.255 from port 55570 -[65601180] sent TimeStamp to 192.168.2.99:49207 -[66126340] UDP message sent to 192.168.2.255 from port 55570 -[66276185] sent TimeStamp to 192.168.2.83:51993 -[67032858] sent TimeStamp to 192.168.2.99:49207 -[67124901] UDP message sent to 192.168.2.255 from port 55570 -[67275703] sent TimeStamp to 192.168.2.83:36873 -[67276855] sent TimeStamp to 192.168.2.83:44351 -[68125388] UDP message sent to 192.168.2.255 from port 55570 -[68466508] sent TimeStamp to 192.168.2.84:46167 -[68468264] sent TimeStamp to 192.168.2.84:52171 -[68469540] sent TimeStamp to 192.168.2.84:33279 -[68511517] sent TimeStamp to 192.168.2.99:49207 -[69126270] UDP message sent to 192.168.2.255 from port 55570 -[70107763] sent TimeStamp to 192.168.2.99:49207 -[70124695] UDP message sent to 192.168.2.255 from port 55570 -[71132186] UDP message sent to 192.168.2.255 from port 55570 -[71279049] sent TimeStamp to 192.168.2.83:51993 -[71554486] sent TimeStamp to 192.168.2.99:49207 -[72131567] UDP message sent to 192.168.2.255 from port 55570 -[72277945] sent TimeStamp to 192.168.2.83:36873 -[72279181] sent TimeStamp to 192.168.2.83:44351 -[73039150] sent TimeStamp to 192.168.2.99:49207 -[73132810] UDP message sent to 192.168.2.255 from port 55570 -[73381565] sent TimeStamp to 192.168.2.84:52171 -[73382353] sent TimeStamp to 192.168.2.84:46167 -[73382961] sent TimeStamp to 192.168.2.84:33279 -[74132582] UDP message sent to 192.168.2.255 from port 55570 -[74497378] sent TimeStamp to 192.168.2.99:49207 -[75135086] UDP message sent to 192.168.2.255 from port 55570 -[76000927] sent TimeStamp to 192.168.2.99:49207 -[76139147] UDP message sent to 192.168.2.255 from port 55570 -[76274968] sent TimeStamp to 192.168.2.83:51993 -[77140833] UDP message sent to 192.168.2.255 from port 55570 -[77272749] sent TimeStamp to 192.168.2.83:36873 -[77273601] sent TimeStamp to 192.168.2.83:44351 -[77532357] sent TimeStamp to 192.168.2.99:49207 -[78141243] UDP message sent to 192.168.2.255 from port 55570 -[78368115] sent TimeStamp to 192.168.2.84:52171 -[78369879] sent TimeStamp to 192.168.2.84:33279 -[78370759] sent TimeStamp to 192.168.2.84:46167 -[79014069] sent TimeStamp to 192.168.2.99:49207 -[79140677] UDP message sent to 192.168.2.255 from port 55570 -[80141139] UDP message sent to 192.168.2.255 from port 55570 -[80551699] sent TimeStamp to 192.168.2.99:49207 -[81146005] UDP message sent to 192.168.2.255 from port 55570 -[81274891] sent TimeStamp to 192.168.2.83:51993 -[82084880] sent TimeStamp to 192.168.2.99:49207 -[82145837] UDP message sent to 192.168.2.255 from port 55570 -[82275126] sent TimeStamp to 192.168.2.83:36873 -[82276540] sent TimeStamp to 192.168.2.83:44351 -[83145719] UDP message sent to 192.168.2.255 from port 55570 -[83417706] sent TimeStamp to 192.168.2.84:52171 -[83419672] sent TimeStamp to 192.168.2.84:46167 -[83421006] sent TimeStamp to 192.168.2.84:33279 -[83528326] sent TimeStamp to 192.168.2.99:49207 -[84146863] UDP message sent to 192.168.2.255 from port 55570 -[85061255] sent TimeStamp to 192.168.2.99:49207 -[85149381] UDP message sent to 192.168.2.255 from port 55570 -[86150631] UDP message sent to 192.168.2.255 from port 55570 -[86276056] sent TimeStamp to 192.168.2.83:51993 -[86529909] sent TimeStamp to 192.168.2.99:49207 -[87151736] UDP message sent to 192.168.2.255 from port 55570 -[87273161] sent TimeStamp to 192.168.2.83:36873 -[87274044] sent TimeStamp to 192.168.2.83:44351 -[88030452] sent TimeStamp to 192.168.2.99:49207 -[88154127] UDP message sent to 192.168.2.255 from port 55570 -[88439902] sent TimeStamp to 192.168.2.84:52171 -[88441325] sent TimeStamp to 192.168.2.84:33279 -[88442362] sent TimeStamp to 192.168.2.84:46167 -[89153879] UDP message sent to 192.168.2.255 from port 55570 -[89564259] sent TimeStamp to 192.168.2.99:49207 -[90153250] UDP message sent to 192.168.2.255 from port 55570 -[91100952] sent TimeStamp to 192.168.2.99:49207 -[91157450] UDP message sent to 192.168.2.255 from port 55570 -[91273593] sent TimeStamp to 192.168.2.83:51993 -[92157743] UDP message sent to 192.168.2.255 from port 55570 -[92272712] sent TimeStamp to 192.168.2.83:36873 -[92273485] sent TimeStamp to 192.168.2.83:44351 -[92532948] sent TimeStamp to 192.168.2.99:49207 -[93161474] UDP message sent to 192.168.2.255 from port 55570 -[93370870] sent TimeStamp to 192.168.2.84:33279 -[93372541] sent TimeStamp to 192.168.2.84:46167 -[93373762] sent TimeStamp to 192.168.2.84:52171 -[94068531] sent TimeStamp to 192.168.2.99:49207 -[94161903] UDP message sent to 192.168.2.255 from port 55570 -[95162611] UDP message sent to 192.168.2.255 from port 55570 -[95690154] sent TimeStamp to 192.168.2.99:49207 -[96165023] UDP message sent to 192.168.2.255 from port 55570 -[96279544] sent TimeStamp to 192.168.2.83:51993 -[97037651] sent TimeStamp to 192.168.2.99:49207 -[97165376] UDP message sent to 192.168.2.255 from port 55570 -[97273823] sent TimeStamp to 192.168.2.83:36873 -[97275127] sent TimeStamp to 192.168.2.83:44351 -[98165587] UDP message sent to 192.168.2.255 from port 55570 -[98369012] sent TimeStamp to 192.168.2.84:52171 -[98370527] sent TimeStamp to 192.168.2.84:46167 -[98371776] sent TimeStamp to 192.168.2.84:33279 -[98509434] sent TimeStamp to 192.168.2.99:49207 -[99165270] UDP message sent to 192.168.2.255 from port 55570 -[100111347] sent TimeStamp to 192.168.2.99:49207 -[100169962] UDP message sent to 192.168.2.255 from port 55570 -[101173035] UDP message sent to 192.168.2.255 from port 55570 -[101275705] sent TimeStamp to 192.168.2.83:51993 -[101542951] sent TimeStamp to 192.168.2.99:49207 -[102172300] UDP message sent to 192.168.2.255 from port 55570 -[102275220] sent TimeStamp to 192.168.2.83:36873 -[102276314] sent TimeStamp to 192.168.2.83:44351 -[103081881] sent TimeStamp to 192.168.2.99:49207 -[103172343] UDP message sent to 192.168.2.255 from port 55570 -[103366969] sent TimeStamp to 192.168.2.84:52171 -[103376054] sent TimeStamp to 192.168.2.84:46167 -[103377471] sent TimeStamp to 192.168.2.84:33279 -[104172057] UDP message sent to 192.168.2.255 from port 55570 -[104615625] sent TimeStamp to 192.168.2.99:49207 -[105175820] UDP message sent to 192.168.2.255 from port 55570 -[106051294] sent TimeStamp to 192.168.2.99:49207 -[106179992] UDP message sent to 192.168.2.255 from port 55570 -[106275173] sent TimeStamp to 192.168.2.83:51993 -[107182777] UDP message sent to 192.168.2.255 from port 55570 -[107280481] sent TimeStamp to 192.168.2.83:36873 -[107282095] sent TimeStamp to 192.168.2.83:44351 -[107592581] sent TimeStamp to 192.168.2.99:49207 -[108182560] UDP message sent to 192.168.2.255 from port 55570 -[108369299] sent TimeStamp to 192.168.2.84:33279 -[108370267] sent TimeStamp to 192.168.2.84:46167 -[108370927] sent TimeStamp to 192.168.2.84:52171 -[109123758] sent TimeStamp to 192.168.2.99:49207 -[109183158] UDP message sent to 192.168.2.255 from port 55570 -[110183595] UDP message sent to 192.168.2.255 from port 55570 -[110518417] sent TimeStamp to 192.168.2.99:49207 -[111184657] UDP message sent to 192.168.2.255 from port 55570 -[111276297] sent TimeStamp to 192.168.2.83:51993 -[112091286] sent TimeStamp to 192.168.2.99:49207 -[112189040] UDP message sent to 192.168.2.255 from port 55570 -[112283459] sent TimeStamp to 192.168.2.83:36873 -[112284823] sent TimeStamp to 192.168.2.83:44351 -[113189633] UDP message sent to 192.168.2.255 from port 55570 -[113370557] sent TimeStamp to 192.168.2.84:52171 -[113372027] sent TimeStamp to 192.168.2.84:46167 -[113373310] sent TimeStamp to 192.168.2.84:33279 -[113500539] sent TimeStamp to 192.168.2.99:49207 -[114190385] UDP message sent to 192.168.2.255 from port 55570 -[115062647] sent TimeStamp to 192.168.2.99:49207 -[115190688] UDP message sent to 192.168.2.255 from port 55570 -[116191657] UDP message sent to 192.168.2.255 from port 55570 -[116276047] sent TimeStamp to 192.168.2.83:51993 -[116596824] sent TimeStamp to 192.168.2.99:49207 -[117192350] UDP message sent to 192.168.2.255 from port 55570 -[117275111] sent TimeStamp to 192.168.2.83:44351 -[117276899] sent TimeStamp to 192.168.2.83:36873 -[118134425] sent TimeStamp to 192.168.2.99:49207 -[118196299] UDP message sent to 192.168.2.255 from port 55570 -[118369611] sent TimeStamp to 192.168.2.84:46167 -[118371043] sent TimeStamp to 192.168.2.84:52171 -[118372047] sent TimeStamp to 192.168.2.84:33279 -[119196014] UDP message sent to 192.168.2.255 from port 55570 -[119572923] sent TimeStamp to 192.168.2.99:49207 -[120197076] UDP message sent to 192.168.2.255 from port 55570 -[121005814] sent TimeStamp to 192.168.2.99:49207 -[121197928] UDP message sent to 192.168.2.255 from port 55570 -[121275770] sent TimeStamp to 192.168.2.83:51993 -[122198270] UDP message sent to 192.168.2.255 from port 55570 -[122276225] sent TimeStamp to 192.168.2.83:36873 -[122277333] sent TimeStamp to 192.168.2.83:44351 -[122507585] sent TimeStamp to 192.168.2.99:49207 -[123199485] UDP message sent to 192.168.2.255 from port 55570 -[123368124] sent TimeStamp to 192.168.2.84:52171 -[123369396] sent TimeStamp to 192.168.2.84:33279 -[123370192] sent TimeStamp to 192.168.2.84:46167 -[124073626] sent TimeStamp to 192.168.2.99:49207 -[124200615] UDP message sent to 192.168.2.255 from port 55570 -[125202533] UDP message sent to 192.168.2.255 from port 55570 -[125609623] sent TimeStamp to 192.168.2.99:49207 -[126203353] UDP message sent to 192.168.2.255 from port 55570 -[126275779] sent TimeStamp to 192.168.2.83:51993 -[127040730] sent TimeStamp to 192.168.2.99:49207 -[127204024] UDP message sent to 192.168.2.255 from port 55570 -[127274792] sent TimeStamp to 192.168.2.83:36873 -[127276153] sent TimeStamp to 192.168.2.83:44351 -[128206206] UDP message sent to 192.168.2.255 from port 55570 -[128372269] sent TimeStamp to 192.168.2.84:52171 -[128373336] sent TimeStamp to 192.168.2.84:33279 -[128374119] sent TimeStamp to 192.168.2.84:46167 -[128512696] sent TimeStamp to 192.168.2.99:49207 -[129208098] UDP message sent to 192.168.2.255 from port 55570 -[130117666] sent TimeStamp to 192.168.2.99:49207 -[130209704] UDP message sent to 192.168.2.255 from port 55570 -[131210040] UDP message sent to 192.168.2.255 from port 55570 -[131275852] sent TimeStamp to 192.168.2.83:51993 -[131558241] sent TimeStamp to 192.168.2.99:49207 -[132212093] UDP message sent to 192.168.2.255 from port 55570 -[132275768] sent TimeStamp to 192.168.2.83:36873 -[132276669] sent TimeStamp to 192.168.2.83:44351 diff --git a/package-lock.json b/package-lock.json index 8791f33..6e10457 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,946 +1,8 @@ { "name": "stagelinq", "version": "1.0.7", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "stagelinq", - "version": "1.0.7", - "license": "GNU GPLv3", - "dependencies": { - "@types/filesystem": "^0.0.32", - "@types/uuid": "^8.3.4", - "better-sqlite3": "^7.5.0", - "console-stamp": "^3.0.3", - "file-type": "^16.5.3", - "ip": "^1.1.5", - "minimist": "^1.2.5", - "promise-socket": "^7.0.0" - }, - "devDependencies": { - "@types/assert": "^1.5.5", - "@types/better-sqlite3": "^7.4.0", - "@types/ip": "^1.1.0", - "@types/minimist": "^1.2.2", - "@types/node": "^16.4.0", - "prettier": "^2.5.1", - "typescript": "^4.6.2" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@types/assert": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.5.tgz", - "integrity": "sha512-myz5KWf6ox66Ou1m0KiLZpitk7W6Vly2LFRx7AXHSLeMUM6bmDIStIBk0xd7I2vXcAQEuhegdpjPuypmP5ui0Q==", - "dev": true - }, - "node_modules/@types/better-sqlite3": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.4.0.tgz", - "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", - "dev": true - }, - "node_modules/@types/filesystem": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", - "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", - "dependencies": { - "@types/filewriter": "*" - } - }, - "node_modules/@types/filewriter": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", - "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" - }, - "node_modules/@types/ip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", - "integrity": "sha512-dwNe8gOoF70VdL6WJBwVHtQmAX4RMd62M+mAB9HQFjG1/qiCLM/meRy95Pd14FYBbEDwCq7jgJs89cHpLBu4HQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.0.tgz", - "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", - "dev": true - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/better-sqlite3": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", - "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "prebuild-install": "^7.0.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/console-stamp": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.3.tgz", - "integrity": "sha512-6ltMcMEVDHb1bqb+qaVfCX7Vf3vEkfZEeKyReG1ny45Rv6YJynCcdv94j7whNVfxj/4/3Ji/QBHY6p4JI51Ucw==", - "dependencies": { - "chalk": "^4.1.1", - "dateformat": "^4.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/dateformat": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", - "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==", - "engines": { - "node": "*" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/peek-readable": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz", - "integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-duplex": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz", - "integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==", - "dependencies": { - "core-js": "^3.6.5", - "promise-readable": "^6.0.0", - "promise-writable": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-readable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz", - "integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==", - "dependencies": { - "core-js": "^3.6.5" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-socket": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz", - "integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==", - "dependencies": { - "promise-duplex": "^6.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-writable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz", - "integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strtok3": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz", - "integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/token-types": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz", - "integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, "dependencies": { "@tokenizer/token": { "version": "0.3.0", @@ -1483,14 +545,6 @@ "simple-concat": "^1.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -1501,6 +555,14 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/services/Directory.ts b/services/Directory.ts index 4bf53aa..cd943db 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -2,10 +2,9 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -//import { StageLinqDevices } from '../network'; import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId } from '../types'; import { Logger } from '../LogEmitter'; -//import { sleep } from '../utils/sleep'; +import { sleep } from '../utils/sleep'; import { Socket } from 'net'; export interface DirectoryData { @@ -38,18 +37,25 @@ export class Directory extends Service { const token = ctx.read(16); const deviceId = new DeviceId(token); const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(":"); - + const peer = this.parent.peers.get(deviceId.toString()) + this.peerDeviceIds[ipAddressPort] = deviceId; this.peerSockets.set(deviceId, socket); switch (id) { case MessageId.TimeStamp: ctx.seek(16); - this.timeAlive = Number(ctx.readUInt64() / (1000n * 1000n * 1000n)); + const timeAlive = ctx.readUInt64(); + this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); if (ctx.isEOF() === false ){ ctx.readRemaining(); } - this.sendTimeStampReply(token,socket); + if (peer.software.name === 'JM08') { + //Logger.debug(peer.software, timeAlive, this.timeAlive, ctx.sizeLeft()); + //sleep(1000) + this.sendTimeStampReply(token,socket); + } + break; case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); @@ -106,12 +112,12 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); ctx.write(Tokens.Listen); + //ctx.writeUInt64(BigInt(this.timeAlive*10000)); ctx.writeUInt64(0n); - const message = ctx.getBuffer(); assert(message.length === 44); - + await sleep(1400); await socket.write(message); - Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) + Logger.debug(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) } } \ No newline at end of file From 282a7cfa14ff29ea0adc0e1084b4aa7351fba703 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 11 Oct 2022 17:22:29 -0400 Subject: [PATCH 017/146] some small fixes --- services/Directory.ts | 13 +++++-------- services/FileTransfer.ts | 4 ++-- services/Service.ts | 22 ++++++++++++---------- services/StateMap.ts | 18 ++++++++++-------- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/services/Directory.ts b/services/Directory.ts index cd943db..6db87f4 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -16,16 +16,15 @@ export class Directory extends Service { public name: string = "Directory"; public timeAlive: number; public servicePorts: ServicePorts; - //public serviceRequestAllowed: boolean = false; - //public services: Map; - protected isBufferedService = false; + + protected readonly isBufferedService = false; async init() { } protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) return } @@ -50,9 +49,7 @@ export class Directory extends Service { if (ctx.isEOF() === false ){ ctx.readRemaining(); } - if (peer.software.name === 'JM08') { - //Logger.debug(peer.software, timeAlive, this.timeAlive, ctx.sizeLeft()); - //sleep(1000) + if (peer && peer.software.name === 'JM08') { this.sendTimeStampReply(token,socket); } @@ -118,6 +115,6 @@ export class Directory extends Service { assert(message.length === 44); await sleep(1400); await socket.write(message); - Logger.debug(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) + Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) } } \ No newline at end of file diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 6690dc0..cb86e91 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -58,7 +58,7 @@ export class FileTransfer extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) return } @@ -196,7 +196,7 @@ export class FileTransfer extends Service { } case MessageId.DeviceShutdown: { - Logger.debug('shutdown msg length', p_ctx.sizeLeft()); + // This message seems to be sent from connected devices when shutdown is started if (p_ctx.sizeLeft() > 0) { const msg = p_ctx.readRemainingAsNewBuffer().toString('hex'); Logger.debug(msg) diff --git a/services/Service.ts b/services/Service.ts index 4164a6d..7bd10e3 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -41,7 +41,7 @@ class MsgId { } type PeerBuffers = { - [key: string]: Buffer; + [key: IpAddressPort]: Buffer; } export abstract class Service extends EventEmitter { @@ -71,8 +71,6 @@ export abstract class Service extends EventEmitter { const server = net.createServer((socket) => { - Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) - //Handle identification of incoming socket. const addressInfo:AddressInfo = { address: socket.remoteAddress, @@ -81,10 +79,13 @@ export abstract class Service extends EventEmitter { } const ipAddressPort = [addressInfo.address, addressInfo.port].join(":"); - //Initialize new buffer for this connection - let queue: Buffer = null; - this.peerBuffers[ipAddressPort] = queue; + Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + + //Initialize fresh buffer queue for this connection + + this.peerBuffers[ipAddressPort] = null; + //get device id from list of peers. will check if undefined later. let deviceId = this.peerDeviceIds[ipAddressPort]; socket.on('error', (err) => { @@ -93,6 +94,7 @@ export abstract class Service extends EventEmitter { socket.on('data', async p_data => { + //Only used for debugging. this.msgId++ const msgId = new MsgId(this.msgId); @@ -119,7 +121,8 @@ export abstract class Service extends EventEmitter { this.emit('message', parsedData); }; - //check if device has announced itself to this service yet + // Check if device has announced itself to this service yet + // Basically, we only want to handle if (!deviceId && ctx.sizeLeft() >= 20) { const messageId = ctx.readUInt32(); @@ -137,7 +140,7 @@ export abstract class Service extends EventEmitter { this.peerDeviceIds[ipAddressPort] = deviceId; - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); + Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket); this.messageHandler(parsedData); @@ -203,7 +206,6 @@ export abstract class Service extends EventEmitter { } getDeviceIdFromSocket(socket: Socket): DeviceId { - return this.peerDeviceIds[[socket.remoteAddress, socket.remotePort].join(':')] } @@ -241,7 +243,7 @@ export abstract class Service extends EventEmitter { public getIdFromIp(map:Map, val:string) { const thisEntry = [...map.values()].filter((item: ConnectionInfo) => item.addressPort === val); return thisEntry.keys.toString(); - } + } protected testPoint(_ctx: ReadContext, deviceId: string, name: string, silent?:boolean) { const ctx = _ctx.readRemainingAsNewCtx(); diff --git a/services/StateMap.ts b/services/StateMap.ts index 83dde87..1a7e4a3 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -10,12 +10,19 @@ import { Service } from './Service'; import type { ServiceMessage, DeviceId } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; - + export const States = [ // Mixer StageLinqValue.MixerCH1faderPosition, StageLinqValue.MixerCH2faderPosition, + StageLinqValue.MixerCH3faderPosition, + StageLinqValue.MixerCH4faderPosition, StageLinqValue.MixerCrossfaderPosition, + StageLinqValue.MixerChannelAssignment1, + StageLinqValue.MixerChannelAssignment2, + StageLinqValue.MixerChannelAssignment3, + StageLinqValue.MixerChannelAssignment4, + StageLinqValue.MixerNumberOfChannels, StageLinqValue.ClientPreferencesLayerA, StageLinqValue.ClientPreferencesPlayer, @@ -27,12 +34,7 @@ export const States = [ StageLinqValue.EngineMasterMasterTempo, StageLinqValue.EngineSyncNetworkMasterStatus, - StageLinqValue.MixerChannelAssignment1, - StageLinqValue.MixerChannelAssignment2, - StageLinqValue.MixerChannelAssignment3, - StageLinqValue.MixerChannelAssignment4, - StageLinqValue.MixerNumberOfChannels, - + // Decks StageLinqValue.EngineDeck1Play, StageLinqValue.EngineDeck1PlayState, @@ -127,7 +129,7 @@ export class StateMap extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - Logger.debug(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) this.subscribe(socket); return } From a0001cdfd72cdd55c8e46580e1dc31533d21af85 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 11 Oct 2022 18:53:44 -0400 Subject: [PATCH 018/146] Added Listener Preface to ReadMe --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/README.md b/README.md index 3e360cb..83110b8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,85 @@ +# StageLinq - Listener Proof of Concept + +## Description +This version repredemonstrates a novel way of handling connections with devices and their services on the StageLinq network. +Rather than searching out devices via discovery, we are able to have devices initiate connections to the library. As demonstrated, this approach: +* Greatly reduces complexity. + +* Speeds up the connection & initialization process. + +* Handles disconection and reconnection of devices gracefully and simply. + +* Allows connections from devices we couldn't use previously (i.e. x1800/x1850 mixers). + +## Method Summary +* Instantiate a net.Server for each service we wish to implement. + +* Write a DiscoveryMessage which includes the port on which the Discovery service is listening, and announce ourselves on UDP port 51337. + +* StageLinq devices on the network will initiate a connection to the Directery service, and send a Service Request (0x2). + +* Reply to each device with a Service Announcement (0x0) for each of the services we offer and the port we are listening to them on. + +* If a device implements that service it will initiate a connection, sending a Service Announcement (0x0), a Network String with the name of the serivce, and the port it is using. + +* The connection to this Device-Service is now open, and we can use it as we normally would. + +* If a connection is lost to a device, it will simply reconnect. + +### Additional Notes on the Listener Method + +* The Directory service is the only one which is *required* as it is the initial connection endpopint for remote devices. + +* Only tokens of a specific structure seem to work, otherwise devices won't initiate a connection. One requirement *seems* to be that they start with `0xFF FF FF FF FF FF`, but some more research into this is needed. + +### Implementing Selected Services +We can choose which services to implement in the initialize() method in StageLinqDevices.ts +```ts + async initialize(): Promise { + + await this.startServiceListener(StateMap); + await this.startServiceListener(FileTransfer); + const directory = await this.startServiceListener(Directory); //we need the server's port for announcement message + + return directory.serverInfo + } + ``` + +## Other Changes Implemented in Listener + +* When a device is shutdown, it sends a Disconnection message (0x9) to connected FileTransfer service. + +* Network Device has been eliminated. + * Directory is now an extended instance of Service. + * The connectToService factory function has been moved to StageLinqDevices (renamed startServiceListener); +* Created a DeviceId class, to assist handling deviceIds. + * An instance of DeviceId holds both the buffer and formatted UUID-type string. + * It has methods for retrieving the string or buffer. +* Created some other type definitions (IpAddressPort) to better communicate what properties are expecting. +* Instances of Service have a new abstract method, parseServiceData. This is just because ServiceAnnouncement messages on StateMap and FileTransfer were causing some headache, and needed to be parsed separately. +* FileTransfer Unknown0 message is used to trigger getSources. See notes in code. + +## To Be Implemented / Possibilities + +* Some methods from Database.ts have been moved to FileTransfer. This isn't inteded to be permanent, it was just to allow a demonstration of downloading a DB. + +* TimeSyc.ts is in the project, but should be disregarded for now. + +* We could possibly eliminate StageLinqDevices, as this step is no longer really necessary. Multiple devices are handled by single instances of each serivce. + +* StageLinqListener and Announce could be reworked into a single class. Presently all StageLinqListener is doing is adding and updating a list of announced devices (StageLinqDevices.peers). + +## Compatibility Notes + +* This is **Experimental**. Do not use in a live setup, lots of further testing is required. +* That being said, I have tested it (Mac & PC) on my setup: + * 2x SC6000 players running EngineOS 2.3.2 + * X1800 Mixer running 1.6 firmware +* Hoping Prime4 / Prime GO users could test and let me know how it works. + +# + +## Original ReadMe # StageLinq NodeJS library implementation to access information through the Denon StageLinq protocol. From 544b5eeb0e550acda41ee20db03c3c83e01b1e54 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 11 Oct 2022 19:08:00 -0400 Subject: [PATCH 019/146] ReadMe typos --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 83110b8..e1fa59e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # StageLinq - Listener Proof of Concept ## Description -This version repredemonstrates a novel way of handling connections with devices and their services on the StageLinq network. +This branch demonstrates a novel way of handling connections with devices and their services on the StageLinq network. Rather than searching out devices via discovery, we are able to have devices initiate connections to the library. As demonstrated, this approach: * Greatly reduces complexity. From 2b027532eb57aca0e1ed0c73fe95b56d9d44dd51 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 11 Oct 2022 19:13:54 -0400 Subject: [PATCH 020/146] More ReadMe Fixes --- README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e1fa59e..f0b15db 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This branch demonstrates a novel way of handling connections with devices and th Rather than searching out devices via discovery, we are able to have devices initiate connections to the library. As demonstrated, this approach: * Greatly reduces complexity. -* Speeds up the connection & initialization process. +* Speeds up the connection & initialization process (almost every sleep() call has been eliminated without and affect thus far). -* Handles disconection and reconnection of devices gracefully and simply. +* Handles disconnection and reconnection of devices gracefully and simply. * Allows connections from devices we couldn't use previously (i.e. x1800/x1850 mixers). @@ -16,11 +16,11 @@ Rather than searching out devices via discovery, we are able to have devices ini * Write a DiscoveryMessage which includes the port on which the Discovery service is listening, and announce ourselves on UDP port 51337. -* StageLinq devices on the network will initiate a connection to the Directery service, and send a Service Request (0x2). +* StageLinq devices on the network will initiate a connection to the Directory service, and send a Service Request (0x2). * Reply to each device with a Service Announcement (0x0) for each of the services we offer and the port we are listening to them on. -* If a device implements that service it will initiate a connection, sending a Service Announcement (0x0), a Network String with the name of the serivce, and the port it is using. +* If a device implements that service it will initiate a connection, sending a Service Announcement (0x0), a Network String with the name of the service, and the port it is using. * The connection to this Device-Service is now open, and we can use it as we normally would. @@ -28,7 +28,7 @@ Rather than searching out devices via discovery, we are able to have devices ini ### Additional Notes on the Listener Method -* The Directory service is the only one which is *required* as it is the initial connection endpopint for remote devices. +* The Directory service is the only one which is *required* as it is the initial connection endpoint for remote devices. * Only tokens of a specific structure seem to work, otherwise devices won't initiate a connection. One requirement *seems* to be that they start with `0xFF FF FF FF FF FF`, but some more research into this is needed. @@ -61,11 +61,15 @@ We can choose which services to implement in the initialize() method in StageLin ## To Be Implemented / Possibilities -* Some methods from Database.ts have been moved to FileTransfer. This isn't inteded to be permanent, it was just to allow a demonstration of downloading a DB. +* EventEmitter stuff isn't fully implemented yet, with a few exceptions (those needed for FileTransfer) + +* FileTransfer has only been tested with DB. + +* Some methods from Database.ts have been moved to FileTransfer. This isn't intended to be permanent, it was just to allow a demonstration of downloading a DB. * TimeSyc.ts is in the project, but should be disregarded for now. -* We could possibly eliminate StageLinqDevices, as this step is no longer really necessary. Multiple devices are handled by single instances of each serivce. +* We could possibly eliminate StageLinqDevices, as this step is no longer really necessary. Multiple devices are handled by single instances of each service. * StageLinqListener and Announce could be reworked into a single class. Presently all StageLinqListener is doing is adding and updating a list of announced devices (StageLinqDevices.peers). From 4e2b7c9b00a3341554517636cc4077e027156493 Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:01:58 -0700 Subject: [PATCH 021/146] Reformat according to prettierrc. --- types/DeviceId.ts | 96 +++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/types/DeviceId.ts b/types/DeviceId.ts index 1de2c6e..ee638ff 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -1,62 +1,58 @@ class InvalidDeviceIdError extends Error { - constructor(m?: string) { - super(m || "Error: invalid DeviceId !"); + constructor(m?: string) { + super(m || 'Error: invalid DeviceId !'); - // Set the prototype explicitly. - Object.setPrototypeOf(this, InvalidDeviceIdError.prototype); - } + // Set the prototype explicitly. + Object.setPrototypeOf(this, InvalidDeviceIdError.prototype); + } } export class DeviceId { - protected m_str: string; - protected m_array: Uint8Array; - - constructor(deviceId: string | Uint8Array) { - - this.m_str = this.forceString(deviceId); - this.m_array = this.forceArray(deviceId); - - let reg:RegExp = new RegExp("[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}", "i") - if(!reg.test(this.m_str)) - throw new InvalidDeviceIdError(); - } - - toString() { - return this.m_str; - } - toBuffer() { - return this.m_array; - } - - //there must be a less hack way to do this... - private forceString(deviceId: string | Uint8Array): string { - switch (typeof deviceId) { - case ('string'): - return deviceId as string; - break; - case ('object'): - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId).toString('hex')).splice(1).join('-') as string - //return toStr(deviceId) as string - break; - } + protected m_str: string; + protected m_array: Uint8Array; + + constructor(deviceId: string | Uint8Array) { + this.m_str = this.forceString(deviceId); + this.m_array = this.forceArray(deviceId); + + let reg: RegExp = new RegExp('[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}', 'i'); + if (!reg.test(this.m_str)) throw new InvalidDeviceIdError(); + } + + toString() { + return this.m_str; + } + + toBuffer() { + return this.m_array; + } + + //there must be a less hack way to do this... + private forceString(deviceId: string | Uint8Array): string { + switch (typeof deviceId) { + case 'string': + return deviceId as string; + case 'object': + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId).toString('hex')) + .splice(1) + .join('-') as string; + //return toStr(deviceId) as string } - - private forceArray(deviceId: string | Uint8Array): Uint8Array { - switch (typeof deviceId) { - case ('object'): - return deviceId as Uint8Array - break; - case ('string'): - return Buffer.from(deviceId.toString().split("-").join(), 'hex') as Uint8Array - break; - } + } + + private forceArray(deviceId: string | Uint8Array): Uint8Array { + switch (typeof deviceId) { + case 'object': + return deviceId as Uint8Array; + case 'string': + return Buffer.from(deviceId.toString().split('-').join(), 'hex') as Uint8Array; } + } } export function deviceIdFromBuff(token: Uint8Array): string { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i.exec(Buffer.from(token).toString('hex')).splice(1).join('-'); } /* @@ -98,4 +94,4 @@ function funcWithProductIdArg(productId: ProductId) { //funcWithProductIdArg('123e4567-e89b-12d3-a456-426614174000') -*/ \ No newline at end of file +*/ From af62f4648fbca0bfc7a8d8e45f0e288c0a1d2ff3 Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:11:39 -0700 Subject: [PATCH 022/146] Update formatting --- services/Directory.ts | 71 ++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/services/Directory.ts b/services/Directory.ts index 6db87f4..38ffac4 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,11 +1,11 @@ -import { strict as assert } from 'assert'; +import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId } from '../types'; -import { Logger } from '../LogEmitter'; import { sleep } from '../utils/sleep'; import { Socket } from 'net'; +import { strict as assert } from 'assert'; +import { WriteContext } from '../utils/WriteContext'; export interface DirectoryData { deviceId: string; @@ -13,31 +13,35 @@ export interface DirectoryData { } export class Directory extends Service { - public name: string = "Directory"; + public name: string = 'Directory'; public timeAlive: number; public servicePorts: ServicePorts; - + protected readonly isBufferedService = false; - - async init() { - } - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - assert((socket)); - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - return + async init() {} + + protected parseServiceData( + messageId: number, + deviceId: DeviceId, + serviceName: string, + socket: Socket + ): ServiceMessage { + assert(socket); + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); + return; } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - let deviceId: string = ""; + let deviceId: string = ''; let servicePorts: ServicePorts = {}; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); const deviceId = new DeviceId(token); - const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(":"); - const peer = this.parent.peers.get(deviceId.toString()) - + const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + const peer = this.parent.peers.get(deviceId.toString()); + this.peerDeviceIds[ipAddressPort] = deviceId; this.peerSockets.set(deviceId, socket); @@ -46,18 +50,18 @@ export class Directory extends Service { ctx.seek(16); const timeAlive = ctx.readUInt64(); this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); - if (ctx.isEOF() === false ){ + if (ctx.isEOF() === false) { ctx.readRemaining(); } if (peer && peer.software.name === 'JM08') { - this.sendTimeStampReply(token,socket); + this.sendTimeStampReply(token, socket); } - + break; case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); const port = ctx.readUInt16(); - console.warn('received ',service,port) + console.warn('received ', service, port); servicePorts[service] = port; this.servicePorts[service] = port; break; @@ -72,12 +76,12 @@ export class Directory extends Service { const directoryMessage: DirectoryData = { deviceId: deviceId, servicePorts: servicePorts, - } + }; const directoryData = { id: 69, - message: directoryMessage - } - return directoryData + message: directoryMessage, + }; + return directoryData; } protected messageHandler(directoryMsg: ServiceMessage): void { @@ -85,12 +89,12 @@ export class Directory extends Service { } private async sendServiceAnnouncement(socket?: Socket): Promise { - // await sleep(250); + // await sleep(250); const ctx = new WriteContext(); - + ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - + for (const [key, value] of this.parent._services) { ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); @@ -100,11 +104,10 @@ export class Directory extends Service { const msg = ctx.getBuffer(); await socket.write(msg); - Logger.debug(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`) + Logger.debug(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); } - - private async sendTimeStampReply(token: Uint8Array ,socket: Socket) { - + + private async sendTimeStampReply(token: Uint8Array, socket: Socket) { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); @@ -115,6 +118,6 @@ export class Directory extends Service { assert(message.length === 44); await sleep(1400); await socket.write(message); - Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`) - } -} \ No newline at end of file + Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`); + } +} From 0c3d82d8d543d4180396a12336bffcea3fe0e34c Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:21:25 -0700 Subject: [PATCH 023/146] Formatting. --- StageLinq/index.ts | 18 +++++++-------- network/StageLinqDevices.ts | 46 ++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index cb935a0..e76a8c5 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -8,14 +8,13 @@ import { Action, ActingAsDevice, StageLinqOptions, DeviceId } from '../types'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, actingAs: ActingAsDevice.NowPlaying, - downloadDbSources: true + downloadDbSources: true, }; /** * Main StageLinq class. */ export class StageLinq extends EventEmitter { - devices: StageLinqDevices; logger: Logger = Logger.instance; options: StageLinqOptions; @@ -35,15 +34,17 @@ export class StageLinq extends EventEmitter { this.listener = new StageLinqListener(); const address = await this.devices.initialize(); const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); - + msg.port = address.port; await announce(msg); this.listener.listenForDevices(async (connectionInfo) => { - const deviceId = new DeviceId(connectionInfo.token); this.devices._peers[connectionInfo.address] = deviceId; - if (!this.devices.peers.has(deviceId.toString()) || this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port) { + if ( + !this.devices.peers.has(deviceId.toString()) || + this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port + ) { this.devices.peers.set(deviceId.toString(), connectionInfo); } }); @@ -56,9 +57,9 @@ export class StageLinq extends EventEmitter { try { Logger.warn('disconnecting'); this.devices.disconnectAll(); - const msg = createDiscoveryMessage(Action.Logout, this.options.actingAs) + const msg = createDiscoveryMessage(Action.Logout, this.options.actingAs); await unannounce(msg); - } catch(e) { + } catch (e) { throw new Error(e); } } @@ -66,5 +67,4 @@ export class StageLinq extends EventEmitter { get databases() { return this.devices.databases; } - -} \ No newline at end of file +} diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 6ea2ed7..e99563a 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -2,12 +2,12 @@ import { ConnectionInfo, PlayerStatus, ServiceMessage, DeviceId, StageLinqOption import { EventEmitter } from 'events'; //import { Player } from '../devices/Player'; //import { sleep } from '../utils'; -import { - FileTransfer, - StateData, - StateMap, - //TimeSynchronization, - Directory +import { + FileTransfer, + StateData, + StateMap, + //TimeSynchronization, + Directory, } from '../services'; //import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; @@ -43,7 +43,7 @@ export class StageLinqDevices extends EventEmitter { private _databases: Databases; public peers: Map = new Map(); public _peers: Record = {}; - + protected options: StageLinqOptions; constructor(options: StageLinqOptions) { @@ -53,39 +53,33 @@ export class StageLinqDevices extends EventEmitter { } /** - * Handle incoming discovery messages from the StageLinq network - * - * @param connectionInfo Connection info. + * Initialize the StageLinq listener. + * @returns */ - async initialize(): Promise { - await this.startServiceListener(StateMap); await this.startServiceListener(FileTransfer); - const directory = await this.startServiceListener(Directory); //we need the server's port for announcement message - - return directory.serverInfo + const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. + return directory.serverInfo; } async startServiceListener>(ctor: { new (parent: InstanceType): T; - }): Promise { - + }): Promise { const serviceName = ctor.name; - const service = new ctor(this); + const service = new ctor(this); - await service.listen(); - this._services.set(serviceName, service); - this.services[serviceName] = service; - return service; + await service.listen(); + this._services.set(serviceName, service); + this.services[serviceName] = service; + return service; } /** * Disconnect from all connected devices */ async disconnectAll() { - - this._services.forEach(service => { + this._services.forEach((service) => { console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); service.closeServer(); }); @@ -111,7 +105,7 @@ export class StageLinqDevices extends EventEmitter { * @param connectionInfo Connection info * @param networkDevice Network device */ - + /* private async setupStateMap(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { // Setup StateMap @@ -190,4 +184,4 @@ export class StageLinqDevices extends EventEmitter { : '(NEW)'); } */ -} \ No newline at end of file +} From 7a15e367b714bcf186b8d88f6eb5f57325a72837 Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:46:58 -0700 Subject: [PATCH 024/146] Overload forceString method. --- types/DeviceId.ts | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/types/DeviceId.ts b/types/DeviceId.ts index ee638ff..3b2792a 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -11,7 +11,9 @@ export class DeviceId { protected m_str: string; protected m_array: Uint8Array; - constructor(deviceId: string | Uint8Array) { + constructor(deviceId: string); + constructor(deficeId: Uint8Array); + constructor(deviceId: any) { this.m_str = this.forceString(deviceId); this.m_array = this.forceArray(deviceId); @@ -28,17 +30,22 @@ export class DeviceId { } //there must be a less hack way to do this... - private forceString(deviceId: string | Uint8Array): string { - switch (typeof deviceId) { - case 'string': - return deviceId as string; - case 'object': - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId).toString('hex')) - .splice(1) - .join('-') as string; - //return toStr(deviceId) as string + private forceString(deviceId: string): string; + private forceString(deviceId: Uint8Array): string; + private forceString(deviceId: unknown): string { + if (typeof deviceId === 'string') { + return deviceId as string; } + + if (typeof deviceId === 'object') { + return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string; + //return toStr(deviceId) as string + } + + throw new Error(`Hell froze over: deviceId is not a string or Uint8Array`); } private forceArray(deviceId: string | Uint8Array): Uint8Array { From 499a7c295bf218bf96e8d8a2695f6be644363ee4 Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:48:18 -0700 Subject: [PATCH 025/146] Fix typo. --- devices/Player.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devices/Player.ts b/devices/Player.ts index e359988..4e45831 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -29,7 +29,7 @@ interface SourceAndTrackPath { * A player represents a device on the StageLinq network. * * A player on the network may have up to 4 decks (or "layers" as they're - * called on the harware). A player may also be given a player number. + * called on the hardware). A player may also be given a player number. * * If you're using a Denon Prime Go/2/4 then you should only get one number. * If you're using a Denon SC5000/SC6000 then you assign the numbers in the From 6ae04c1e561dd381ff4a4c291bf66ba11fdfe5c0 Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:56:23 -0700 Subject: [PATCH 026/146] Added some documentation. --- services/FileTransfer.ts | 71 ++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index cb86e91..cde61b7 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -20,7 +20,7 @@ interface FileTransferServiceData extends ServiceData { source?: Source } -type DeviceSources = { +type DeviceSources = { [key: string]: Source; } @@ -51,11 +51,11 @@ export class FileTransfer extends Service { public name: string = "FileTransfer"; public services: Map = new Map(); public sources: Map = new Map(); - + public deviceSources: Map = new Map(); async init() {} - + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) @@ -63,7 +63,7 @@ export class FileTransfer extends Service { } protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - + const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); const deviceId = this.peerDeviceIds[ipAddressPort]; @@ -80,7 +80,7 @@ export class FileTransfer extends Service { const id = p_ctx.readUInt32(); assert(id === 0x07d2); assert(p_ctx.readUInt32() === 0); - + return { id: MessageId.TimeCode, message: { @@ -106,12 +106,12 @@ export class FileTransfer extends Service { assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.isEOF()); - + if (sources.length) { Logger.debug(`getting sources for `, deviceId.toString()); this.getSources(sources, socket); } - + return { id: messageId, message: { @@ -126,7 +126,7 @@ export class FileTransfer extends Service { // Last 4 bytes (FAT32) indicate size of file p_ctx.seek(49); const size = p_ctx.readUInt32(); - + return { id: messageId, message: { @@ -138,7 +138,7 @@ export class FileTransfer extends Service { case MessageId.EndOfMessage: { // End of result indication? - + return { id: messageId, message: null, @@ -201,7 +201,7 @@ export class FileTransfer extends Service { const msg = p_ctx.readRemainingAsNewBuffer().toString('hex'); Logger.debug(msg) } - + return { id: messageId, socket: socket, @@ -221,11 +221,24 @@ export class FileTransfer extends Service { if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); - } + } } + /** + * Reads a file on the device and returns a buffer. + * + * >> USE WITH CAUTION! << + * + * Downloading seems eat a lot of CPU on the device and might cause it to + * be unresponsive while downloading. Also, it seems that transfers top out + * at around 10MB/sec. + * + * @param p_location Location of the file on the device. + * @param socket Socket. + * @returns Contents of the file. + */ async getFile(p_location: string, socket: Socket): Promise { - + assert(this.receivedFile === null); await this.requestFileTransferId(p_location, socket); const txinfo = await this.waitForMessage(MessageId.FileTransferId); @@ -240,7 +253,7 @@ export class FileTransfer extends Service { return; } await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1, socket); - + try { await new Promise(async (resolve, reject) => { setTimeout(() => { @@ -276,23 +289,23 @@ export class FileTransfer extends Service { this.receivedFile = null; return buf; } - + async getSources(sources: string[], socket: Socket): Promise { const result: Source[] = []; let devices: DeviceSources = {} - + const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); const msgDeviceId = this.peerDeviceIds[ipAddressPort]; - + for (const source of sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; for (const database of databases) { await this.requestStat(database, socket); const fstatMessage = await this.waitForMessage(MessageId.FileStat); - + if (fstatMessage.size > 0) { - + const thisSource: Source = { name: source, database: { @@ -302,18 +315,18 @@ export class FileTransfer extends Service { } result.push(thisSource); - + devices[source] = thisSource; - + break; } } } - + await this.deviceSources.set(msgDeviceId.toString(), devices); await sleep(500); this.downloadDb(msgDeviceId.toString(), socket); - + return result; } @@ -375,16 +388,16 @@ export class FileTransfer extends Service { await this.writeWithLength(ctx, socket); } - async downloadDb(deviceId: string, socket: Socket) { // sourceId: string, service: FileTransfer, _source: Source) { + async downloadDb(deviceId: string, socket: Socket) { //console.info(source); Logger.debug(`downloadDb request for ${deviceId}`); const deviceSources = await this.deviceSources.get(deviceId); - + for (const sourceName in deviceSources) { - + const source = deviceSources[sourceName]; const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); - + Logger.info(`Reading database ${deviceId}/${source.name}`); this.emit('dbDownloading', deviceId, dbPath); @@ -392,7 +405,7 @@ export class FileTransfer extends Service { this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); }); - + // Save database to a file const file = await this.getFile(source.database.location, socket); Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); @@ -401,9 +414,9 @@ export class FileTransfer extends Service { Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); this.emit('dbDownloaded', deviceId, dbPath); } - + } - + /* getDbPath(dbSourceName?: string) { if (!this.sources.size) From 85c7ca9e0c598feb11bc77d3404dac788de29e0a Mon Sep 17 00:00:00 2001 From: Chris Le Date: Tue, 11 Oct 2022 21:57:35 -0700 Subject: [PATCH 027/146] Added comments. --- services/FileTransfer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index cde61b7..1809c34 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -230,8 +230,8 @@ export class FileTransfer extends Service { * >> USE WITH CAUTION! << * * Downloading seems eat a lot of CPU on the device and might cause it to - * be unresponsive while downloading. Also, it seems that transfers top out - * at around 10MB/sec. + * be unresponsive while downloading big files. Also, it seems that transfers + * top out at around 10MB/sec. * * @param p_location Location of the file on the device. * @param socket Socket. From fd51846cd0549177b1dde338cd90ebab9fe954a1 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 12 Oct 2022 16:16:06 -0400 Subject: [PATCH 028/146] download works hardcoded --- cli/index.ts | 68 ++++++++++++++++++++++++++++++++----- network/StageLinqDevices.ts | 44 +++++++++++++++++++----- services/FileTransfer.ts | 16 ++++++--- services/Service.ts | 5 ++- services/StateMap.ts | 5 ++- 5 files changed, 113 insertions(+), 25 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index f32d172..fc27362 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -2,9 +2,9 @@ import { ActingAsDevice, PlayerStatus, StageLinqOptions, Services } from '../typ import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; -//import * as fs from 'fs'; -//import * as os from 'os'; -//import * as path from 'path'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; require('console-stamp')(console, { @@ -52,6 +52,42 @@ async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: st } } */ +//1e6c417a-b674-4c87-b4aa-fb7ad2298976 +//6b0d659c-dffa-464e-8580-54fe3e21770b +//3536b2f3-c80a-4322-89d4-2aceccb60cfb +//d3fea2b3-a934-47c9-a9a0-1a242db624fe + +let fltxBlock = false; + +async function downloadFileTest(stageLinq: StageLinq, trackNetworkPath: string, dest: string) { + + await sleep(2000); + + while (fltxBlock === true) { + await sleep(250); + } + + const deviceId = trackNetworkPath.substring(6,42); + //const deviceId = '1e6c417a-b674-4c87-b4aa-fb7ad2298976'; + const trackPath = trackNetworkPath.substring(42); + const fileName = trackNetworkPath.split('/').pop(); + console.log(fileName); + dest += fileName + console.log(dest); + //const dest = '../' + try { + const data = await stageLinq.devices.downloadFile(deviceId, trackPath); + if (data) { + fs.writeFileSync(dest, Buffer.from(data)); + console.log(`Downloaded ${trackPath} from ${deviceId} to ${dest}`); + fltxBlock = false; + } + } catch(e) { + console.error(`Could not download ${trackPath} Error: ${e}`); + } + +} + async function main() { @@ -151,12 +187,26 @@ async function main() { }); // Fires when StageLinq receives messages from a device. - stageLinq.devices.on('message', (connectionInfo, data) => { - const msg = data.message.json - ? JSON.stringify(data.message.json) - : data.message.interval; - console.debug(`${connectionInfo.address}:${connectionInfo.port} ` + - `${data.message.name} => ${msg}`); + stageLinq.devices.on('message', ( async (data) => { + //const msg = data.message.json + // ? JSON.stringify(data.message.json) + // : data.message.interval; + //console.debug(`${socket.remoteAddress}:${socket.remotePort} ` + + // `${data.message.name} => ${msg}`); + + //console.dir(data); + + if (data && data.socket && data.message && data.message.json ) { //&& typeof data.message !== "object") { + //console.debug(`${data.socket.remoteAddress}:${data.socket.remotePort} ${data.message.name} ${JSON.stringify(data.message.json)}`); + if (data.message.name.substring(data.message.name.length -16,data.message.name.length) === "TrackNetworkPath" && data.message.json.string !== "") { + //console.log(data.message.json.string); + //console.log(data.message.json.string.substring(6,42),data.message.json.string.substring(42)); + // await downloadFileTest(stageLinq, data.message.json.string, path.resolve(os.tmpdir())); + } + } + + //if (data.message.name.substring()) {} + }); // Fires when the state of a device has changed. diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index e99563a..108dc29 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -12,7 +12,9 @@ import { //import { Logger } from '../LogEmitter'; import { Databases } from '../Databases'; import * as services from '../services'; -import { AddressInfo } from 'net'; +import { AddressInfo, Socket } from 'net'; +import { assert } from 'console'; +import { Logger } from '../LogEmitter'; /* interface StageLinqDevice { @@ -26,7 +28,7 @@ export declare interface StageLinqDevices { on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; - on(event: 'message', listener: (connectionInfo: ConnectionInfo, message: ServiceMessage) => void): this; + on(event: 'message', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; } @@ -57,9 +59,25 @@ export class StageLinqDevices extends EventEmitter { * @returns */ async initialize(): Promise { - await this.startServiceListener(StateMap); - await this.startServiceListener(FileTransfer); + const stateMap = await this.startServiceListener(StateMap); + const fileTransfer = await this.startServiceListener(FileTransfer); const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. + + stateMap.on('message', (data) => { + this.emit('message', data) + }); + + fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { + Logger.debug(`received ${sourcename} ${dbPath}`); + const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' + const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') + + //const trackPath = trackNetworkPath.substring(42); + const fileName = trackNetworkPath.split('/').pop(); + + const buff = this.downloadFile(deviceId.toString(), trackNetworkPath) + }); + return directory.serverInfo; } @@ -89,13 +107,21 @@ export class StageLinqDevices extends EventEmitter { return this._databases; } - /* - async downloadFile(deviceId: string, path: string) { - const device = this.devices.get(deviceId); - const file = await device.fileTransferService.getFile(path); + + async downloadFile(_deviceId: string, path: string) { + const service = this.services["FileTransfer"] as FileTransfer + assert(service); + const deviceId = new DeviceId(_deviceId); + + //Logger.debug(service.peerSockets.entries()); + const socket = service._peerSockets[deviceId.toString()]; + //Logger.debug(socket); + + //const file = await service.getFile(`net://${deviceId}${path}`,socket) + const file = await service.getFile(path,socket); return file; } - */ + //////////////////////////////////////////////////////////////////////////// diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 1809c34..1a716c6 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -44,6 +44,7 @@ interface FileTransferProgress { export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (progress: FileTransferProgress) => void): this; + on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; } export class FileTransfer extends Service { @@ -127,6 +128,7 @@ export class FileTransfer extends Service { p_ctx.seek(49); const size = p_ctx.readUInt32(); + //Logger.debug(size); return { id: messageId, message: { @@ -152,6 +154,7 @@ export class FileTransfer extends Service { const filesize = p_ctx.readUInt32(); const id = p_ctx.readUInt32(); + //Logger.debug(id, filesize); return { id: messageId, socket: socket, @@ -168,7 +171,8 @@ export class FileTransfer extends Service { const chunksize = p_ctx.readUInt32(); assert(chunksize === p_ctx.sizeLeft()); assert(p_ctx.sizeLeft() <= CHUNK_SIZE); - + + //Logger.debug(offset, chunksize); return { id: messageId, socket: socket, @@ -183,10 +187,10 @@ export class FileTransfer extends Service { case MessageId.Unknown0: { //sizeLeft() of 6 means its not an offline analyzer //FIXME actually parse these messages - if (p_ctx.sizeLeft() >= 5) { + //if (p_ctx.sizeLeft() >= 5) { Logger.debug(`requesting sources from `, deviceId.toString()); this.requestSources(socket); - } + //} return { id: messageId, @@ -219,7 +223,7 @@ export class FileTransfer extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { - assert(this.receivedFile.sizeLeft() >= p_data.message.size); + //assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); } } @@ -242,11 +246,12 @@ export class FileTransfer extends Service { assert(this.receivedFile === null); await this.requestFileTransferId(p_location, socket); const txinfo = await this.waitForMessage(MessageId.FileTransferId); - + console.dir(txinfo); if (txinfo) { this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); const total = parseInt(txinfo.size); + //Logger.debug(totalChunks, total) if (total === 0) { Logger.warn(`${p_location} doesn't exist or is a streaming file`); @@ -269,6 +274,7 @@ export class FileTransfer extends Service { bytesDownloaded: bytesDownloaded, percentComplete: percentComplete }) + //Logger.info(`sizeleft ${this.receivedFile.sizeLeft()} total ${txinfo.size} total ${total}`); Logger.info(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } diff --git a/services/Service.ts b/services/Service.ts index 7bd10e3..fa612f6 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -56,7 +56,8 @@ export abstract class Service extends EventEmitter { public serverStatus: boolean = false; protected peerDeviceIds: Record = {} - protected peerSockets: Map = new Map(); + public peerSockets: Map = new Map(); + public _peerSockets: Record = {}; protected peerBuffers: PeerBuffers = {}; private msgId: number = 0; //only used fro debugging @@ -139,6 +140,8 @@ export abstract class Service extends EventEmitter { ctx.readUInt16(); //read port, though we don't need it this.peerDeviceIds[ipAddressPort] = deviceId; + //this.peerSockets.set(deviceId,socket); + this._peerSockets[deviceId.toString()] = socket; Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); diff --git a/services/StateMap.ts b/services/StateMap.ts index 1a7e4a3..786d853 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -95,6 +95,7 @@ const MAGIC_MARKER_JSON = 0x00000000; export interface StateData { name?: string; client?: string; + socket?: Socket; json?: { type: number; string?: string; @@ -156,6 +157,7 @@ export class StateMap extends Service { client: [socket.remoteAddress,socket.remotePort].join(":"), json: json, }, + socket: socket, }; } catch(err) { Logger.error(this.name, jsonString, err); @@ -171,6 +173,7 @@ export class StateMap extends Service { name: name, client: [socket.remoteAddress,socket.remotePort].join(":"), interval: interval, + socket: socket, }, }; } @@ -184,7 +187,7 @@ export class StateMap extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.message.json) { - Logger.info( + Logger.silly( `${p_data.message.client} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` From aebcb019f24c3158b9dfc3ada7a74237cb82136c Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 12 Oct 2022 17:06:22 -0400 Subject: [PATCH 029/146] small fixes --- cli/index.ts | 23 +++++++++++++---------- network/StageLinqDevices.ts | 21 +++++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index fc27362..f09c6f2 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -57,6 +57,7 @@ async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: st //3536b2f3-c80a-4322-89d4-2aceccb60cfb //d3fea2b3-a934-47c9-a9a0-1a242db624fe +/* let fltxBlock = false; async function downloadFileTest(stageLinq: StageLinq, trackNetworkPath: string, dest: string) { @@ -87,6 +88,7 @@ async function downloadFileTest(stageLinq: StageLinq, trackNetworkPath: string, } } +*/ async function main() { @@ -187,27 +189,28 @@ async function main() { }); // Fires when StageLinq receives messages from a device. - stageLinq.devices.on('message', ( async (data) => { - //const msg = data.message.json - // ? JSON.stringify(data.message.json) - // : data.message.interval; - //console.debug(`${socket.remoteAddress}:${socket.remotePort} ` + - // `${data.message.name} => ${msg}`); + stageLinq.devices.on('message', async (data) => { + const msg = data.message.json + ? JSON.stringify(data.message.json) + : data.message.interval; + console.debug(`${data.message.socket.remoteAddress}:${data.message.socket.remotePort} ` + + `${data.message.name} => ${msg}`); //console.dir(data); - if (data && data.socket && data.message && data.message.json ) { //&& typeof data.message !== "object") { + //if (data && data.socket && data.message && data.message.json ) { //&& typeof data.message !== "object") { //console.debug(`${data.socket.remoteAddress}:${data.socket.remotePort} ${data.message.name} ${JSON.stringify(data.message.json)}`); - if (data.message.name.substring(data.message.name.length -16,data.message.name.length) === "TrackNetworkPath" && data.message.json.string !== "") { + // if (data.message.name.substring(data.message.name.length -16,data.message.name.length) === "TrackNetworkPath" && data.message.json.string !== "") { //console.log(data.message.json.string); //console.log(data.message.json.string.substring(6,42),data.message.json.string.substring(42)); // await downloadFileTest(stageLinq, data.message.json.string, path.resolve(os.tmpdir())); - } - } + //} + // } //if (data.message.name.substring()) {} }); + // Fires when the state of a device has changed. stageLinq.devices.on('stateChanged', (status) => { diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts index 108dc29..83d01df 100644 --- a/network/StageLinqDevices.ts +++ b/network/StageLinqDevices.ts @@ -23,6 +23,15 @@ interface StageLinqDevice { }; */ +async function testDownloadFile(stageLinq: InstanceType) { + const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' + const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') + + const fileName = trackNetworkPath.split('/').pop(); + + const buff = stageLinq.downloadFile(deviceId.toString(), trackNetworkPath) +} + export declare interface StageLinqDevices { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; @@ -64,18 +73,14 @@ export class StageLinqDevices extends EventEmitter { const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. stateMap.on('message', (data) => { - this.emit('message', data) + if (data && data.messsage && data.message.socket) { + this.emit('message', data) + } }); fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { Logger.debug(`received ${sourcename} ${dbPath}`); - const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' - const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') - - //const trackPath = trackNetworkPath.substring(42); - const fileName = trackNetworkPath.split('/').pop(); - - const buff = this.downloadFile(deviceId.toString(), trackNetworkPath) + testDownloadFile(this); }); return directory.serverInfo; From 62261cbfcaecb0402db68c75a17bec1ad85bd102 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 12 Oct 2022 22:44:31 -0400 Subject: [PATCH 030/146] add Int32 to WriteContext --- utils/WriteContext.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utils/WriteContext.ts b/utils/WriteContext.ts index 91467ec..eac797e 100644 --- a/utils/WriteContext.ts +++ b/utils/WriteContext.ts @@ -88,6 +88,13 @@ export class WriteContext extends Context { this.pos += 4; return 4; } + + writeInt32(p_value: number): number { + this.checkSize(4); + new DataView(this.buffer).setInt32(this.pos, p_value, this.littleEndian); + this.pos += 4; + return 4; + } writeUInt16(p_value: number): number { this.checkSize(2); From d7a43e8d14674517c4b596e22f189096ee211e09 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 12 Oct 2022 22:47:38 -0400 Subject: [PATCH 031/146] Refactor StageLinq, Add Player, Fix emitters --- .gitignore | 1 + StageLinq/index.ts | 162 +++++++++++++++++++++++---- cli/index.ts | 29 +++-- network/StageLinqDevices.ts | 218 ------------------------------------ network/index.ts | 2 +- services/Service.ts | 9 +- 6 files changed, 164 insertions(+), 257 deletions(-) delete mode 100644 network/StageLinqDevices.ts diff --git a/.gitignore b/.gitignore index b016af9..ec97b8f 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,4 @@ log.txt .vscode/settings.json version log.txt +.DS_Store diff --git a/StageLinq/index.ts b/StageLinq/index.ts index e76a8c5..6790620 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,9 +1,23 @@ import { announce, createDiscoveryMessage, StageLinqListener, unannounce } from '../network'; +import { Player } from '../devices/Player'; import { EventEmitter } from 'events'; -import { StageLinqDevices } from '../network/StageLinqDevices'; import { Logger } from '../LogEmitter'; -import { Action, ActingAsDevice, StageLinqOptions, DeviceId } from '../types'; -//import { sleep } from '../utils'; +import { Action, ActingAsDevice, StageLinqOptions, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; +import { + FileTransfer, + StateData, + StateMap, + //TimeSynchronization, + Directory, +} from '../services'; + +import { Databases } from '../Databases'; +import * as services from '../services'; +import { AddressInfo, Socket } from 'net'; +import { assert } from 'console'; + + + const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -11,20 +25,38 @@ const DEFAULT_OPTIONS: StageLinqOptions = { downloadDbSources: true, }; +export declare interface StageLinq { + on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; + on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; + on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; + on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; + on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; + on(event: 'message', listener: ( message: ServiceMessage) => void): this; + on(event: 'ready', listener: () => void): this; +} + /** * Main StageLinq class. */ export class StageLinq extends EventEmitter { - devices: StageLinqDevices; + //devices: StageLinqDevices; logger: Logger = Logger.instance; - options: StageLinqOptions; + + public directoryPort: number = 0; + private services: Record> = {}; + public readonly _services: Map> = new Map(); + private _databases: Databases; + public peers: Map = new Map(); + public _peers: Record = {}; + + public options: StageLinqOptions; private listener: StageLinqListener; - constructor(options?: StageLinqOptions) { + constructor(options: StageLinqOptions) { super(); - this.options = { ...DEFAULT_OPTIONS, ...options }; - this.devices = new StageLinqDevices(this.options); + this.options = options; + this._databases = new Databases(); } /** @@ -32,22 +64,28 @@ export class StageLinq extends EventEmitter { */ async connect() { this.listener = new StageLinqListener(); - const address = await this.devices.initialize(); - const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); - - msg.port = address.port; - await announce(msg); this.listener.listenForDevices(async (connectionInfo) => { const deviceId = new DeviceId(connectionInfo.token); - this.devices._peers[connectionInfo.address] = deviceId; + this._peers[connectionInfo.address] = deviceId; if ( - !this.devices.peers.has(deviceId.toString()) || - this.devices.peers.get(deviceId.toString()).port !== connectionInfo.port + !this.peers.has(deviceId.toString()) || + this.peers.get(deviceId.toString()).port !== connectionInfo.port ) { - this.devices.peers.set(deviceId.toString(), connectionInfo); + this.peers.set(deviceId.toString(), connectionInfo); } }); + + + //set up seriveces + await this.setupFileTransfer(); + await this.setupStateMap(); + const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. + + //create & send discovery messages + const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); + msg.port = directory.serverInfo.port; + await announce(msg); } /** @@ -56,7 +94,11 @@ export class StageLinq extends EventEmitter { async disconnect() { try { Logger.warn('disconnecting'); - this.devices.disconnectAll(); + this._services.forEach((service) => { + console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); + service.closeServer(); + }); + const msg = createDiscoveryMessage(Action.Logout, this.options.actingAs); await unannounce(msg); } catch (e) { @@ -64,7 +106,89 @@ export class StageLinq extends EventEmitter { } } + + async startServiceListener>(ctor: { + new (parent: InstanceType): T; + }): Promise { + const serviceName = ctor.name; + const service = new ctor(this); + + await service.listen(); + this._services.set(serviceName, service); + this.services[serviceName] = service; + return service; + } + + + private async setupFileTransfer() { + const fileTransfer = await this.startServiceListener(FileTransfer); + + fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { + Logger.debug(`received ${sourcename} ${dbPath}`); + //testDownloadFile(this); + }); + } + + + private async setupStateMap() { + // Setup StateMap + //Logger.debug(`Setting up stateMap for ${connectionInfo.address}`); + + const stateMap = await this.startServiceListener(StateMap); + + stateMap.on('message', (data) => { + this.emit('message', data) + }); + + // Setup Player + stateMap.on('newStateMapDevice', (deviceId, socket) => { + const player = new Player({ + stateMap: stateMap, + address: socket.remoteAddress, + port: socket.remotePort, + deviceId: deviceId.toString(), + }); + + player.on('trackLoaded', (status) => { + this.emit('trackLoaded', status); + }); + + player.on('stateChanged', (status) => { + this.emit('stateChanged', status); + }); + + player.on('nowPlaying', (status) => { + this.emit('nowPlaying', status); + }); + }) + } + + get databases() { - return this.devices.databases; + return this._databases; } + + + async downloadFile(_deviceId: string, path: string) { + const service = this.services["FileTransfer"] as FileTransfer + assert(service); + const deviceId = new DeviceId(_deviceId); + + //Logger.debug(service.peerSockets.entries()); + const socket = service._peerSockets[deviceId.toString()]; + //Logger.debug(socket); + + //const file = await service.getFile(`net://${deviceId}${path}`,socket) + const file = await service.getFile(path,socket); + return file; + } +} + +/* +async function testDownloadFile(stageLinq: InstanceType) { + const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' + const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') + const fileName = trackNetworkPath.split('/').pop(); + const buff = stageLinq.downloadFile(deviceId.toString(), trackNetworkPath) } +*/ \ No newline at end of file diff --git a/cli/index.ts b/cli/index.ts index f09c6f2..8b7ad35 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -52,10 +52,6 @@ async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: st } } */ -//1e6c417a-b674-4c87-b4aa-fb7ad2298976 -//6b0d659c-dffa-464e-8580-54fe3e21770b -//3536b2f3-c80a-4322-89d4-2aceccb60cfb -//d3fea2b3-a934-47c9-a9a0-1a242db624fe /* let fltxBlock = false; @@ -143,7 +139,7 @@ async function main() { // }); // Fires when we connect to any device - stageLinq.devices.on('connected', async (connectionInfo) => { + stageLinq.on('connected', async (connectionInfo) => { console.log(`Successfully connected to ${connectionInfo.software.name}`); if (stageLinq.options.downloadDbSources) { @@ -166,12 +162,12 @@ async function main() { }); // Fires when StageLinq and all devices are ready to use. - stageLinq.devices.on('ready', () => { + stageLinq.on('ready', () => { console.log(`StageLinq is ready!`); }); // Fires when a new track is loaded on to a player. - stageLinq.devices.on('trackLoaded', async (status) => { + stageLinq.on('trackLoaded', async (status) => { // Example of how to connect to the database using this library's // implementation of BetterSqlite3 to get additional information. @@ -184,18 +180,21 @@ async function main() { }); // Fires when a track has started playing. - stageLinq.devices.on('nowPlaying', (status) => { + stageLinq.on('nowPlaying', (status) => { console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) }); // Fires when StageLinq receives messages from a device. - stageLinq.devices.on('message', async (data) => { + stageLinq.on('message', (data) => { + if (data.message.json) { const msg = data.message.json - ? JSON.stringify(data.message.json) - : data.message.interval; - console.debug(`${data.message.socket.remoteAddress}:${data.message.socket.remotePort} ` + - `${data.message.name} => ${msg}`); - + ? JSON.stringify(data.message.json) + : data.message.interval; + console.debug(`${data.message.deviceId.toString()} ` + + `${data.message.name} => ${msg}`); + + } + //console.dir(data); //if (data && data.socket && data.message && data.message.json ) { //&& typeof data.message !== "object") { @@ -213,7 +212,7 @@ async function main() { // Fires when the state of a device has changed. - stageLinq.devices.on('stateChanged', (status) => { + stageLinq.on('stateChanged', (status) => { console.log(`Updating state [${status.deck}]`, status) }); diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts deleted file mode 100644 index 83d01df..0000000 --- a/network/StageLinqDevices.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { ConnectionInfo, PlayerStatus, ServiceMessage, DeviceId, StageLinqOptions } from '../types'; -import { EventEmitter } from 'events'; -//import { Player } from '../devices/Player'; -//import { sleep } from '../utils'; -import { - FileTransfer, - StateData, - StateMap, - //TimeSynchronization, - Directory, -} from '../services'; -//import { Logger } from '../LogEmitter'; -import { Databases } from '../Databases'; -import * as services from '../services'; -import { AddressInfo, Socket } from 'net'; -import { assert } from 'console'; -import { Logger } from '../LogEmitter'; - -/* -interface StageLinqDevice { - //networkDevice: NetworkDevice; - fileTransferService: FileTransfer; -}; -*/ - -async function testDownloadFile(stageLinq: InstanceType) { - const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' - const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') - - const fileName = trackNetworkPath.split('/').pop(); - - const buff = stageLinq.downloadFile(deviceId.toString(), trackNetworkPath) -} - -export declare interface StageLinqDevices { - on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; - on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; - on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; - on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; - on(event: 'message', listener: ( message: ServiceMessage) => void): this; - on(event: 'ready', listener: () => void): this; -} - -////////////////////////////////////////////////////////////////////////////// - -/** - * Handle connecting and disconnecting from discovered devices on the - * StageLinq network. - */ -export class StageLinqDevices extends EventEmitter { - public directoryPort: number = 0; - private services: Record> = {}; - public readonly _services: Map> = new Map(); - private _databases: Databases; - public peers: Map = new Map(); - public _peers: Record = {}; - - protected options: StageLinqOptions; - - constructor(options: StageLinqOptions) { - super(); - this.options = options; - this._databases = new Databases(); - } - - /** - * Initialize the StageLinq listener. - * @returns - */ - async initialize(): Promise { - const stateMap = await this.startServiceListener(StateMap); - const fileTransfer = await this.startServiceListener(FileTransfer); - const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. - - stateMap.on('message', (data) => { - if (data && data.messsage && data.message.socket) { - this.emit('message', data) - } - }); - - fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { - Logger.debug(`received ${sourcename} ${dbPath}`); - testDownloadFile(this); - }); - - return directory.serverInfo; - } - - async startServiceListener>(ctor: { - new (parent: InstanceType): T; - }): Promise { - const serviceName = ctor.name; - const service = new ctor(this); - - await service.listen(); - this._services.set(serviceName, service); - this.services[serviceName] = service; - return service; - } - - /** - * Disconnect from all connected devices - */ - async disconnectAll() { - this._services.forEach((service) => { - console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); - service.closeServer(); - }); - } - - get databases() { - return this._databases; - } - - - async downloadFile(_deviceId: string, path: string) { - const service = this.services["FileTransfer"] as FileTransfer - assert(service); - const deviceId = new DeviceId(_deviceId); - - //Logger.debug(service.peerSockets.entries()); - const socket = service._peerSockets[deviceId.toString()]; - //Logger.debug(socket); - - //const file = await service.getFile(`net://${deviceId}${path}`,socket) - const file = await service.getFile(path,socket); - return file; - } - - - //////////////////////////////////////////////////////////////////////////// - - /** - * Setup stateMap. - * - * @param connectionInfo Connection info - * @param networkDevice Network device - */ - - /* - private async setupStateMap(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { - // Setup StateMap - Logger.debug(`Setting up stateMap for ${connectionInfo.address}`); - - const stateMap = await networkDevice.connectToService(StateMap); - stateMap.on('message', (data) => { - this.emit('message', connectionInfo, data) - }); - - // Setup Player - const player = new Player({ - stateMap: stateMap, - address: connectionInfo.address, - port: connectionInfo.port, - deviceId: this.sourceId(connectionInfo) - }); - - player.on('trackLoaded', (status) => { - this.emit('trackLoaded', status); - }); - - player.on('stateChanged', (status) => { - this.emit('stateChanged', status); - }); - - player.on('nowPlaying', (status) => { - this.emit('nowPlaying', status); - }); - } - - private deviceId(device: ConnectionInfo) { - return `${device.address}:${device.port}:` + - `[${device.source}/${device.software.name}]`; - } - - private isConnecting(device: ConnectionInfo) { - return this.discoveryStatus.get(this.deviceId(device)) - === ConnectionStatus.CONNECTING; - } - - private isConnected(device: ConnectionInfo) { - return this.discoveryStatus.get(this.deviceId(device)) - === ConnectionStatus.CONNECTED; - } - - private isFailed(device: ConnectionInfo) { - return this.discoveryStatus.get(this.deviceId(device)) - === ConnectionStatus.FAILED; - } - - private isIgnored(device: ConnectionInfo) { - return ( - device.source === this.options.actingAs.source - || device.software.name === 'OfflineAnalyzer' - || /^SoundSwitch/i.test(device.software.name) - || /^Resolume/i.test(device.software.name) - || device.software.name === 'JM08' // Ignore X1800/X1850 mixers - || device.software.name === 'SSS0' // Ignore SoundSwitchEmbedded on players - ) - } - - private isDeviceSeen(device: ConnectionInfo) { - return this.discoveryStatus.has(device.address); - } - - private showDiscoveryStatus(device: ConnectionInfo) { - let msg = `Discovery: ${this.deviceId(device)} `; - - if (!this.isDeviceSeen) return msg += '(NEW)'; - if (this.isIgnored(device)) return msg += '(IGNORED)'; - return msg += ( - this.isConnecting(device) ? '(CONNECTING)' - : this.isConnected(device) ? '(CONNECTED)' - : this.isFailed(device) ? '(FAILED)' - : '(NEW)'); - } -*/ -} diff --git a/network/index.ts b/network/index.ts index fc9b289..cafe9f7 100644 --- a/network/index.ts +++ b/network/index.ts @@ -1,4 +1,4 @@ export * from './announce'; //export * from './NetworkDevice'; -export * from './StageLinqDevices'; +//export * from './StageLinqDevices'; export * from './StageLinqListener'; \ No newline at end of file diff --git a/services/Service.ts b/services/Service.ts index fa612f6..daec9b1 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,13 +1,14 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { MessageId, MESSAGE_TIMEOUT, ConnectionInfo, DeviceId } from '../types'; -import { StageLinqDevices } from '../network'; +//import { StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; import type { ServiceMessage, IpAddressPort } from '../types'; +import { StageLinq } from '../StageLinq'; export declare interface ServiceDevice { on(event: 'listening', listener: (address: AddressInfo) => void): this; @@ -49,7 +50,7 @@ export abstract class Service extends EventEmitter { public readonly name: string = "Service"; protected isBufferedService: boolean = true; - protected parent: InstanceType; + protected parent: InstanceType; protected server: Server = null; public serverInfo: AddressInfo; @@ -62,7 +63,7 @@ export abstract class Service extends EventEmitter { private msgId: number = 0; //only used fro debugging - constructor(p_parent:InstanceType) { + constructor(p_parent:InstanceType) { super(); this.parent = p_parent; } @@ -147,7 +148,7 @@ export abstract class Service extends EventEmitter { const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket); this.messageHandler(parsedData); - this.emit('message', parsedData); + //this.emit('message', parsedData); } try { From 86cd81b841b4adb3519fd3322efa1a304b2144ca Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 12 Oct 2022 22:48:00 -0400 Subject: [PATCH 032/146] Fix sockets in StateData --- services/StateMap.ts | 70 +++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/services/StateMap.ts b/services/StateMap.ts index 786d853..e1cff01 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -10,9 +10,25 @@ import { Service } from './Service'; import type { ServiceMessage, DeviceId } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; - +import { sleep } from '../utils'; + + +export const StatesMixer = [ + StageLinqValue.MixerCH1faderPosition, + StageLinqValue.MixerCH2faderPosition, + StageLinqValue.MixerCH3faderPosition, + StageLinqValue.MixerCH4faderPosition, + StageLinqValue.MixerCrossfaderPosition, + StageLinqValue.MixerChannelAssignment1, + StageLinqValue.MixerChannelAssignment2, + StageLinqValue.MixerChannelAssignment3, + StageLinqValue.MixerChannelAssignment4, + StageLinqValue.MixerNumberOfChannels, +] + export const States = [ // Mixer + StageLinqValue.MixerCH1faderPosition, StageLinqValue.MixerCH2faderPosition, StageLinqValue.MixerCH3faderPosition, @@ -23,7 +39,6 @@ export const States = [ StageLinqValue.MixerChannelAssignment3, StageLinqValue.MixerChannelAssignment4, StageLinqValue.MixerNumberOfChannels, - StageLinqValue.ClientPreferencesLayerA, StageLinqValue.ClientPreferencesPlayer, StageLinqValue.ClientPreferencesPlayerJogColorA, @@ -83,8 +98,6 @@ export const States = [ StageLinqValue.EngineDeck4TrackTrackName, StageLinqValue.EngineDeck4CurrentBPM, StageLinqValue.EngineDeck4ExternalMixerVolume, - - ]; const MAGIC_MARKER = 'smaa'; @@ -94,7 +107,7 @@ const MAGIC_MARKER_JSON = 0x00000000; export interface StateData { name?: string; - client?: string; + deviceId?: DeviceId; socket?: Socket; json?: { type: number; @@ -112,31 +125,42 @@ export class StateMap extends Service { public async subscribe(socket: Socket) { - Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); - - for (const state of States) { - await this.subscribeState(state, 0, socket); + const deviceId = this.getDeviceIdFromSocket(socket); + + while (!this.parent.peers.has(deviceId.toString())) { + await sleep(200); } - //Use this option to subscribe to ALL possible states - //Warning, it seems to make mixer not return states - // - //const keys = Object.keys(StageLinqValueObj); - //const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) - //for (const value of values) { - // await this.subscribeState(value, 0, socket); - //} + Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); + + const thisPeer = this.parent.peers.get(deviceId.toString()); + + if (thisPeer.software.name === 'JM08') { + for (const state of StatesMixer) { + await this.subscribeState(state, 0, socket); + } + } else { + for (const state of States) { + await this.subscribeState(state, 0, socket); + } + //const keys = Object.keys(StageLinqValueObj); + //const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) + //for (const value of values) { + // await this.subscribeState(value, 0, socket); + //} + } } protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) this.subscribe(socket); + this.emit('newStateMapDevice', deviceId, socket) return } protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - + const deviceId = this.getDeviceIdFromSocket(socket); const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { Logger.error(assert(marker !== MAGIC_MARKER)); @@ -154,10 +178,10 @@ export class StateMap extends Service { id: MAGIC_MARKER_JSON, message: { name: name, - client: [socket.remoteAddress,socket.remotePort].join(":"), + deviceId: deviceId, json: json, + socket: socket, }, - socket: socket, }; } catch(err) { Logger.error(this.name, jsonString, err); @@ -171,9 +195,9 @@ export class StateMap extends Service { id: MAGIC_MARKER_INTERVAL, message: { name: name, - client: [socket.remoteAddress,socket.remotePort].join(":"), + deviceId: deviceId, interval: interval, - socket: socket, + socket: socket, }, }; } @@ -188,7 +212,7 @@ export class StateMap extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.message.json) { Logger.silly( - `${p_data.message.client} ${p_data.message.name} => ${ + `${p_data.message.deviceId.toString()} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` ); From 8d563b2f556c90f2a8d4dd2581e2f312c97b4e17 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 13 Oct 2022 10:39:02 -0400 Subject: [PATCH 033/146] MOV SubscribeState to setupStateMap --- StageLinq/index.ts | 12 ++++++------ services/StateMap.ts | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6790620..ecc7e77 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -13,12 +13,10 @@ import { import { Databases } from '../Databases'; import * as services from '../services'; -import { AddressInfo, Socket } from 'net'; +import { Socket } from 'net'; import { assert } from 'console'; - - const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, actingAs: ActingAsDevice.NowPlaying, @@ -53,9 +51,9 @@ export class StageLinq extends EventEmitter { private listener: StageLinqListener; - constructor(options: StageLinqOptions) { + constructor(options?: StageLinqOptions) { super(); - this.options = options; + this.options = options || DEFAULT_OPTIONS; this._databases = new Databases(); } @@ -141,7 +139,7 @@ export class StageLinq extends EventEmitter { }); // Setup Player - stateMap.on('newStateMapDevice', (deviceId, socket) => { + await stateMap.on('newStateMapDevice', (deviceId, socket) => { const player = new Player({ stateMap: stateMap, address: socket.remoteAddress, @@ -149,6 +147,8 @@ export class StageLinq extends EventEmitter { deviceId: deviceId.toString(), }); + stateMap.subscribe(socket); + player.on('trackLoaded', (status) => { this.emit('trackLoaded', status); }); diff --git a/services/StateMap.ts b/services/StateMap.ts index e1cff01..2378948 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -154,7 +154,7 @@ export class StateMap extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) - this.subscribe(socket); + //this.subscribe(socket); this.emit('newStateMapDevice', deviceId, socket) return } From ec0405ffe88d833e3802a44b0c19f89708ee3d82 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 13 Oct 2022 10:55:06 -0400 Subject: [PATCH 034/146] multithread fixes for Player --- StageLinq/index.ts | 6 ++++++ devices/Player.ts | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index ecc7e77..94f1459 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -15,6 +15,7 @@ import { Databases } from '../Databases'; import * as services from '../services'; import { Socket } from 'net'; import { assert } from 'console'; +import { sleep } from '../utils'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -147,6 +148,11 @@ export class StageLinq extends EventEmitter { deviceId: deviceId.toString(), }); + //wait for Player to setup + while (!player.ready) { + sleep(250); + } + stateMap.subscribe(socket); player.on('trackLoaded', (status) => { diff --git a/devices/Player.ts b/devices/Player.ts index 4e45831..00844f1 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -1,5 +1,5 @@ import { EventEmitter } from 'events'; -import { PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; +import { DeviceId, PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; import { PlayerMessageQueue } from './PlayerMessageQueue'; import { StateData, StateMap } from '../services'; import { Logger } from '../LogEmitter'; @@ -16,7 +16,7 @@ interface PlayerOptions { stateMap: StateMap; address: string, port: number; - deviceId: string; + deviceId: DeviceId; } interface SourceAndTrackPath { @@ -51,7 +51,8 @@ export class Player extends EventEmitter { private decks: Map = new Map(); private lastTrackNetworkPath: Map = new Map(); private queue: {[layer: string]: PlayerMessageQueue} = {}; - private deviceId: string; + private deviceId: DeviceId; + public readonly ready: boolean = false; /** * Initialize a player device. @@ -71,6 +72,8 @@ export class Player extends EventEmitter { C: new PlayerMessageQueue('C').onDataReady(this.handleUpdate.bind(this)), D: new PlayerMessageQueue('D').onDataReady(this.handleUpdate.bind(this)), }; + this.ready = true; + } /** @@ -85,6 +88,9 @@ export class Player extends EventEmitter { const name = message.name; const json = message.json as any; + //check if message is for this Player + if(message.deviceId.toString() !== this.deviceId.toString()) return; + if (/Client\/Preferences\/Player$/.test(name)) { this.player = parseInt(json.string); return; @@ -172,7 +178,7 @@ export class Player extends EventEmitter { port: this.port, masterTempo: this.masterTempo, masterStatus: this.masterStatus, - deviceId: `net://${this.deviceId}`, + deviceId: `net://${this.deviceId.toString()}`, ...result }; @@ -187,7 +193,7 @@ export class Player extends EventEmitter { // Tracks from streaming sources won't be in the database. currentState.dbSourceName = ''; } else { - currentState.dbSourceName = `net://${this.deviceId}/${currentState.source}`; + currentState.dbSourceName = `net://${this.deviceId.toString()}/${currentState.source}`; } // If a song is loaded and we have a location emit the trackLoaded event. From 0288fff3548c32ce8866cdcf9b3730b9109889e3 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 16:28:20 -0400 Subject: [PATCH 035/146] Refactor announce and SLListener to Discovery --- .gitignore | 1 + StageLinq/index.ts | 43 +- network/Discovery.ts | 181 +++++++ network/StageLinqListener.ts | 51 -- network/announce.ts | 135 ----- network/index.ts | 5 +- package-lock.json | 957 ++++++++++++++++++++++++++++++++++- services/Directory.ts | 2 +- services/StateMap.ts | 5 +- 9 files changed, 1150 insertions(+), 230 deletions(-) create mode 100644 network/Discovery.ts delete mode 100644 network/StageLinqListener.ts delete mode 100644 network/announce.ts diff --git a/.gitignore b/.gitignore index ec97b8f..db2751f 100644 --- a/.gitignore +++ b/.gitignore @@ -109,3 +109,4 @@ log.txt version log.txt .DS_Store +package-lock.json diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 94f1459..1c5a47b 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,8 +1,8 @@ -import { announce, createDiscoveryMessage, StageLinqListener, unannounce } from '../network'; +import { Discovery } from '../network'; import { Player } from '../devices/Player'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { Action, ActingAsDevice, StageLinqOptions, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; +import { ActingAsDevice, StageLinqOptions, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; import { FileTransfer, StateData, @@ -38,19 +38,19 @@ export declare interface StageLinq { * Main StageLinq class. */ export class StageLinq extends EventEmitter { - //devices: StageLinqDevices; - logger: Logger = Logger.instance; + + public logger: Logger = Logger.instance; public directoryPort: number = 0; private services: Record> = {}; public readonly _services: Map> = new Map(); private _databases: Databases; - public peers: Map = new Map(); - public _peers: Record = {}; + //public peers: Map = new Map(); + //public _peers: Record = {}; public options: StageLinqOptions; - private listener: StageLinqListener; + public discovery: Discovery; constructor(options?: StageLinqOptions) { super(); @@ -62,29 +62,16 @@ export class StageLinq extends EventEmitter { * Connect to the StageLinq network. */ async connect() { - this.listener = new StageLinqListener(); - this.listener.listenForDevices(async (connectionInfo) => { - const deviceId = new DeviceId(connectionInfo.token); - this._peers[connectionInfo.address] = deviceId; - - if ( - !this.peers.has(deviceId.toString()) || - this.peers.get(deviceId.toString()).port !== connectionInfo.port - ) { - this.peers.set(deviceId.toString(), connectionInfo); - } - }); - - + this.discovery = new Discovery(); + await this.discovery.init(); + + //set up seriveces - await this.setupFileTransfer(); + //await this.setupFileTransfer(); await this.setupStateMap(); const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. - //create & send discovery messages - const msg = createDiscoveryMessage(Action.Login, this.options.actingAs); - msg.port = directory.serverInfo.port; - await announce(msg); + await this.discovery.announce(directory.serverInfo.port); } /** @@ -98,8 +85,8 @@ export class StageLinq extends EventEmitter { service.closeServer(); }); - const msg = createDiscoveryMessage(Action.Logout, this.options.actingAs); - await unannounce(msg); + //const msg = await this.discovery.createDiscoveryMessage(Action.Logout, this.options.actingAs); + await this.discovery.unannounce(); } catch (e) { throw new Error(e); } diff --git a/network/Discovery.ts b/network/Discovery.ts new file mode 100644 index 0000000..4787850 --- /dev/null +++ b/network/Discovery.ts @@ -0,0 +1,181 @@ +import { ConnectionInfo, DiscoveryMessage, Action, ActingAsDevice, IpAddress, DeviceId, } from '../types'; +import { Socket, RemoteInfo } from 'dgram'; +import * as UDPSocket from 'dgram'; +import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; +import { ReadContext } from '../utils/ReadContext'; +import { strict as assert } from 'assert'; +import { sleep, WriteContext } from '../utils'; +import { networkInterfaces } from 'os'; +import { subnet, SubnetInfo } from 'ip'; +import { Logger } from '../LogEmitter'; + + +export interface DiscoveryMessageOptions { + name: string; + version: string; + source: string; + token: Uint8Array; //FIXME make this DeviceId + port?: number +}; + +type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; + +/** + * Continuously listens for devices to announce themselves. When they do, + * execute a callback. + */ +export class Discovery { + private socket: Socket; + private address: IpAddress; + private a_address: IpAddress; + public peers: Map = new Map(); + + private announceTimer: NodeJS.Timer; + + async init() { + await this.listenForDevices( (connectionInfo) => { + const deviceId = new DeviceId(connectionInfo.token) + this.peers.set(deviceId.toString(), connectionInfo); + }); + } + + + async announce(port: number) { + assert(this.socket); + this.socket.setBroadcast(true); + + let discoveryMessage = this.createDiscoveryMessage(Action.Login, ActingAsDevice.NowPlaying, port); + + while (!this.address) { + await sleep(250); + } + + const ips = this.findBroadcastIPs() + + const address = ips.filter(ip => { + return ip.contains(this.address) === true + }); + + this.a_address = address.shift().broadcastAddress + const msg = this.writeDiscoveryMessage(discoveryMessage) + + const options = [msg, LISTEN_PORT,this.a_address ] + + this.broadcastMessage(this.socket, options); + Logger.debug("Announced myself"); + this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, options); + } + + + async unannounce(): Promise { + assert(this.announceTimer); + clearInterval(this.announceTimer); + this.announceTimer = null; + + let discoveryMessage = this.createDiscoveryMessage(Action.Logout, ActingAsDevice.NowPlaying); + const msg = this.writeDiscoveryMessage(discoveryMessage) + + const options = [msg, LISTEN_PORT, this.a_address ] + + await this.broadcastMessage(this.socket, options); + await this.socket.close(); + + Logger.debug("Unannounced myself"); + } + + + private async broadcastMessage(socket: Socket, options: any[]) { + socket.send(options[0],options[1], options[2]) + } + + + /** + * Listen for new devices on the network and callback when a new one is found. + * @param callback Callback when new device is discovered. + */ + + private async listenForDevices(callback: DeviceDiscoveryCallback) { + this.socket = UDPSocket.createSocket('udp4'); + this.socket.on('message', (p_announcement: Uint8Array, p_remote: RemoteInfo) => { + const ctx = new ReadContext(p_announcement.buffer, false); + const result = this.readConnectionInfo(ctx, p_remote.address); + if (!this.address) { + this.address = p_remote.address + } + assert(ctx.tell() === p_remote.size); + callback(result); + }); + this.socket.bind({ + port: LISTEN_PORT, + exclusive: false, + }); + } + + + private readConnectionInfo(p_ctx: ReadContext, p_address: string): ConnectionInfo { + const magic = p_ctx.getString(4); + if (magic !== DISCOVERY_MESSAGE_MARKER) { + return null; + } + + const result: ConnectionInfo = { + token: p_ctx.read(16), + source: p_ctx.readNetworkStringUTF16(), + action: p_ctx.readNetworkStringUTF16(), + software: { + name: p_ctx.readNetworkStringUTF16(), + version: p_ctx.readNetworkStringUTF16(), + }, + port: p_ctx.readUInt16(), + address: p_address, + }; + result.addressPort = [result.address, result.port].join(":"); + assert(p_ctx.isEOF()); + return result; + } + + + private createDiscoveryMessage(action: string, discoveryMessageOptions: DiscoveryMessageOptions, port?: number): DiscoveryMessage { + const msg: DiscoveryMessage = { + action: action, + port: port || 0, + software: { + name: discoveryMessageOptions.name, + version: discoveryMessageOptions.version + }, + source: discoveryMessageOptions.source, + token: discoveryMessageOptions.token //FIXME make this DeviceId + }; + return msg; + } + + + private writeDiscoveryMessage(p_message: DiscoveryMessage): Buffer { + const p_ctx = new WriteContext(); + p_ctx.writeFixedSizedString(DISCOVERY_MESSAGE_MARKER); + p_ctx.write(p_message.token); + p_ctx.writeNetworkStringUTF16(p_message.source); + p_ctx.writeNetworkStringUTF16(p_message.action); + p_ctx.writeNetworkStringUTF16(p_message.software.name); + p_ctx.writeNetworkStringUTF16(p_message.software.version); + p_ctx.writeUInt16(p_message.port); + return p_ctx.getBuffer() + } + + + private findBroadcastIPs(): SubnetInfo[] { + const interfaces = Object.values(networkInterfaces()); + assert(interfaces.length); + const ips = []; + for (const i of interfaces) { + assert(i && i.length); + for (const entry of i) { + if (entry.family === 'IPv4' && entry.internal === false) { + const info = subnet(entry.address, entry.netmask); + ips.push(info); + } + } + } + return ips; + } +} diff --git a/network/StageLinqListener.ts b/network/StageLinqListener.ts deleted file mode 100644 index 769213a..0000000 --- a/network/StageLinqListener.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ConnectionInfo } from '../types'; -import { createSocket, RemoteInfo } from 'dgram'; -import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER } from '../types/common'; -import { ReadContext } from '../utils/ReadContext'; -import { strict as assert } from 'assert'; - -type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; - -/** - * Continuously listens for devices to announce themselves. When they do, - * execute a callback. - */ -export class StageLinqListener { - - /** - * Listen for new devices on the network and callback when a new one is found. - * @param callback Callback when new device is discovered. - */ - listenForDevices(callback: DeviceDiscoveryCallback) { - const client = createSocket('udp4'); - client.on('message', (p_announcement: Uint8Array, p_remote: RemoteInfo) => { - const ctx = new ReadContext(p_announcement.buffer, false); - const result = this.readConnectionInfo(ctx, p_remote.address); - assert(ctx.tell() === p_remote.size); - callback(result); - }); - client.bind(LISTEN_PORT); - } - - private readConnectionInfo(p_ctx: ReadContext, p_address: string): ConnectionInfo { - const magic = p_ctx.getString(4); - if (magic !== DISCOVERY_MESSAGE_MARKER) { - return null; - } - - const result: ConnectionInfo = { - token: p_ctx.read(16), - source: p_ctx.readNetworkStringUTF16(), - action: p_ctx.readNetworkStringUTF16(), - software: { - name: p_ctx.readNetworkStringUTF16(), - version: p_ctx.readNetworkStringUTF16(), - }, - port: p_ctx.readUInt16(), - address: p_address, - }; - result.addressPort = [result.address, result.port].join(":"); - assert(p_ctx.isEOF()); - return result; - } -} diff --git a/network/announce.ts b/network/announce.ts deleted file mode 100644 index 6a25e92..0000000 --- a/network/announce.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { - ANNOUNCEMENT_INTERVAL, - CONNECT_TIMEOUT, - DISCOVERY_MESSAGE_MARKER, - LISTEN_PORT, -} from '../types'; -import { createSocket, Socket as UDPSocket } from 'dgram'; -import { Logger } from '../LogEmitter'; -import { networkInterfaces } from 'os'; -import { strict as assert } from 'assert'; -import { subnet } from 'ip'; -import { WriteContext } from '../utils'; -import type { DiscoveryMessage } from '../types'; - -function findBroadcastIPs(): string[] { - const interfaces = Object.values(networkInterfaces()); - assert(interfaces.length); - const ips = []; - for (const i of interfaces) { - assert(i && i.length); - for (const entry of i) { - if (entry.family === 'IPv4' && entry.internal === false) { - const info = subnet(entry.address, entry.netmask); - ips.push(info.broadcastAddress); - } - } - } - return ips; -} - -let announceClient: UDPSocket | null = null; -let announceTimer: NodeJS.Timer | null = null; - -function writeDiscoveryMessage(p_ctx: WriteContext, p_message: DiscoveryMessage): number { - let written = 0; - written += p_ctx.writeFixedSizedString(DISCOVERY_MESSAGE_MARKER); - written += p_ctx.write(p_message.token); - written += p_ctx.writeNetworkStringUTF16(p_message.source); - written += p_ctx.writeNetworkStringUTF16(p_message.action); - written += p_ctx.writeNetworkStringUTF16(p_message.software.name); - written += p_ctx.writeNetworkStringUTF16(p_message.software.version); - written += p_ctx.writeUInt16(p_message.port); - return written; -} - -async function initUdpSocket(): Promise { - return new Promise((resolve, reject) => { - try { - const client = createSocket('udp4'); - client.bind(); // we need to bind to a random port in order to enable broadcasting - client.on('listening', () => { - client.setBroadcast(true); // needs to be true in order to UDP multicast on MacOS - resolve(client); - }); - } catch (err) { - Logger.error(`Failed to create UDP socket for announcing: ${err}`); - reject(err); - } - }); -} - -async function broadcastMessage(p_message: Uint8Array): Promise { - const ips = findBroadcastIPs(); - assert(ips.length > 0, 'No broadcast IPs have been found'); - - const send = async function (p_ip: string): Promise { - return new Promise((resolve, reject) => { - setTimeout(() => { - reject(new Error('Failed to send announcement')); - }, CONNECT_TIMEOUT); - - const address = announceClient.address() - - announceClient.send(p_message, LISTEN_PORT, p_ip, () => { - Logger.silly('UDP message sent to ' + p_ip, ' from port ' + address.port); - resolve(); - }); - }); - }; - - const promises = ips.map((ip) => send(ip)); - await Promise.all(promises); -} - -export async function unannounce(message: DiscoveryMessage): Promise { - assert(announceTimer); - clearInterval(announceTimer); - announceTimer = null; - const ctx = new WriteContext(); - writeDiscoveryMessage(ctx, message); - const msg = new Uint8Array(ctx.getBuffer()); - await broadcastMessage(msg); - Logger.debug("Unannounced myself"); -} - -export async function announce(message: DiscoveryMessage): Promise { - if (announceTimer) { - Logger.log('Already has an announce timer.') - return; - } - - if (!announceClient) announceClient = await initUdpSocket(); - - const ctx = new WriteContext(); - writeDiscoveryMessage(ctx, message); - const msg = new Uint8Array(ctx.getBuffer()); - - // Immediately announce myself - await broadcastMessage(msg); - - announceTimer = setInterval(broadcastMessage, ANNOUNCEMENT_INTERVAL, msg); - Logger.debug(`Announced myself on ${message.port}`); -} - -export interface DiscoveryMessageOptions { - name: string; - version: string; - source: string; - token: Uint8Array; //FIXME make this DeviceId - port?: number -}; - -export function createDiscoveryMessage(action: string, discoveryMessageOptions: DiscoveryMessageOptions) { - const msg: DiscoveryMessage = { - action: action, - port: discoveryMessageOptions.port || 0, - software: { - name: discoveryMessageOptions.name, - version: discoveryMessageOptions.version - }, - source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token //FIXME make this DeviceId - }; - return msg; -} \ No newline at end of file diff --git a/network/index.ts b/network/index.ts index cafe9f7..c357643 100644 --- a/network/index.ts +++ b/network/index.ts @@ -1,4 +1 @@ -export * from './announce'; -//export * from './NetworkDevice'; -//export * from './StageLinqDevices'; -export * from './StageLinqListener'; \ No newline at end of file +export * from './Discovery'; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6e10457..0548df5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,947 @@ { "name": "stagelinq", "version": "1.0.7", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "stagelinq", + "version": "1.0.7", + "license": "GNU GPLv3", + "dependencies": { + "@types/filesystem": "^0.0.32", + "@types/uuid": "^8.3.4", + "better-sqlite3": "^7.5.0", + "console-stamp": "^3.0.3", + "file-type": "^16.5.3", + "ip": "^1.1.5", + "minimist": "^1.2.5", + "promise-socket": "^7.0.0" + }, + "devDependencies": { + "@types/assert": "^1.5.5", + "@types/better-sqlite3": "^7.4.0", + "@types/ip": "^1.1.0", + "@types/minimist": "^1.2.2", + "@types/node": "^16.4.0", + "prettier": "^2.5.1", + "typescript": "^4.6.2" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@types/assert": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.5.tgz", + "integrity": "sha512-myz5KWf6ox66Ou1m0KiLZpitk7W6Vly2LFRx7AXHSLeMUM6bmDIStIBk0xd7I2vXcAQEuhegdpjPuypmP5ui0Q==", + "dev": true + }, + "node_modules/@types/better-sqlite3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.4.0.tgz", + "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", + "dev": true + }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" + }, + "node_modules/@types/ip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", + "integrity": "sha512-dwNe8gOoF70VdL6WJBwVHtQmAX4RMd62M+mAB9HQFjG1/qiCLM/meRy95Pd14FYBbEDwCq7jgJs89cHpLBu4HQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.0.tgz", + "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/better-sqlite3": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", + "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.0.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/console-stamp": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.3.tgz", + "integrity": "sha512-6ltMcMEVDHb1bqb+qaVfCX7Vf3vEkfZEeKyReG1ny45Rv6YJynCcdv94j7whNVfxj/4/3Ji/QBHY6p4JI51Ucw==", + "dependencies": { + "chalk": "^4.1.1", + "dateformat": "^4.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-js": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/dateformat": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", + "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==", + "engines": { + "node": "*" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/file-type": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", + "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node_modules/node-abi": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", + "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/peek-readable": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz", + "integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/prebuild-install": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", + "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-duplex": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz", + "integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==", + "dependencies": { + "core-js": "^3.6.5", + "promise-readable": "^6.0.0", + "promise-writable": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/promise-readable": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz", + "integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==", + "dependencies": { + "core-js": "^3.6.5" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/promise-socket": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz", + "integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==", + "dependencies": { + "promise-duplex": "^6.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/promise-writable": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz", + "integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strtok3": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz", + "integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/token-types": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz", + "integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typescript": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, "dependencies": { "@tokenizer/token": { "version": "0.3.0", @@ -545,6 +1484,14 @@ "simple-concat": "^1.0.0" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -555,14 +1502,6 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/services/Directory.ts b/services/Directory.ts index 38ffac4..3598c8a 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -40,7 +40,7 @@ export class Directory extends Service { const token = ctx.read(16); const deviceId = new DeviceId(token); const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const peer = this.parent.peers.get(deviceId.toString()); + const peer = this.parent.discovery.peers.get(deviceId.toString()); this.peerDeviceIds[ipAddressPort] = deviceId; this.peerSockets.set(deviceId, socket); diff --git a/services/StateMap.ts b/services/StateMap.ts index 2378948..cc84cb4 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -127,13 +127,14 @@ export class StateMap extends Service { const deviceId = this.getDeviceIdFromSocket(socket); - while (!this.parent.peers.has(deviceId.toString())) { + //Logger.debug('checking stateMap', this.parent.discovery.peers.keys()); + while (!this.parent.discovery.peers.has(deviceId.toString())) { await sleep(200); } Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); - const thisPeer = this.parent.peers.get(deviceId.toString()); + const thisPeer = this.parent.discovery.peers.get(deviceId.toString()); if (thisPeer.software.name === 'JM08') { for (const state of StatesMixer) { From 62fb7fa51e6cbcf3f4eb339a4fd61bd08be63902 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 16:32:06 -0400 Subject: [PATCH 036/146] resest filetransfer --- StageLinq/index.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 1c5a47b..61ceedd 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -45,12 +45,10 @@ export class StageLinq extends EventEmitter { private services: Record> = {}; public readonly _services: Map> = new Map(); private _databases: Databases; - //public peers: Map = new Map(); - //public _peers: Record = {}; public options: StageLinqOptions; - public discovery: Discovery; + public discovery: Discovery = new Discovery; constructor(options?: StageLinqOptions) { super(); @@ -62,15 +60,15 @@ export class StageLinq extends EventEmitter { * Connect to the StageLinq network. */ async connect() { - this.discovery = new Discovery(); + // Initialize Discovery agent await this.discovery.init(); - - //set up seriveces - //await this.setupFileTransfer(); + // Set up services + await this.setupFileTransfer(); await this.setupStateMap(); const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. + // Announce myself with Directory port await this.discovery.announce(directory.serverInfo.port); } @@ -85,7 +83,6 @@ export class StageLinq extends EventEmitter { service.closeServer(); }); - //const msg = await this.discovery.createDiscoveryMessage(Action.Logout, this.options.actingAs); await this.discovery.unannounce(); } catch (e) { throw new Error(e); @@ -118,7 +115,6 @@ export class StageLinq extends EventEmitter { private async setupStateMap() { // Setup StateMap - //Logger.debug(`Setting up stateMap for ${connectionInfo.address}`); const stateMap = await this.startServiceListener(StateMap); From 535cfb797494cefd693664c9d8fecc238e267e07 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 19:27:56 -0400 Subject: [PATCH 037/146] syntax improvements, pass options --- StageLinq/index.ts | 2 +- network/Discovery.ts | 36 +++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 61ceedd..6e35d04 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -61,7 +61,7 @@ export class StageLinq extends EventEmitter { */ async connect() { // Initialize Discovery agent - await this.discovery.init(); + await this.discovery.init(this.options.actingAs); // Set up services await this.setupFileTransfer(); diff --git a/network/Discovery.ts b/network/Discovery.ts index 4787850..3080700 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,4 @@ -import { ConnectionInfo, DiscoveryMessage, Action, ActingAsDevice, IpAddress, DeviceId, } from '../types'; +import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, } from '../types'; import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; @@ -27,12 +27,14 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export class Discovery { private socket: Socket; private address: IpAddress; - private a_address: IpAddress; - public peers: Map = new Map(); + private broadcastAddress: IpAddress; + private options: DiscoveryMessageOptions = null; + public peers: Map = new Map(); //FIXME figure out getter/setter methods for this? private announceTimer: NodeJS.Timer; - async init() { + async init(options:DiscoveryMessageOptions) { + this.options = options; await this.listenForDevices( (connectionInfo) => { const deviceId = new DeviceId(connectionInfo.token) this.peers.set(deviceId.toString(), connectionInfo); @@ -44,8 +46,10 @@ export class Discovery { assert(this.socket); this.socket.setBroadcast(true); - let discoveryMessage = this.createDiscoveryMessage(Action.Login, ActingAsDevice.NowPlaying, port); + const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); + // wait for a recieved UDP message to determine the correct interface + // no need to rush this as we want the list of peers to be close to complete while (!this.address) { await sleep(250); } @@ -56,14 +60,12 @@ export class Discovery { return ip.contains(this.address) === true }); - this.a_address = address.shift().broadcastAddress + this.broadcastAddress = address.shift().broadcastAddress const msg = this.writeDiscoveryMessage(discoveryMessage) - - const options = [msg, LISTEN_PORT,this.a_address ] - this.broadcastMessage(this.socket, options); + this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress ); Logger.debug("Announced myself"); - this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, options); + this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } @@ -72,20 +74,20 @@ export class Discovery { clearInterval(this.announceTimer); this.announceTimer = null; - let discoveryMessage = this.createDiscoveryMessage(Action.Logout, ActingAsDevice.NowPlaying); + let discoveryMessage = this.createDiscoveryMessage(Action.Logout, this.options); const msg = this.writeDiscoveryMessage(discoveryMessage) - const options = [msg, LISTEN_PORT, this.a_address ] - - await this.broadcastMessage(this.socket, options); + await this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); await this.socket.close(); Logger.debug("Unannounced myself"); } + //////////// PRIVATE METHODS /////////////// + - private async broadcastMessage(socket: Socket, options: any[]) { - socket.send(options[0],options[1], options[2]) + private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress) { + socket.send(msg, port, address); } @@ -115,7 +117,7 @@ export class Discovery { private readConnectionInfo(p_ctx: ReadContext, p_address: string): ConnectionInfo { const magic = p_ctx.getString(4); if (magic !== DISCOVERY_MESSAGE_MARKER) { - return null; + return null; } const result: ConnectionInfo = { From d09f248d52de7adf0c6f1dad7fac483e04376839 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 22:37:14 -0400 Subject: [PATCH 038/146] Inst. new server for each device --- Databases/Databases.ts | 50 ++++++++++++++++++++++++++--- StageLinq/index.ts | 68 +++++++++++++++++++++++++++++++--------- services/Directory.ts | 46 +++++++++++++++++++++++++-- services/FileTransfer.ts | 40 ++++++++++++----------- services/Service.ts | 3 +- services/StateMap.ts | 6 +++- 6 files changed, 170 insertions(+), 43 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 241c73b..de08f33 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -1,10 +1,14 @@ -import { ConnectionInfo, Source } from '../types'; +import { Source } from '../types'; import { EventEmitter } from 'stream'; -import { FileTransfer } from '../services'; +//import { FileTransfer } from '../services'; import { getTempFilePath } from '../utils'; import { Logger } from '../LogEmitter'; import * as fs from 'fs'; +import { StageLinq } from '../StageLinq'; +import * as Services from '../services'; + + export declare interface Databases { on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; @@ -13,13 +17,15 @@ export declare interface Databases { } export class Databases extends EventEmitter { + parent: InstanceType; + sources: Map = new Map(); - sources: Map = new Map(); - - constructor() { + constructor(_parent: InstanceType) { super(); + this.parent = _parent; } + /* async downloadSourcesFromDevice(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { const service = await networkDevice.connectToService(FileTransfer); const sources = await service.getSources(); @@ -38,11 +44,43 @@ export class Databases extends EventEmitter { } return output; } + */ /** * Download databases from this network source. */ + async downloadDb(deviceId: string) { + + Logger.debug(`downloadDb request for ${deviceId}`); + + const service = this.parent.services[deviceId].get('FileTransfer') as Services.FileTransfer ; + const socket = this.parent.sockets[deviceId].get('FileTransfer'); + + for (const [sourceName, source] of service.sources) { + const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); + + Logger.info(`Reading database ${deviceId}/${source.name}`); + this.emit('dbDownloading', deviceId, dbPath); + + service.on('fileTransferProgress', (progress) => { + this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + }); + + // Save database to a file + const file = await service.getFile(source.database.location, socket); + Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); + fs.writeFileSync(dbPath, Buffer.from(file)); + + Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); + this.emit('dbDownloaded', deviceId, dbPath); + this.sources.set(sourceName, source) + } + +} + + /* async downloadDb(sourceId: string, service: FileTransfer, source: Source) { const dbPath = getTempFilePath(`${sourceId}/m.db`); @@ -64,6 +102,8 @@ export class Databases extends EventEmitter { this.emit('dbDownloaded', sourceId, dbPath); } + */ + getDbPath(dbSourceName?: string) { if (!this.sources.size) throw new Error(`No data sources have been downloaded`); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6e35d04..6c5f953 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -12,7 +12,7 @@ import { } from '../services'; import { Databases } from '../Databases'; -import * as services from '../services'; +import * as Services from '../services'; import { Socket } from 'net'; import { assert } from 'console'; import { sleep } from '../utils'; @@ -24,6 +24,18 @@ const DEFAULT_OPTIONS: StageLinqOptions = { downloadDbSources: true, }; +type DeviceService = Map> + +export interface DeviceServices { + [key: string]: DeviceService; +} + +type DeviceSocket = Map + +export interface DeviceSockets { + [key: string]: DeviceSocket; +} + export declare interface StageLinq { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; @@ -41,9 +53,13 @@ export class StageLinq extends EventEmitter { public logger: Logger = Logger.instance; - public directoryPort: number = 0; - private services: Record> = {}; - public readonly _services: Map> = new Map(); + //public directoryPort: number = 0; + // private _services: Record> = {}; + //public ipAddressPorts: + public sockets: DeviceSockets = {}; + public services: DeviceServices = {}; + public serviceList: string[] = []; + public readonly _services: Map> = new Map(); private _databases: Databases; public options: StageLinqOptions; @@ -53,7 +69,7 @@ export class StageLinq extends EventEmitter { constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; - this._databases = new Databases(); + this._databases = new Databases(this); } /** @@ -64,12 +80,25 @@ export class StageLinq extends EventEmitter { await this.discovery.init(this.options.actingAs); // Set up services - await this.setupFileTransfer(); - await this.setupStateMap(); + //await this.setupFileTransfer(); + //await this.setupStateMap(); + this.serviceList = [ + FileTransfer.name, + StateMap.name, + ] const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. // Announce myself with Directory port await this.discovery.announce(directory.serverInfo.port); + + await sleep(10000); + + //Logger.log('services ', Object.keys(this.services)); + //Logger.log('sockets ', Object.keys( this.sockets)); + //const thisService = this.services['4be14112-5ead-4848-a07d-b37ca8a7220e'].get('FileTransfer') as Services.FileTransfer; + //console.dir(thisService.sources); + + this._databases.downloadDb('4be14112-5ead-4848-a07d-b37ca8a7220e') } /** @@ -90,21 +119,31 @@ export class StageLinq extends EventEmitter { } - async startServiceListener>(ctor: { + async startServiceListener>(ctor: { new (parent: InstanceType): T; }): Promise { const serviceName = ctor.name; const service = new ctor(this); await service.listen(); + if (service.name == 'StateMap' ) { + this.setupStateMap(service) + } + if (service.name == 'FileTransfer' ) { + this.setupFileTransfer(service) + } + //service.on('message', message => { + // this.emit('message', message); + //}) this._services.set(serviceName, service); - this.services[serviceName] = service; + //this.services[serviceName] = service; + //this.serviceList.push(serviceName); return service; } - private async setupFileTransfer() { - const fileTransfer = await this.startServiceListener(FileTransfer); + private async setupFileTransfer(service: InstanceType) { + const fileTransfer = service as Services.FileTransfer; fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { Logger.debug(`received ${sourcename} ${dbPath}`); @@ -113,10 +152,11 @@ export class StageLinq extends EventEmitter { } - private async setupStateMap() { + private async setupStateMap(service: InstanceType) { // Setup StateMap + const stateMap = service as Services.StateMap; - const stateMap = await this.startServiceListener(StateMap); + //const stateMap = await this.startServiceListener(StateMap); stateMap.on('message', (data) => { this.emit('message', data) @@ -159,7 +199,7 @@ export class StageLinq extends EventEmitter { async downloadFile(_deviceId: string, path: string) { - const service = this.services["FileTransfer"] as FileTransfer + const service = this._services.get("FileTransfer") as FileTransfer assert(service); const deviceId = new DeviceId(_deviceId); diff --git a/services/Directory.ts b/services/Directory.ts index 3598c8a..b2c528b 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -6,6 +6,8 @@ import { sleep } from '../utils/sleep'; import { Socket } from 'net'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; +import { FileTransfer } from './FileTransfer'; +import { StateMap } from './StateMap'; export interface DirectoryData { deviceId: string; @@ -67,7 +69,7 @@ export class Directory extends Service { break; case MessageId.ServicesRequest: ctx.readRemaining(); // - this.sendServiceAnnouncement(socket); + this.sendServiceAnnouncement(deviceId, socket); break; default: assert.fail(`NetworkDevice Unhandled message id '${id}'`); @@ -88,23 +90,61 @@ export class Directory extends Service { assert(directoryMsg); } - private async sendServiceAnnouncement(socket?: Socket): Promise { + private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { // await sleep(250); const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); + let services: InstanceType[] = [] + + for (const serviceName of this.parent.serviceList) { + switch (serviceName) { + case 'FileTransfer': { + const fileTransfer = await this.parent.startServiceListener(FileTransfer); + services.push(fileTransfer); + break; + } + case 'StateMap': { + const stateMap = await this.parent.startServiceListener(StateMap); + services.push(stateMap); + break; + } + default: + break; + } + } + + this.parent.services[deviceId.toString()] = new Map(); + this.parent.sockets[deviceId.toString()] = new Map(); + + for (const service of services) { + + + this.parent.services[deviceId.toString()].set(service.name, service) + + ctx.writeUInt32(MessageId.ServicesAnnouncement); + ctx.write(Tokens.Listen); + ctx.writeNetworkStringUTF16(service.name); + ctx.writeUInt16(service.serverInfo.port); + + Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`) + } + + /* for (const [key, value] of this.parent._services) { ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(key); ctx.writeUInt16(value.serverInfo.port); } + */ const msg = ctx.getBuffer(); await socket.write(msg); - Logger.debug(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); + Logger.silly(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); + //Logger.debug(msg.toString('hex')); } private async sendTimeStampReply(token: Uint8Array, socket: Socket) { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 1a716c6..48e39ad 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -2,6 +2,7 @@ import { DOWNLOAD_TIMEOUT, IpAddressPort } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceData } from './Service'; +import * as Services from '../services'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -319,7 +320,7 @@ export class FileTransfer extends Service { size: fstatMessage.size, } } - + this.sources.set(source, thisSource); result.push(thisSource); devices[source] = thisSource; @@ -330,8 +331,9 @@ export class FileTransfer extends Service { } await this.deviceSources.set(msgDeviceId.toString(), devices); - await sleep(500); - this.downloadDb(msgDeviceId.toString(), socket); + this.sources + //await sleep(500); + //this.downloadDb(msgDeviceId.toString(), socket); return result; } @@ -394,23 +396,23 @@ export class FileTransfer extends Service { await this.writeWithLength(ctx, socket); } - async downloadDb(deviceId: string, socket: Socket) { - //console.info(source); + async downloadDb(deviceId: string, _socket: Socket) { + Logger.debug(`downloadDb request for ${deviceId}`); - const deviceSources = await this.deviceSources.get(deviceId); - - for (const sourceName in deviceSources) { - - const source = deviceSources[sourceName]; - const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); - - Logger.info(`Reading database ${deviceId}/${source.name}`); - this.emit('dbDownloading', deviceId, dbPath); - - this.on('fileTransferProgress', (progress) => { - this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - }); + + const service = this.parent.services[deviceId].get('FileTransfer') as Services.FileTransfer ; + const socket = this.parent.sockets[deviceId].get('FileTransfer'); + + for (const [sourceName, source] of service.sources) { + const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); + + Logger.info(`Reading database ${deviceId}/${source.name}`); + this.emit('dbDownloading', deviceId, dbPath); + + this.on('fileTransferProgress', (progress) => { + this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + }); // Save database to a file const file = await this.getFile(source.database.location, socket); diff --git a/services/Service.ts b/services/Service.ts index daec9b1..94f90e2 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -140,6 +140,7 @@ export abstract class Service extends EventEmitter { (assert (ctx.sizeLeft() >= 2)); ctx.readUInt16(); //read port, though we don't need it + this.parent.sockets[deviceId.toString()].set(this.name, socket); this.peerDeviceIds[ipAddressPort] = deviceId; //this.peerSockets.set(deviceId,socket); this._peerSockets[deviceId.toString()] = socket; @@ -185,7 +186,7 @@ export abstract class Service extends EventEmitter { }).listen(0, '0.0.0.0', () => { this.serverStatus = true; this.serverInfo = server.address() as net.AddressInfo; - Logger.info(`opened ${this.name} server on ${this.serverInfo.port}`); + Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); resolve(server); }); }); diff --git a/services/StateMap.ts b/services/StateMap.ts index cc84cb4..3f74738 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -135,8 +135,9 @@ export class StateMap extends Service { Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); const thisPeer = this.parent.discovery.peers.get(deviceId.toString()); + //assert(thisPeer); - if (thisPeer.software.name === 'JM08') { + if (thisPeer && thisPeer.software.name === 'JM08') { for (const state of StatesMixer) { await this.subscribeState(state, 0, socket); } @@ -155,6 +156,9 @@ export class StateMap extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + sleep(500) + + //this.subscribe(socket); this.emit('newStateMapDevice', deviceId, socket) return From 9395a2de99aa24933037d1d8b973b4578c445564 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 22:37:58 -0400 Subject: [PATCH 039/146] first pass at Databases --- StageLinq/index.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6c5f953..039fe16 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -92,12 +92,7 @@ export class StageLinq extends EventEmitter { await this.discovery.announce(directory.serverInfo.port); await sleep(10000); - - //Logger.log('services ', Object.keys(this.services)); - //Logger.log('sockets ', Object.keys( this.sockets)); - //const thisService = this.services['4be14112-5ead-4848-a07d-b37ca8a7220e'].get('FileTransfer') as Services.FileTransfer; - //console.dir(thisService.sources); - + this._databases.downloadDb('4be14112-5ead-4848-a07d-b37ca8a7220e') } From 40969778f9104f11cab123aeebc0f0961ac99663 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 15 Oct 2022 22:53:09 -0400 Subject: [PATCH 040/146] small cleanup --- StageLinq/index.ts | 49 +++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 039fe16..a6c06bc 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -50,12 +50,7 @@ export declare interface StageLinq { * Main StageLinq class. */ export class StageLinq extends EventEmitter { - - public logger: Logger = Logger.instance; - - //public directoryPort: number = 0; - // private _services: Record> = {}; - //public ipAddressPorts: + public sockets: DeviceSockets = {}; public services: DeviceServices = {}; public serviceList: string[] = []; @@ -64,6 +59,7 @@ export class StageLinq extends EventEmitter { public options: StageLinqOptions; + public logger: Logger = Logger.instance; public discovery: Discovery = new Discovery; constructor(options?: StageLinqOptions) { @@ -79,21 +75,28 @@ export class StageLinq extends EventEmitter { // Initialize Discovery agent await this.discovery.init(this.options.actingAs); - // Set up services - //await this.setupFileTransfer(); - //await this.setupStateMap(); + // Select Services to offer this.serviceList = [ FileTransfer.name, StateMap.name, - ] - const directory = await this.startServiceListener(Directory); // We need the server's port for announcement message. + ]; + + // Directory is required + const directory = await this.startServiceListener(Directory); // Announce myself with Directory port - await this.discovery.announce(directory.serverInfo.port); + await this.discovery.announce(directory.serverInfo.port); + // Databases Demo + // Wait 10s then download any connected Databases await sleep(10000); - - this._databases.downloadDb('4be14112-5ead-4848-a07d-b37ca8a7220e') + const services = Object.keys(this.services); + for (const deviceId of services) { + const thisService = this.services[deviceId].get('FileTransfer') as Services.FileTransfer; + if (thisService.sources.size > 0) { + this._databases.downloadDb(deviceId); + } + } } /** @@ -127,12 +130,7 @@ export class StageLinq extends EventEmitter { if (service.name == 'FileTransfer' ) { this.setupFileTransfer(service) } - //service.on('message', message => { - // this.emit('message', message); - //}) this._services.set(serviceName, service); - //this.services[serviceName] = service; - //this.serviceList.push(serviceName); return service; } @@ -151,8 +149,6 @@ export class StageLinq extends EventEmitter { // Setup StateMap const stateMap = service as Services.StateMap; - //const stateMap = await this.startServiceListener(StateMap); - stateMap.on('message', (data) => { this.emit('message', data) }); @@ -206,13 +202,4 @@ export class StageLinq extends EventEmitter { const file = await service.getFile(path,socket); return file; } -} - -/* -async function testDownloadFile(stageLinq: InstanceType) { - const trackNetworkPath = '/HONUSZ (USB 1)/Contents/Space Food/Stay In/14786650_Dark Force_(Original Mix).mp3' - const deviceId = new DeviceId('4be14112-5ead-4848-a07d-b37ca8a7220e') - const fileName = trackNetworkPath.split('/').pop(); - const buff = stageLinq.downloadFile(deviceId.toString(), trackNetworkPath) -} -*/ \ No newline at end of file +} \ No newline at end of file From 979bc674d9958279e0c21552232cc33cb75aa244 Mon Sep 17 00:00:00 2001 From: honusz Date: Sun, 16 Oct 2022 21:25:19 -0400 Subject: [PATCH 041/146] Timeout created servers if no connection --- StageLinq/index.ts | 18 ++++++++++++------ services/Directory.ts | 21 ++++++--------------- services/Service.ts | 29 ++++++++++++++++++++--------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index a6c06bc..2760124 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -92,9 +92,13 @@ export class StageLinq extends EventEmitter { await sleep(10000); const services = Object.keys(this.services); for (const deviceId of services) { - const thisService = this.services[deviceId].get('FileTransfer') as Services.FileTransfer; - if (thisService.sources.size > 0) { - this._databases.downloadDb(deviceId); + + if (this.services[deviceId].has('FileTransfer')) { + Logger.debug(`${deviceId} has FileTransfer`); + const thisService = this.services[deviceId].get('FileTransfer') as Services.FileTransfer; + if (thisService.sources.size > 0) { + this._databases.downloadDb(deviceId); + } } } } @@ -118,10 +122,12 @@ export class StageLinq extends EventEmitter { async startServiceListener>(ctor: { - new (parent: InstanceType): T; - }): Promise { + new (parent: InstanceType, _deviceId?: DeviceId): T; + }, deviceId?: DeviceId): Promise { const serviceName = ctor.name; - const service = new ctor(this); + const service = new ctor(this, deviceId); + + await service.listen(); if (service.name == 'StateMap' ) { diff --git a/services/Directory.ts b/services/Directory.ts index b2c528b..026ee8d 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -91,7 +91,7 @@ export class Directory extends Service { } private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { - // await sleep(250); + const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); @@ -102,12 +102,12 @@ export class Directory extends Service { for (const serviceName of this.parent.serviceList) { switch (serviceName) { case 'FileTransfer': { - const fileTransfer = await this.parent.startServiceListener(FileTransfer); + const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); services.push(fileTransfer); break; } case 'StateMap': { - const stateMap = await this.parent.startServiceListener(StateMap); + const stateMap = await this.parent.startServiceListener(StateMap, deviceId); services.push(stateMap); break; } @@ -121,7 +121,6 @@ export class Directory extends Service { for (const service of services) { - this.parent.services[deviceId.toString()].set(service.name, service) ctx.writeUInt32(MessageId.ServicesAnnouncement); @@ -129,22 +128,15 @@ export class Directory extends Service { ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`) + Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); + } - /* - for (const [key, value] of this.parent._services) { - ctx.writeUInt32(MessageId.ServicesAnnouncement); - ctx.write(Tokens.Listen); - ctx.writeNetworkStringUTF16(key); - ctx.writeUInt16(value.serverInfo.port); - } - */ const msg = ctx.getBuffer(); await socket.write(msg); Logger.silly(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); - //Logger.debug(msg.toString('hex')); + } private async sendTimeStampReply(token: Uint8Array, socket: Socket) { @@ -152,7 +144,6 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); ctx.write(Tokens.Listen); - //ctx.writeUInt64(BigInt(this.timeAlive*10000)); ctx.writeUInt64(0n); const message = ctx.getBuffer(); assert(message.length === 44); diff --git a/services/Service.ts b/services/Service.ts index 94f90e2..d065629 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,7 +1,6 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { MessageId, MESSAGE_TIMEOUT, ConnectionInfo, DeviceId } from '../types'; -//import { StageLinqDevices } from '../network'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -52,7 +51,7 @@ export abstract class Service extends EventEmitter { protected isBufferedService: boolean = true; protected parent: InstanceType; - protected server: Server = null; + public server: Server = null; public serverInfo: AddressInfo; public serverStatus: boolean = false; @@ -60,12 +59,15 @@ export abstract class Service extends EventEmitter { public peerSockets: Map = new Map(); public _peerSockets: Record = {}; protected peerBuffers: PeerBuffers = {}; + protected timeout: NodeJS.Timer; + protected expectedDeviceId: DeviceId = null; private msgId: number = 0; //only used fro debugging - constructor(p_parent:InstanceType) { + constructor(p_parent:InstanceType, deviceId?: DeviceId) { super(); this.parent = p_parent; + this.expectedDeviceId = deviceId || null; } async createServer(): Promise { @@ -83,8 +85,9 @@ export abstract class Service extends EventEmitter { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) - //Initialize fresh buffer queue for this connection - + clearTimeout(this.timeout); + + //Initialize fresh buffer queue for this connection this.peerBuffers[ipAddressPort] = null; //get device id from list of peers. will check if undefined later. @@ -186,7 +189,12 @@ export abstract class Service extends EventEmitter { }).listen(0, '0.0.0.0', () => { this.serverStatus = true; this.serverInfo = server.address() as net.AddressInfo; + this.server = server; Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); + if (this.expectedDeviceId){ + Logger.silly(`started timer for ${this.name} for ${this.expectedDeviceId}`) + this.timeout = setTimeout(this.closeService, 5000, this.expectedDeviceId, this.name, this.server, this.parent); + }; resolve(server); }); }); @@ -194,10 +202,6 @@ export abstract class Service extends EventEmitter { async listen(): Promise { const server = await this.createServer() - this.server = server; - - //const serverAddress = server.address() as net.AddressInfo; - //this.port = serverAddress.port; return server.address() as AddressInfo; } @@ -270,6 +274,13 @@ export abstract class Service extends EventEmitter { } } + // callback for timeout timer + protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { + Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + await server.close(); + parent.services[deviceId.toString()].delete(serviceName); + } + // FIXME: Cannot use abstract because of async; is there another way to get this? protected async init() { assert.fail('Implement this'); From 7687f7e3c1553fb79ea5b0940e97b913962f4e37 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 17 Oct 2022 00:12:33 -0400 Subject: [PATCH 042/146] getFile working --- Databases/Databases.ts | 34 +++------------- StageLinq/index.ts | 40 +++++++------------ cli/index.ts | 69 ++++++++------------------------ devices/Player.ts | 4 +- services/FileTransfer.ts | 85 ++++++++++++---------------------------- types/index.ts | 7 ++++ 6 files changed, 70 insertions(+), 169 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index de08f33..b77fcbe 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -1,7 +1,5 @@ - import { Source } from '../types'; import { EventEmitter } from 'stream'; -//import { FileTransfer } from '../services'; import { getTempFilePath } from '../utils'; import { Logger } from '../LogEmitter'; import * as fs from 'fs'; @@ -68,7 +66,11 @@ export class Databases extends EventEmitter { Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); }); - // Save database to a file + source.database.local = { + path: dbPath, + }; + + // Save database to a file const file = await service.getFile(source.database.location, socket); Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); @@ -76,34 +78,10 @@ export class Databases extends EventEmitter { Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); this.emit('dbDownloaded', deviceId, dbPath); this.sources.set(sourceName, source) + Logger.info(sourceName, source); } - } - /* - async downloadDb(sourceId: string, service: FileTransfer, source: Source) { - const dbPath = getTempFilePath(`${sourceId}/m.db`); - - // Read database from source - Logger.debug(`Reading database ${sourceId}`); - this.emit('dbDownloading', sourceId, dbPath); - - service.on('fileTransferProgress', (progress) => { - this.emit('dbProgress', sourceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - }); - - // Save database to a file - const file = await service.getFile(source.database.location); - Logger.debug(`Saving ${sourceId} to ${dbPath}`); - fs.writeFileSync(dbPath, Buffer.from(file)); - this.sources.set(sourceId, dbPath); - - Logger.debug(`Downloaded ${sourceId} to ${dbPath}`); - this.emit('dbDownloaded', sourceId, dbPath); - } - - */ - getDbPath(dbSourceName?: string) { if (!this.sources.size) throw new Error(`No data sources have been downloaded`); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 2760124..e2286aa 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -87,20 +87,6 @@ export class StageLinq extends EventEmitter { // Announce myself with Directory port await this.discovery.announce(directory.serverInfo.port); - // Databases Demo - // Wait 10s then download any connected Databases - await sleep(10000); - const services = Object.keys(this.services); - for (const deviceId of services) { - - if (this.services[deviceId].has('FileTransfer')) { - Logger.debug(`${deviceId} has FileTransfer`); - const thisService = this.services[deviceId].get('FileTransfer') as Services.FileTransfer; - if (thisService.sources.size > 0) { - this._databases.downloadDb(deviceId); - } - } - } } /** @@ -127,8 +113,6 @@ export class StageLinq extends EventEmitter { const serviceName = ctor.name; const service = new ctor(this, deviceId); - - await service.listen(); if (service.name == 'StateMap' ) { this.setupStateMap(service) @@ -196,16 +180,22 @@ export class StageLinq extends EventEmitter { async downloadFile(_deviceId: string, path: string) { - const service = this._services.get("FileTransfer") as FileTransfer - assert(service); - const deviceId = new DeviceId(_deviceId); - //Logger.debug(service.peerSockets.entries()); - const socket = service._peerSockets[deviceId.toString()]; - //Logger.debug(socket); + const deviceId = new DeviceId(_deviceId); + const service = this.services[deviceId.toString()].get('FileTransfer') as Services.FileTransfer; + assert(service); + + const socket = this.sockets[deviceId.toString()].get('FileTransfer'); + assert(socket); + + await service.isAvailable(); - //const file = await service.getFile(`net://${deviceId}${path}`,socket) - const file = await service.getFile(path,socket); - return file; + try { + const file = await service.getFile(path,socket); + return file; + } catch (err) { + Logger.error(err); + throw new Error(err); + } } } \ No newline at end of file diff --git a/cli/index.ts b/cli/index.ts index 8b7ad35..9e92345 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -18,10 +18,17 @@ require('console-stamp')(console, { * @param status Player to get track info from. * @returns Track info */ + +let dbDownloaded: boolean = false; + function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { + if (!dbDownloaded) { + return + } + try { const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) - const connection = new DbConnection(dbPath); + const connection = new DbConnection(dbPath.database.local.path); const result = connection.getTrackInfo(status.trackPath); connection.close(); console.log('Database entry:', result); @@ -39,52 +46,19 @@ function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { * @param dest Path to save file to. */ -/* + async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: string) { try { - const data = await stageLinq.devices.downloadFile(status.deviceId, status.trackPathAbsolute); + const data = await stageLinq.downloadFile(status.deviceId, status.trackPathAbsolute); if (data) { fs.writeFileSync(dest, Buffer.from(data)); console.log(`Downloaded ${status.trackPathAbsolute} to ${dest}`); } } catch(e) { console.error(`Could not download ${status.trackPathAbsolute}`); + console.error(e) } } -*/ - -/* -let fltxBlock = false; - -async function downloadFileTest(stageLinq: StageLinq, trackNetworkPath: string, dest: string) { - - await sleep(2000); - - while (fltxBlock === true) { - await sleep(250); - } - - const deviceId = trackNetworkPath.substring(6,42); - //const deviceId = '1e6c417a-b674-4c87-b4aa-fb7ad2298976'; - const trackPath = trackNetworkPath.substring(42); - const fileName = trackNetworkPath.split('/').pop(); - console.log(fileName); - dest += fileName - console.log(dest); - //const dest = '../' - try { - const data = await stageLinq.devices.downloadFile(deviceId, trackPath); - if (data) { - fs.writeFileSync(dest, Buffer.from(data)); - console.log(`Downloaded ${trackPath} from ${deviceId} to ${dest}`); - fltxBlock = false; - } - } catch(e) { - console.error(`Could not download ${trackPath} Error: ${e}`); - } - -} -*/ async function main() { @@ -95,7 +69,7 @@ async function main() { // If set to true, download the source DBs in a temporary location. // (default: true) - downloadDbSources: false, + downloadDbSources: true, // Max number of attempts to connect to a StageLinq device. // (default: 3) @@ -156,6 +130,7 @@ async function main() { // Fires when the database source has been read and saved to a temporary path. stageLinq.databases.on('dbDownloaded', (sourceName, dbPath) => { console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); + dbDownloaded = true; }); } @@ -176,7 +151,8 @@ async function main() { } // Example of how to download the actual track from the media. - //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), 'media')); + const filename = [status.title,'.mp3'].join(''); + await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); }); // Fires when a track has started playing. @@ -194,20 +170,7 @@ async function main() { `${data.message.name} => ${msg}`); } - - //console.dir(data); - - //if (data && data.socket && data.message && data.message.json ) { //&& typeof data.message !== "object") { - //console.debug(`${data.socket.remoteAddress}:${data.socket.remotePort} ${data.message.name} ${JSON.stringify(data.message.json)}`); - // if (data.message.name.substring(data.message.name.length -16,data.message.name.length) === "TrackNetworkPath" && data.message.json.string !== "") { - //console.log(data.message.json.string); - //console.log(data.message.json.string.substring(6,42),data.message.json.string.substring(42)); - // await downloadFileTest(stageLinq, data.message.json.string, path.resolve(os.tmpdir())); - //} - // } - - //if (data.message.name.substring()) {} - + }); diff --git a/devices/Player.ts b/devices/Player.ts index 00844f1..620840c 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -187,8 +187,8 @@ export class Player extends EventEmitter { if (currentState.trackNetworkPath && currentState.trackNetworkPath.startsWith('net:')) { const pathParts = currentState.trackNetworkPath.split('net://')[1].split('/', 2); - currentState.dbSourceName = `net://${pathParts[0]}/${pathParts[1]}`; - currentState.deviceId = `net://${pathParts[0]}`; + currentState.dbSourceName = pathParts[1];//`net://${pathParts[0]}/${pathParts[1]}`; + currentState.deviceId = pathParts[0];//`net://${pathParts[0]}`; } else if (!currentState.source || /Unknown/.test(currentState.source)) { // Tracks from streaming sources won't be in the database. currentState.dbSourceName = ''; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 48e39ad..666f641 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -2,14 +2,12 @@ import { DOWNLOAD_TIMEOUT, IpAddressPort } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceData } from './Service'; -import * as Services from '../services'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source, DeviceId } from '../types'; import { Socket } from 'net'; -import { getTempFilePath } from '../utils'; -import * as fs from 'fs'; + const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; @@ -53,6 +51,7 @@ export class FileTransfer extends Service { public name: string = "FileTransfer"; public services: Map = new Map(); public sources: Map = new Map(); + private _isAvailable: boolean = true; public deviceSources: Map = new Map(); @@ -243,19 +242,20 @@ export class FileTransfer extends Service { * @returns Contents of the file. */ async getFile(p_location: string, socket: Socket): Promise { - + this._isAvailable = false; assert(this.receivedFile === null); await this.requestFileTransferId(p_location, socket); const txinfo = await this.waitForMessage(MessageId.FileTransferId); - console.dir(txinfo); if (txinfo) { this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); const total = parseInt(txinfo.size); - //Logger.debug(totalChunks, total) + Logger.debug(totalChunks, total) if (total === 0) { Logger.warn(`${p_location} doesn't exist or is a streaming file`); + this.receivedFile = null + this._isAvailable = true; return; } await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1, socket); @@ -284,16 +284,20 @@ export class FileTransfer extends Service { }); } catch (err) { const msg = `Could not read database from ${p_location}: ${err.message}` + this.receivedFile = null + this._isAvailable = true; Logger.error(msg); throw new Error(msg); } Logger.debug(`Signaling transfer complete.`); await this.signalTransferComplete(socket); + } const buf = this.receivedFile ? this.receivedFile.getBuffer() : null; this.receivedFile = null; + this._isAvailable = true; return buf; } @@ -301,6 +305,7 @@ export class FileTransfer extends Service { const result: Source[] = []; let devices: DeviceSources = {} + const deviceId = this.getDeviceIdFromSocket(socket); const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); const msgDeviceId = this.peerDeviceIds[ipAddressPort]; @@ -318,9 +323,15 @@ export class FileTransfer extends Service { database: { location: database, size: fstatMessage.size, - } + remote: { + location: database, + device: deviceId.toString(), + } + }, + } this.sources.set(source, thisSource); + this.parent.databases.sources.set(source, thisSource); result.push(thisSource); devices[source] = thisSource; @@ -331,9 +342,8 @@ export class FileTransfer extends Service { } await this.deviceSources.set(msgDeviceId.toString(), devices); - this.sources - //await sleep(500); - //this.downloadDb(msgDeviceId.toString(), socket); + + this.parent.databases.downloadDb(msgDeviceId.toString()); return result; } @@ -396,57 +406,10 @@ export class FileTransfer extends Service { await this.writeWithLength(ctx, socket); } - async downloadDb(deviceId: string, _socket: Socket) { - - Logger.debug(`downloadDb request for ${deviceId}`); - - const service = this.parent.services[deviceId].get('FileTransfer') as Services.FileTransfer ; - const socket = this.parent.sockets[deviceId].get('FileTransfer'); - - for (const [sourceName, source] of service.sources) { - const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); - - Logger.info(`Reading database ${deviceId}/${source.name}`); - this.emit('dbDownloading', deviceId, dbPath); - - this.on('fileTransferProgress', (progress) => { - this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - }); - - // Save database to a file - const file = await this.getFile(source.database.location, socket); - Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); - fs.writeFileSync(dbPath, Buffer.from(file)); - - Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); - this.emit('dbDownloaded', deviceId, dbPath); - } - -} - -/* - getDbPath(dbSourceName?: string) { - if (!this.sources.size) - throw new Error(`No data sources have been downloaded`); - - if (!dbSourceName || !this.sources.has(dbSourceName)) { - - // Hack: Denon will save metadata on streaming files but only on an - // internal database. So if the source is "(Unknown)streaming://" - // return the first internal database we find. - for (const entry of Array.from(this.sources.entries())) { - if (/\(Internal\)/.test(entry[0])) { - Logger.debug(`Returning copy of internal database`); - return this.sources.get(entry[0]); - } - } - - // Else, throw an exception. - throw new Error(`Data source "${dbSourceName}" doesn't exist.`); + public async isAvailable(): Promise { + while (!this._isAvailable) { + await sleep(250) } - - return this.sources.get(dbSourceName); } - */ + } \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index 506488a..e7dfb31 100644 --- a/types/index.ts +++ b/types/index.ts @@ -39,6 +39,13 @@ export interface Source { database: { location: string; size: number; + remote?: { + location: string, + device: string, + }, + local?: { + path: string, + } }; } From e63c5e48d168324842ef20a6e59ae7644135e823 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 20 Oct 2022 01:21:57 -0400 Subject: [PATCH 043/146] Device class, Inflate Binary fields --- Databases/Databases.ts | 4 ++ Databases/DbConnection.ts | 21 ++++++++++- StageLinq/index.ts | 63 ++++++++++++++++++++----------- cli/index.ts | 21 +++++------ network/Discovery.ts | 11 ++++++ services/Directory.ts | 4 +- services/Service.ts | 14 ++++++- types/Devices.ts | 79 +++++++++++++++++++++++++++++++++++++++ types/index.ts | 5 ++- 9 files changed, 184 insertions(+), 38 deletions(-) create mode 100644 types/Devices.ts diff --git a/Databases/Databases.ts b/Databases/Databases.ts index b77fcbe..678d299 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -52,9 +52,13 @@ export class Databases extends EventEmitter { Logger.debug(`downloadDb request for ${deviceId}`); + //const service = this.parent.devices.getService(new DeviceId(deviceId), Services.FileTransfer.name) as Services.FileTransfer; const service = this.parent.services[deviceId].get('FileTransfer') as Services.FileTransfer ; + + //const socket = this.parent.devices.getSocket(new DeviceId(deviceId), Services.FileTransfer.name); const socket = this.parent.sockets[deviceId].get('FileTransfer'); + for (const [sourceName, source] of service.sources) { const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 0b3819f..2fad160 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -1,6 +1,6 @@ import Database = require('better-sqlite3'); import { Track } from '../types'; - +import { inflate as Inflate } from 'zlib' export class DbConnection { @@ -26,13 +26,26 @@ export class DbConnection { return result.all(params); } + + async inflate(data: Buffer): Promise { + return new Promise((resolve, reject) =>{ + Inflate(data.slice(4), (err, buffer) => { + if (err) { + reject(err); + } else { + resolve(buffer); + } + }); + }); + } + /** * Return track's DB entry. * * @param trackPath Path of track on the source's filesystem. * @returns */ - getTrackInfo(trackPath: string): Track { + async getTrackInfo(trackPath: string): Promise { let result: Track[]; if (/streaming:\/\//.test(trackPath)) { result = this.querySource('SELECT * FROM Track WHERE uri = (?) LIMIT 1', trackPath); @@ -40,6 +53,10 @@ export class DbConnection { result = this.querySource('SELECT * FROM Track WHERE path = (?) LIMIT 1', trackPath); } if (!result) throw new Error(`Could not find track: ${trackPath} in database.`); + result[0].trackData = await this.inflate(result[0].trackData); + result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); + result[0].beatData = await this.inflate(result[0].beatData); + return result[0]; } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index e2286aa..f29169e 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -2,15 +2,7 @@ import { Discovery } from '../network'; import { Player } from '../devices/Player'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; -import { - FileTransfer, - StateData, - StateMap, - //TimeSynchronization, - Directory, -} from '../services'; - +import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; import { Databases } from '../Databases'; import * as Services from '../services'; import { Socket } from 'net'; @@ -35,14 +27,22 @@ type DeviceSocket = Map export interface DeviceSockets { [key: string]: DeviceSocket; } - +/* +export interface Devices { + [key: string]: { + info: ConnectionInfo; + service?: DeviceService; + socket?: DeviceSocket; + } +} +*/ export declare interface StageLinq { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; - on(event: 'message', listener: ( message: ServiceMessage) => void): this; + on(event: 'message', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; } @@ -56,11 +56,12 @@ export class StageLinq extends EventEmitter { public serviceList: string[] = []; public readonly _services: Map> = new Map(); private _databases: Databases; + public devices = new Devices(); public options: StageLinqOptions; public logger: Logger = Logger.instance; - public discovery: Discovery = new Discovery; + public discovery: Discovery = new Discovery(this); constructor(options?: StageLinqOptions) { super(); @@ -68,6 +69,31 @@ export class StageLinq extends EventEmitter { this._databases = new Databases(this); } + ////// Getters & Setters ///////// + get databases() { + return this._databases; + } + /* + setInfo(deviceId: DeviceId, info: ConnectionInfo) { + this.devices[deviceId.toString()].info = info; + } + + getService(deviceId: DeviceId, serviceName: string) { + return this.devices[deviceId.toString()].service.get(serviceName); + } + + setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { + this.devices[deviceId.toString()].service.set(serviceName, service); + } + + getSocket(deviceId: DeviceId, serviceName: string) { + return this.devices[deviceId.toString()].socket.get(serviceName); + } + + setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { + this.devices[deviceId.toString()].socket.set(serviceName, socket); + } +*/ /** * Connect to the StageLinq network. */ @@ -77,12 +103,12 @@ export class StageLinq extends EventEmitter { // Select Services to offer this.serviceList = [ - FileTransfer.name, - StateMap.name, + Services.FileTransfer.name, + Services.StateMap.name, ]; // Directory is required - const directory = await this.startServiceListener(Directory); + const directory = await this.startServiceListener(Services.Directory); // Announce myself with Directory port await this.discovery.announce(directory.serverInfo.port); @@ -133,7 +159,7 @@ export class StageLinq extends EventEmitter { //testDownloadFile(this); }); } - + private async setupStateMap(service: InstanceType) { // Setup StateMap @@ -174,11 +200,6 @@ export class StageLinq extends EventEmitter { } - get databases() { - return this._databases; - } - - async downloadFile(_deviceId: string, path: string) { const deviceId = new DeviceId(_deviceId); diff --git a/cli/index.ts b/cli/index.ts index 9e92345..02dc1d1 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,4 @@ -import { ActingAsDevice, PlayerStatus, StageLinqOptions, Services } from '../types'; +import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList } from '../types'; import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; @@ -21,17 +21,15 @@ require('console-stamp')(console, { let dbDownloaded: boolean = false; -function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { - if (!dbDownloaded) { - return - } - +async function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { + try { const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) const connection = new DbConnection(dbPath.database.local.path); - const result = connection.getTrackInfo(status.trackPath); + const result = await connection.getTrackInfo(status.trackPath); connection.close(); console.log('Database entry:', result); + //console.warn(result.overviewWaveFormData.toString('hex')); return result; } catch(e) { console.error(e); @@ -65,6 +63,8 @@ async function main() { console.log('Starting CLI'); + + const stageLinqOptions: StageLinqOptions = { // If set to true, download the source DBs in a temporary location. @@ -80,9 +80,9 @@ async function main() { actingAs: ActingAsDevice.NowPlaying, services: [ - Services.StateMap, - Services.FileTransfer, - Services.Directory, + ServiceList.StateMap, + ServiceList.FileTransfer, + ServiceList.Directory, ], } @@ -173,7 +173,6 @@ async function main() { }); - // Fires when the state of a device has changed. stageLinq.on('stateChanged', (status) => { console.log(`Updating state [${status.deck}]`, status) diff --git a/network/Discovery.ts b/network/Discovery.ts index 3080700..682c154 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -7,7 +7,9 @@ import { strict as assert } from 'assert'; import { sleep, WriteContext } from '../utils'; import { networkInterfaces } from 'os'; import { subnet, SubnetInfo } from 'ip'; +import * as Services from '../services'; import { Logger } from '../LogEmitter'; +import { StageLinq } from '../StageLinq'; export interface DiscoveryMessageOptions { @@ -24,20 +26,29 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; * Continuously listens for devices to announce themselves. When they do, * execute a callback. */ + + + export class Discovery { private socket: Socket; private address: IpAddress; private broadcastAddress: IpAddress; private options: DiscoveryMessageOptions = null; public peers: Map = new Map(); //FIXME figure out getter/setter methods for this? + public parent: InstanceType; private announceTimer: NodeJS.Timer; + constructor(_parent: InstanceType) { + this.parent = _parent; + } + async init(options:DiscoveryMessageOptions) { this.options = options; await this.listenForDevices( (connectionInfo) => { const deviceId = new DeviceId(connectionInfo.token) this.peers.set(deviceId.toString(), connectionInfo); + this.parent.devices.setInfo(deviceId, connectionInfo); }); } diff --git a/services/Directory.ts b/services/Directory.ts index 026ee8d..dfb31e1 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -118,10 +118,12 @@ export class Directory extends Service { this.parent.services[deviceId.toString()] = new Map(); this.parent.sockets[deviceId.toString()] = new Map(); + //this.parent.devices. for (const service of services) { - this.parent.services[deviceId.toString()].set(service.name, service) + this.parent.services[deviceId.toString()].set(service.name, service); + //this.parent.devices.setService(deviceId, service.name, service); ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); diff --git a/services/Service.ts b/services/Service.ts index d065629..f9c47b8 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -73,7 +73,7 @@ export abstract class Service extends EventEmitter { async createServer(): Promise { return await new Promise((resolve, reject) => { - const server = net.createServer((socket) => { + const server = net.createServer(async (socket) => { //Handle identification of incoming socket. const addressInfo:AddressInfo = { @@ -85,12 +85,24 @@ export abstract class Service extends EventEmitter { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) + + clearTimeout(this.timeout); //Initialize fresh buffer queue for this connection this.peerBuffers[ipAddressPort] = null; //get device id from list of peers. will check if undefined later. + //while (!this.parent.devices.getDeviceIdFromIpAddressPort(ipAddressPort)) { + // await sleep(250); + //} + //let deviceId = await this.parent.devices.getDeviceIdFromIpAddressPort(ipAddressPort); + //Logger.warn(_deviceId); + //if (_deviceId) { + // Logger.warn(`deviceIdFromIpAddressPort: ${_deviceId.toString()}`); + //} + + let deviceId = this.peerDeviceIds[ipAddressPort]; socket.on('error', (err) => { diff --git a/types/Devices.ts b/types/Devices.ts new file mode 100644 index 0000000..65c47cc --- /dev/null +++ b/types/Devices.ts @@ -0,0 +1,79 @@ +import * as Services from '../services'; +import { Socket } from 'net'; +import { ConnectionInfo, DeviceId, IpAddressPort, } from '../types'; +import { Logger } from '../LogEmitter'; +import { sleep } from '../utils'; + + +type DeviceService = Map>; + +type DeviceSocket = Map; + +type IpAddressPortDeviceId = Map; + +export interface Device { + [key: string]: { + info: ConnectionInfo; + service?: DeviceService; + socket?: DeviceSocket; + } +} + +export class Devices { + private devices: Device = {}; + + getInfo(deviceId: DeviceId) { + return this.devices[deviceId.toString()].info; + } + + setInfo(deviceId: DeviceId, info: ConnectionInfo) { + if (!this.devices[deviceId.toString()]) { + this.devices[deviceId.toString()] = { + info: info + }; + } else { + this.devices[deviceId.toString()].info = info; + } + + } + + getService(deviceId: DeviceId, serviceName: string) { + return this.devices[deviceId.toString()].service.get(serviceName); + } + + setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { + this.devices[deviceId.toString()].service.set(serviceName, service); + } + + getSocket(deviceId: DeviceId, serviceName: string) { + return this.devices[deviceId.toString()].socket.get(serviceName); + } + + setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { + this.devices[deviceId.toString()].socket.set(serviceName, socket); + } + + async hasDeviceId(deviceId: DeviceId) { + // while (this.devices[deviceId.] + } + + async getDeviceIdFromIpAddressPort(ipAddressPort: IpAddressPort): Promise { + //while (this.devices[key]) + let devices: IpAddressPortDeviceId = new Map(); + + while (!devices.has(ipAddressPort)) { + const keys = Object.keys(this.devices); + for (const key of keys) { + if (this.devices[key].info) { + //Logger.warn(`found ${key}`) + devices.set(ipAddressPort, new DeviceId(key)) + } + } + await sleep(250); + } + + return devices.get(ipAddressPort) + + } + +} \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index e7dfb31..0443b46 100644 --- a/types/index.ts +++ b/types/index.ts @@ -7,6 +7,7 @@ export * from './player'; export * from './tokens'; export * from './models'; export * from './DeviceId'; +export * from './Devices'; export interface DiscoveryMessage { token: Uint8Array; @@ -59,7 +60,7 @@ export type IpAddress = string; export type IpAddressPort = string; -export enum Services { +export enum ServiceList { StateMap = "StateMap", FileTransfer = "FileTransfer", Directory = "DirectoryService", @@ -70,5 +71,5 @@ export interface StageLinqOptions { maxRetries?: number; actingAs?: DiscoveryMessageOptions; downloadDbSources?: boolean; - services?: Services[]; + services?: ServiceList[]; } From 09099347e92c46f809bbdaa6f7b0f5996fc2cc4d Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 20 Oct 2022 01:24:04 -0400 Subject: [PATCH 044/146] Filetransfer TxID fix --- .gitignore | 1 + cli/index.ts | 1 - services/FileTransfer.ts | 65 ++++++++++++++++++++++++---------------- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index db2751f..d039fcf 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,4 @@ version log.txt .DS_Store package-lock.json +waveform.bin diff --git a/cli/index.ts b/cli/index.ts index 02dc1d1..171b3c1 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -29,7 +29,6 @@ async function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { const result = await connection.getTrackInfo(status.trackPath); connection.close(); console.log('Database entry:', result); - //console.warn(result.overviewWaveFormData.toString('hex')); return result; } catch(e) { console.error(e); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 666f641..1c68d8f 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -32,6 +32,7 @@ enum MessageId { FileTransferChunk = 0x5, Unknown0 = 0x8, DeviceShutdown = 0x9, + RequestSources = 0x7d2, } interface FileTransferProgress { @@ -52,6 +53,7 @@ export class FileTransfer extends Service { public services: Map = new Map(); public sources: Map = new Map(); private _isAvailable: boolean = true; + private txId: number = 1; public deviceSources: Map = new Map(); @@ -73,27 +75,24 @@ export class FileTransfer extends Service { Logger.error(assert(check === MAGIC_MARKER)) } - let code = p_ctx.readUInt32(); - - // If first 4 bytes are non-zero, a timecode is sent - if (code > 0) { - assert(p_ctx.sizeLeft() === 8); - const id = p_ctx.readUInt32(); - assert(id === 0x07d2); - assert(p_ctx.readUInt32() === 0); - - return { - id: MessageId.TimeCode, - message: { - timecode: code, - }, - socket: socket, - }; - } + const txId = p_ctx.readUInt32(); - // Else const messageId: MessageId = p_ctx.readUInt32(); + switch (messageId) { + case MessageId.RequestSources: { + assert(p_ctx.readUInt32() === 0x0) + assert(p_ctx.isEOF()); + + return { + id: MessageId.RequestSources, + message: { + txId: txId, + }, + socket: socket, + }; + } + case MessageId.SourceLocations: { const sources: string[] = []; const sourceCount = p_ctx.readUInt32(); @@ -226,6 +225,10 @@ export class FileTransfer extends Service { //assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); } + if (p_data && p_data.id === MessageId.RequestSources) { + Logger.warn(`req source ${p_data.message.txId} from ${this.getDeviceIdFromSocket(p_data.socket)} `) + this.sendNoSourcesReply(p_data.socket, p_data); + } } /** @@ -289,10 +292,10 @@ export class FileTransfer extends Service { Logger.error(msg); throw new Error(msg); } - + Logger.debug(`Signaling transfer complete.`); await this.signalTransferComplete(socket); - + this.txId++ } const buf = this.receivedFile ? this.receivedFile.getBuffer() : null; @@ -355,7 +358,7 @@ export class FileTransfer extends Service { // 0x7d1: seems to request some sort of fstat on a file const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(0x0); + ctx.writeUInt32(this.txId); ctx.writeUInt32(0x7d1); ctx.writeNetworkStringUTF16(p_filepath); await this.writeWithLength(ctx, socket); @@ -365,7 +368,7 @@ export class FileTransfer extends Service { // 0x7d2: Request available sources const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(0x0); + ctx.writeUInt32(this.txId); ctx.writeUInt32(0x7d2); // Database query ctx.writeUInt32(0x0); await this.writeWithLength(ctx, socket); @@ -375,7 +378,7 @@ export class FileTransfer extends Service { // 0x7d4: Request transfer id? const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(0x0); + ctx.writeUInt32(this.txId); ctx.writeUInt32(0x7d4); ctx.writeNetworkStringUTF16(p_filepath); ctx.writeUInt32(0x0); // Not sure why we need 0x0 here @@ -386,7 +389,7 @@ export class FileTransfer extends Service { // 0x7d5: seems to be the code to request chunk range const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(0x0); + ctx.writeUInt32(this.txId); ctx.writeUInt32(0x7d5); ctx.writeUInt32(0x0); ctx.writeUInt32(p_txid); // I assume this is the transferid @@ -401,11 +404,23 @@ export class FileTransfer extends Service { // 0x7d6: seems to be the code to signal transfer completed const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(0x0); + ctx.writeUInt32(this.txId); ctx.writeUInt32(0x7d6); await this.writeWithLength(ctx, socket); } + // 00000013 666c747 80000009f 00000003 00000000 010100 + private async sendNoSourcesReply(socket: Socket, p_data: FileTransferData) { + const ctx = new WriteContext(); + ctx.writeFixedSizedString(MAGIC_MARKER); + ctx.writeUInt32(p_data.message.txId); + ctx.writeUInt32(0x3); + ctx.writeUInt32(0x0); + ctx.writeUInt16(257); + ctx.writeUInt8(0x0); + await this.writeWithLength(ctx, socket); + } + public async isAvailable(): Promise { while (!this._isAvailable) { await sleep(250) From 4517d0c3eb9a448d9df707c33ad4c6d29c422488 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 21 Oct 2022 12:33:40 -0400 Subject: [PATCH 045/146] txid, filetransferprogress messages --- Databases/Databases.ts | 14 ++++++++----- StageLinq/index.ts | 27 +++++++++++++++++++----- cli/index.ts | 45 ++++++++++++++++++++++++++++++---------- network/Discovery.ts | 2 +- services/FileTransfer.ts | 28 +++++++++++++++---------- services/Service.ts | 16 +++++++------- 6 files changed, 91 insertions(+), 41 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 678d299..e4757a6 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -58,16 +58,19 @@ export class Databases extends EventEmitter { //const socket = this.parent.devices.getSocket(new DeviceId(deviceId), Services.FileTransfer.name); const socket = this.parent.sockets[deviceId].get('FileTransfer'); + let thisTxid: number = 0 for (const [sourceName, source] of service.sources) { const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); Logger.info(`Reading database ${deviceId}/${source.name}`); - this.emit('dbDownloading', deviceId, dbPath); + this.emit('dbDownloading', sourceName, dbPath); - service.on('fileTransferProgress', (progress) => { - this.emit('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + service.on('fileTransferProgress', (txid, progress) => { + if (thisTxid === txid) { + this.emit('dbProgress', sourceName, progress.total, progress.bytesDownloaded, progress.percentComplete); + //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + } }); source.database.local = { @@ -75,6 +78,7 @@ export class Databases extends EventEmitter { }; // Save database to a file + thisTxid = service.txid; const file = await service.getFile(source.database.location, socket); Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); @@ -82,7 +86,7 @@ export class Databases extends EventEmitter { Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); this.emit('dbDownloaded', deviceId, dbPath); this.sources.set(sourceName, source) - Logger.info(sourceName, source); + //Logger.info(sourceName, source); } } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index f29169e..3c0c640 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -44,6 +44,10 @@ export declare interface StageLinq { on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; on(event: 'message', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; + + //on(event: 'fileDownloaded', listener: (sourceName: string, dbPath: string) => void): this; + //on(event: 'fileDownloading', listener: (sourceName: string, dbPath: string) => void): this; + on(event: 'fileProgress', listener: (path: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; } /** @@ -152,12 +156,13 @@ export class StageLinq extends EventEmitter { private async setupFileTransfer(service: InstanceType) { - const fileTransfer = service as Services.FileTransfer; + // const fileTransfer = service as Services.FileTransfer; - fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { - Logger.debug(`received ${sourcename} ${dbPath}`); - //testDownloadFile(this); - }); + Logger.silly(`Set up Service ${service.name}`); + // fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { + // Logger.debug(`received ${sourcename} ${dbPath}`); + // //testDownloadFile(this); + // }); } @@ -209,8 +214,20 @@ export class StageLinq extends EventEmitter { const socket = this.sockets[deviceId.toString()].get('FileTransfer'); assert(socket); + + await service.isAvailable(); + let thisTxid = service.txid; + + service.on('fileTransferProgress', (txid, progress) => { + //Logger.warn(thisTxid, txid); + if (thisTxid === txid) { + this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); + //Logger.debug('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); + } + }); + try { const file = await service.getFile(path,socket); return file; diff --git a/cli/index.ts b/cli/index.ts index 171b3c1..50094e6 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -19,7 +19,21 @@ require('console-stamp')(console, { * @returns Track info */ -let dbDownloaded: boolean = false; +//let dbDownloaded: boolean = false; + +function progressBar(size: number, bytes: number, total: number): string { + + const progress = Math.ceil((bytes / total) * 10) + let progressArrary = new Array(size); + progressArrary.fill(' '); + if (progress) { + + for (let i=0; i { - console.debug(...args); - args.push("\n"); - }); + // stageLinq.logger.on('debug', (...args: any) => { + // console.debug(...args); + // args.push("\n"); + // }); // Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); // }); // Fires when we connect to any device - stageLinq.on('connected', async (connectionInfo) => { - console.log(`Successfully connected to ${connectionInfo.software.name}`); + //stageLinq.on('connected', async (connectionInfo) => { + // console.log(`Successfully connected to ${connectionInfo.software.name}`); if (stageLinq.options.downloadDbSources) { // Fires when the database source starts downloading. @@ -122,18 +136,27 @@ async function main() { }); // Fires while the database source is being read - stageLinq.databases.on('dbProgress', (sourceName, total, bytes, percent) => { - console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); + stageLinq.databases.on('dbProgress', ( sourceName, total, bytes, percent) => { + //console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); + console.debug(`Reading ${sourceName}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); }); // Fires when the database source has been read and saved to a temporary path. stageLinq.databases.on('dbDownloaded', (sourceName, dbPath) => { console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); - dbDownloaded = true; + // dbDownloaded = true; + }); + + stageLinq.on('fileProgress', (file, total, bytes, percent) => { + //Logger.warn(thisTxid, txid); + //if (thisTxid === txid) { + //this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); + console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); + //} }); } - }); + //}); // Fires when StageLinq and all devices are ready to use. stageLinq.on('ready', () => { diff --git a/network/Discovery.ts b/network/Discovery.ts index 682c154..ce28be2 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -7,7 +7,7 @@ import { strict as assert } from 'assert'; import { sleep, WriteContext } from '../utils'; import { networkInterfaces } from 'os'; import { subnet, SubnetInfo } from 'ip'; -import * as Services from '../services'; +//import * as Services from '../services'; import { Logger } from '../LogEmitter'; import { StageLinq } from '../StageLinq'; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 1c68d8f..58ca652 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -43,8 +43,8 @@ interface FileTransferProgress { } export declare interface FileTransfer { - on(event: 'fileTransferProgress', listener: (progress: FileTransferProgress) => void): this; - on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; + on(event: 'fileTransferProgress', listener: (txId: number, progress: FileTransferProgress) => void): this; + //on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; } export class FileTransfer extends Service { @@ -59,6 +59,10 @@ export class FileTransfer extends Service { async init() {} + public get txid() { + return this.txId; + } + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) @@ -87,7 +91,7 @@ export class FileTransfer extends Service { return { id: MessageId.RequestSources, message: { - txId: txId, + txid: txId, }, socket: socket, }; @@ -115,6 +119,7 @@ export class FileTransfer extends Service { return { id: messageId, message: { + txid: txId, sources: sources, socket: socket, }, @@ -132,6 +137,7 @@ export class FileTransfer extends Service { id: messageId, message: { size: size, + txid: txId, }, socket: socket, }; @@ -152,14 +158,14 @@ export class FileTransfer extends Service { assert(p_ctx.readUInt32() === 0x0); const filesize = p_ctx.readUInt32(); const id = p_ctx.readUInt32(); - + assert(id === 1) //Logger.debug(id, filesize); return { id: messageId, socket: socket, message: { size: filesize, - txid: id, + txid: txId, }, }; } @@ -176,6 +182,7 @@ export class FileTransfer extends Service { id: messageId, socket: socket, message: { + txid: txId, data: p_ctx.readRemainingAsNewBuffer(), offset: offset, size: chunksize, @@ -226,7 +233,7 @@ export class FileTransfer extends Service { this.receivedFile.write(p_data.message.data); } if (p_data && p_data.id === MessageId.RequestSources) { - Logger.warn(`req source ${p_data.message.txId} from ${this.getDeviceIdFromSocket(p_data.socket)} `) + //Logger.warn(`req source ${p_data.message.txId} from ${this.getDeviceIdFromSocket(p_data.socket)} `) this.sendNoSourcesReply(p_data.socket, p_data); } } @@ -253,7 +260,6 @@ export class FileTransfer extends Service { this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); const total = parseInt(txinfo.size); - Logger.debug(totalChunks, total) if (total === 0) { Logger.warn(`${p_location} doesn't exist or is a streaming file`); @@ -261,7 +267,7 @@ export class FileTransfer extends Service { this._isAvailable = true; return; } - await this.requestChunkRange(txinfo.txid, 0, totalChunks - 1, socket); + await this.requestChunkRange(1, 0, totalChunks - 1, socket); try { await new Promise(async (resolve, reject) => { @@ -272,14 +278,14 @@ export class FileTransfer extends Service { while (this.receivedFile.isEOF() === false) { const bytesDownloaded = total - this.receivedFile.sizeLeft(); const percentComplete = (bytesDownloaded / total) * 100; - this.emit('fileTransferProgress', { + this.emit('fileTransferProgress', this.txId,{ sizeLeft: this.receivedFile.sizeLeft(), total: txinfo.size, bytesDownloaded: bytesDownloaded, percentComplete: percentComplete }) //Logger.info(`sizeleft ${this.receivedFile.sizeLeft()} total ${txinfo.size} total ${total}`); - Logger.info(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); + //Logger.info(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } Logger.info(`Download complete.`); @@ -413,7 +419,7 @@ export class FileTransfer extends Service { private async sendNoSourcesReply(socket: Socket, p_data: FileTransferData) { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(p_data.message.txId); + ctx.writeUInt32(p_data.message.txid); ctx.writeUInt32(0x3); ctx.writeUInt32(0x0); ctx.writeUInt16(257); diff --git a/services/Service.ts b/services/Service.ts index f9c47b8..de8cbb9 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -9,14 +9,14 @@ import * as net from 'net'; import type { ServiceMessage, IpAddressPort } from '../types'; import { StageLinq } from '../StageLinq'; -export declare interface ServiceDevice { - on(event: 'listening', listener: (address: AddressInfo) => void): this; - on(event: 'connected', listener: (socket: Socket) => void): this; - //on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; - //on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; - //on(event: 'message', listener: (connectionInfo: ConnectionInfo, message: ServiceMessage) => void): this; - //on(event: 'ready', listener: () => void): this; - } +// export declare interface ServiceDevice { +// on(event: 'listening', listener: (address: AddressInfo) => void): this; +// on(event: 'connected', listener: (socket: Socket) => void): this; +// //on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; +// //on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; +// //on(event: 'message', listener: (connectionInfo: ConnectionInfo, message: ServiceMessage) => void): this; +// //on(event: 'ready', listener: () => void): this; +// } export declare type ServiceData = { socket?: Socket; From e9a1ab15c653ebb6413a5b3e0994e4761440afcb Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 10 Mar 2023 13:14:04 -0500 Subject: [PATCH 046/146] Add BeatInfo --- StageLinq/index.ts | 42 +++++++++++++++ services/BeatInfo.ts | 122 ++++++++++++++++++++++++++++++++++++++++++ services/Directory.ts | 6 +++ services/index.ts | 2 +- utils/ReadContext.ts | 12 +++++ 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 services/BeatInfo.ts diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 3c0c640..a395503 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -8,6 +8,7 @@ import * as Services from '../services'; import { Socket } from 'net'; import { assert } from 'console'; import { sleep } from '../utils'; +import { BeatData } from '../services/BeatInfo'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -109,6 +110,7 @@ export class StageLinq extends EventEmitter { this.serviceList = [ Services.FileTransfer.name, Services.StateMap.name, + Services.BeatInfo.name, ]; // Directory is required @@ -150,6 +152,9 @@ export class StageLinq extends EventEmitter { if (service.name == 'FileTransfer' ) { this.setupFileTransfer(service) } + if (service.name == 'BeatInfo' ) { + this.setupBeatInfo(service) + } this._services.set(serviceName, service); return service; } @@ -205,6 +210,43 @@ export class StageLinq extends EventEmitter { } + private async setupBeatInfo(service: InstanceType) { + // const fileTransfer = service as Services.FileTransfer; + + Logger.silly(`Set up Service ${service.name}`); + + const beatInfo = service as Services.BeatInfo; + + // Just a counter to test resolution + let beatCalls: number = 0; + + // User callback function. + // Will be triggered everytime a player's beat counter crosses the resolution threshold + function beatCallback(bd: BeatData) { + let playerBeatString = "" + for (let i=0; i{ + beatInfo.startBeatInfo(beatCallback, beatOptions, socket); + }); + + + + + } + async downloadFile(_deviceId: string, path: string) { const deviceId = new DeviceId(_deviceId); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts new file mode 100644 index 0000000..ec3df1c --- /dev/null +++ b/services/BeatInfo.ts @@ -0,0 +1,122 @@ +import { strict as assert } from 'assert'; +import { ReadContext } from '../utils/ReadContext'; +import { WriteContext } from '../utils/WriteContext'; +import { Service } from './Service'; +//import { Logger } from '../LogEmitter'; +import type { ServiceMessage, DeviceId } from '../types'; +import { Socket } from 'net'; + +type beatCallback = (n: BeatData) => void; + +type BeatOptions = { + everyNBeats: number, +} + +interface playerBeatData { + beat: number; + totalBeats: number; + BPM: number; + samples?: number; +} +export interface BeatData { + clock: bigint; + playerCount: number; + player: playerBeatData[]; +} + +export declare interface BeatInfo { + on(event: 'message', listener: (message: BeatData) => void): this; + } + +export class BeatInfo extends Service { + public name: string = "BeatInfo"; + + private _userBeatCallback: beatCallback = null; + private _userBeatOptions: BeatOptions = null; + private _currentBeatData: BeatData = null; + + + async init() {} + + public async startBeatInfo(beatCB: beatCallback, options: BeatOptions, socket?: Socket) { + this._userBeatCallback = beatCB; + this._userBeatOptions = options; + + + this.sendBeatInfoRequest(socket); + } + + private async sendBeatInfoRequest(socket: Socket) { + const ctx = new WriteContext(); + ctx.write(new Uint8Array([0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0])) + await this.write(ctx, socket); + } + + protected parseData(p_ctx: ReadContext): ServiceMessage { + assert(p_ctx.sizeLeft() > 72); + let id = p_ctx.readUInt32() + const clock = p_ctx.readUInt64(); + const playerCount = p_ctx.readUInt32(); + let player: playerBeatData[] = []; + for (let i=0; i): void { + if (p_data && p_data.message) { + function resCheck(res: number, prevBeat: number, currentBeat: number ) { + return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) + || ( Math.floor(prevBeat/res) - Math.floor(currentBeat/res) >= 1) + } + + if (!this._currentBeatData) { + this._currentBeatData = p_data.message + this._userBeatCallback(p_data.message); + } + + let hasUpdated = false; + for (let i = 0; i { + // assert(( messageId )); + // assert(( socket )); + // assert(( deviceId )); + // assert(( serviceName )); + + return + } +} \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index dfb31e1..dfd7b1e 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -8,6 +8,7 @@ import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import { FileTransfer } from './FileTransfer'; import { StateMap } from './StateMap'; +import { BeatInfo } from './BeatInfo'; export interface DirectoryData { deviceId: string; @@ -111,6 +112,11 @@ export class Directory extends Service { services.push(stateMap); break; } + case 'BeatInfo': { + const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); + services.push(beatInfo); + break; + } default: break; } diff --git a/services/index.ts b/services/index.ts index bc2221a..f3db61a 100644 --- a/services/index.ts +++ b/services/index.ts @@ -2,4 +2,4 @@ export * from './FileTransfer'; export * from './Service'; export * from './StateMap'; export * from './Directory'; -//export * from './TimeSync'; \ No newline at end of file +export * from './BeatInfo'; \ No newline at end of file diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index 21fdf82..917655d 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -64,6 +64,18 @@ export class ReadContext extends Context { return result; } + readFloat64(): number { + const offset = this.pos; + if (offset + 8 <= this.buffer.byteLength) { + const value = new DataView(this.buffer).getFloat64(this.pos, this.littleEndian); + this.pos += 8; + return value; + } + + assert.fail(`Read outside buffer`); + return null; + } + readUInt64(): bigint { const offset = this.pos; if (offset + 8 <= this.buffer.byteLength) { From 56fcb6840a127c88abe2e75f0f228b02168073b0 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 10 Mar 2023 13:20:22 -0500 Subject: [PATCH 047/146] Small Fix for beatInfo --- services/BeatInfo.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index ec3df1c..3b1f3be 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -2,7 +2,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -//import { Logger } from '../LogEmitter'; +import { Logger } from '../LogEmitter'; import type { ServiceMessage, DeviceId } from '../types'; import { Socket } from 'net'; @@ -112,11 +112,8 @@ export class BeatInfo extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - // assert(( messageId )); - // assert(( socket )); - // assert(( deviceId )); - // assert(( serviceName )); - - return + assert((socket)); + Logger.silly(`${messageId} to ${serviceName} from ${deviceId.toString()}`) + return } } \ No newline at end of file From 0ec08a8898d7c793a6fd74beafef96d4ebf8e62d Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 10 Mar 2023 19:25:41 -0500 Subject: [PATCH 048/146] Slimmed down discovery --- cli/index.ts | 10 +++--- network/Discovery.ts | 44 +++++++++++++++++------- types/Devices.ts | 79 +++++++++++++++++++++++++++++++++++--------- 3 files changed, 101 insertions(+), 32 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 50094e6..d627dce 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -116,11 +116,11 @@ async function main() { console.log(...args); args.push("\n"); }); - // stageLinq.logger.on('debug', (...args: any) => { - // console.debug(...args); - // args.push("\n"); - // }); - // Note: Silly is very verbose! + stageLinq.logger.on('debug', (...args: any) => { + console.debug(...args); + args.push("\n"); + }); + //Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); // }); diff --git a/network/Discovery.ts b/network/Discovery.ts index ce28be2..a207bac 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,4 @@ -import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, } from '../types'; +import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, deviceIdFromBuff } from '../types'; import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; @@ -38,6 +38,7 @@ export class Discovery { public parent: InstanceType; private announceTimer: NodeJS.Timer; + private hasLooped: boolean = false; constructor(_parent: InstanceType) { this.parent = _parent; @@ -46,9 +47,25 @@ export class Discovery { async init(options:DiscoveryMessageOptions) { this.options = options; await this.listenForDevices( (connectionInfo) => { - const deviceId = new DeviceId(connectionInfo.token) - this.peers.set(deviceId.toString(), connectionInfo); - this.parent.devices.setInfo(deviceId, connectionInfo); + + + if (!this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { + const deviceId = new DeviceId(connectionInfo.token) + this.peers.set(deviceId.toString(), connectionInfo); + this.parent.devices.setInfo(deviceId, connectionInfo); + Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${deviceId.toString()}`) + } else { + this.hasLooped = true; + } + + if (this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && this.parent.devices.getDeviceInfoFromString(deviceIdFromBuff(connectionInfo.token)).port !== connectionInfo.port) { + const deviceId = new DeviceId(connectionInfo.token) + this.peers.set(deviceId.toString(), connectionInfo); + this.parent.devices.setInfo(deviceId, connectionInfo); + Logger.debug(`Updated port for From ${deviceId.toString()}`) + } + + }); } @@ -61,7 +78,10 @@ export class Discovery { // wait for a recieved UDP message to determine the correct interface // no need to rush this as we want the list of peers to be close to complete - while (!this.address) { + // while (!this.address) { + // await sleep(250); + // } + while (!this.hasLooped) { await sleep(250); } @@ -110,13 +130,13 @@ export class Discovery { private async listenForDevices(callback: DeviceDiscoveryCallback) { this.socket = UDPSocket.createSocket('udp4'); this.socket.on('message', (p_announcement: Uint8Array, p_remote: RemoteInfo) => { - const ctx = new ReadContext(p_announcement.buffer, false); - const result = this.readConnectionInfo(ctx, p_remote.address); - if (!this.address) { - this.address = p_remote.address - } - assert(ctx.tell() === p_remote.size); - callback(result); + const ctx = new ReadContext(p_announcement.buffer, false); + const result = this.readConnectionInfo(ctx, p_remote.address); + if (!this.address) { + this.address = p_remote.address + } + assert(ctx.tell() === p_remote.size); + callback(result); }); this.socket.bind({ port: LISTEN_PORT, diff --git a/types/Devices.ts b/types/Devices.ts index 65c47cc..96fc9a1 100644 --- a/types/Devices.ts +++ b/types/Devices.ts @@ -1,9 +1,42 @@ import * as Services from '../services'; import { Socket } from 'net'; import { ConnectionInfo, DeviceId, IpAddressPort, } from '../types'; -import { Logger } from '../LogEmitter'; +//import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; +// const deviceTypes = { + +// player: [ +// 'JP13', +// 'JP14', +// ], +// mixer: [ +// 'JM08', +// ], +// allInOne: [ +// 'JP04', +// ], +// } + +// function mapTypes() { +// let devices = new Map(); +// for (let player of deviceTypes.player) { +// devices.set(player, "player" ) +// } +// for (let mixer of deviceTypes.mixer) { +// devices.set(mixer, "mixer" ) +// } +// for (let allInOne of deviceTypes.allInOne) { +// devices.set(allInOne, "all-in-one" ) +// } +// return devices +// } + + +// const deviceTypeMap = mapTypes(); +// //console.log(deviceTypeMap.get('JP13')); + +// //console.log(deviceTypeMap) type DeviceService = Map>; @@ -11,7 +44,7 @@ type DeviceSocket = Map; type IpAddressPortDeviceId = Map; -export interface Device { +export interface IDevice { [key: string]: { info: ConnectionInfo; service?: DeviceService; @@ -19,42 +52,58 @@ export interface Device { } } + export class Devices { - private devices: Device = {}; + private _devices: IDevice = {}; + //private devices: Map = new Map(); getInfo(deviceId: DeviceId) { - return this.devices[deviceId.toString()].info; + return this._devices[deviceId.toString()].info; } setInfo(deviceId: DeviceId, info: ConnectionInfo) { - if (!this.devices[deviceId.toString()]) { - this.devices[deviceId.toString()] = { + if (!this._devices[deviceId.toString()]) { + this._devices[deviceId.toString()] = { info: info }; } else { - this.devices[deviceId.toString()].info = info; + this._devices[deviceId.toString()].info = info; } + + // if (!this.devices.has(deviceId)) { + // this.devices.set(deviceId, new Device(info)) + // } else { + // //this.devices.set() + // } } getService(deviceId: DeviceId, serviceName: string) { - return this.devices[deviceId.toString()].service.get(serviceName); + return this._devices[deviceId.toString()].service.get(serviceName); } setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { - this.devices[deviceId.toString()].service.set(serviceName, service); + this._devices[deviceId.toString()].service.set(serviceName, service); } getSocket(deviceId: DeviceId, serviceName: string) { - return this.devices[deviceId.toString()].socket.get(serviceName); + return this._devices[deviceId.toString()].socket.get(serviceName); } setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { - this.devices[deviceId.toString()].socket.set(serviceName, socket); + this._devices[deviceId.toString()].socket.set(serviceName, socket); } - async hasDeviceId(deviceId: DeviceId) { - // while (this.devices[deviceId.] + hasDeviceId(deviceId: DeviceId) { + return !!this._devices[deviceId.toString()] + } + + hasDeviceIdString(deviceIdString: string) { + return !!this._devices[deviceIdString] + } + + getDeviceInfoFromString(deviceIdString: string): ConnectionInfo { + return this._devices[deviceIdString].info } async getDeviceIdFromIpAddressPort(ipAddressPort: IpAddressPort): Promise { @@ -62,9 +111,9 @@ export class Devices { let devices: IpAddressPortDeviceId = new Map(); while (!devices.has(ipAddressPort)) { - const keys = Object.keys(this.devices); + const keys = Object.keys(this._devices); for (const key of keys) { - if (this.devices[key].info) { + if (this._devices[key].info) { //Logger.warn(`found ${key}`) devices.set(ipAddressPort, new DeviceId(key)) } From 19d8d8db12fe199d0024c22252fa262de7d00fdb Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 11 Mar 2023 13:36:20 -0500 Subject: [PATCH 049/146] minor cleanup --- services/Service.ts | 2 +- services/StateMap.ts | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/services/Service.ts b/services/Service.ts index de8cbb9..5c696a9 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -62,7 +62,7 @@ export abstract class Service extends EventEmitter { protected timeout: NodeJS.Timer; protected expectedDeviceId: DeviceId = null; - private msgId: number = 0; //only used fro debugging + private msgId: number = 0; //only used for debugging constructor(p_parent:InstanceType, deviceId?: DeviceId) { super(); diff --git a/services/StateMap.ts b/services/StateMap.ts index 3f74738..4b0703f 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -127,7 +127,6 @@ export class StateMap extends Service { const deviceId = this.getDeviceIdFromSocket(socket); - //Logger.debug('checking stateMap', this.parent.discovery.peers.keys()); while (!this.parent.discovery.peers.has(deviceId.toString())) { await sleep(200); } @@ -135,8 +134,8 @@ export class StateMap extends Service { Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); const thisPeer = this.parent.discovery.peers.get(deviceId.toString()); - //assert(thisPeer); + //TODO Better test for mixer if (thisPeer && thisPeer.software.name === 'JM08') { for (const state of StatesMixer) { await this.subscribeState(state, 0, socket); @@ -144,22 +143,14 @@ export class StateMap extends Service { } else { for (const state of States) { await this.subscribeState(state, 0, socket); - } - //const keys = Object.keys(StageLinqValueObj); - //const values = keys.map(key => Reflect.get(StageLinqValueObj,key)) - //for (const value of values) { - // await this.subscribeState(value, 0, socket); - //} + } } } - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) sleep(500) - - //this.subscribe(socket); this.emit('newStateMapDevice', deviceId, socket) return } From 8b473bc8f379d42b50ec3532dc90a32904fb23db Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 11 Mar 2023 22:12:07 -0500 Subject: [PATCH 050/146] DeviceIds service Class --- StageLinq/index.ts | 84 ++++++++++------------------------- cli/index.ts | 6 +-- services/BeatInfo.ts | 1 - services/Directory.ts | 12 ++--- services/FileTransfer.ts | 28 ++++++------ services/Service.ts | 94 +++++----------------------------------- services/StateMap.ts | 5 +++ types/common.ts | 3 ++ types/index.ts | 19 ++++++++ 9 files changed, 85 insertions(+), 167 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index a395503..59f1ea1 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,5 +1,5 @@ import { Discovery } from '../network'; -import { Player } from '../devices/Player'; +//import { Player } from '../devices/Player'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; @@ -7,7 +7,7 @@ import { Databases } from '../Databases'; import * as Services from '../services'; import { Socket } from 'net'; import { assert } from 'console'; -import { sleep } from '../utils'; +// import { sleep } from '../utils'; import { BeatData } from '../services/BeatInfo'; @@ -23,6 +23,10 @@ export interface DeviceServices { [key: string]: DeviceService; } +export interface ServiceList { + [key: string]: InstanceType; +} + type DeviceSocket = Map export interface DeviceSockets { @@ -43,7 +47,7 @@ export declare interface StageLinq { on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; - on(event: 'message', listener: ( message: ServiceMessage) => void): this; + on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; //on(event: 'fileDownloaded', listener: (sourceName: string, dbPath: string) => void): this; @@ -161,65 +165,34 @@ export class StageLinq extends EventEmitter { private async setupFileTransfer(service: InstanceType) { - // const fileTransfer = service as Services.FileTransfer; - - Logger.silly(`Set up Service ${service.name}`); - // fileTransfer.on('dbDownloaded', (sourcename, dbPath) => { - // Logger.debug(`received ${sourcename} ${dbPath}`); - // //testDownloadFile(this); - // }); + const fileTransfer = service as Services.FileTransfer; + Logger.silly(`Set up Service ${fileTransfer.name}`); } private async setupStateMap(service: InstanceType) { - // Setup StateMap const stateMap = service as Services.StateMap; - stateMap.on('message', (data) => { - this.emit('message', data) - }); - - // Setup Player - await stateMap.on('newStateMapDevice', (deviceId, socket) => { - const player = new Player({ - stateMap: stateMap, - address: socket.remoteAddress, - port: socket.remotePort, - deviceId: deviceId.toString(), - }); - - //wait for Player to setup - while (!player.ready) { - sleep(250); - } - - stateMap.subscribe(socket); - - player.on('trackLoaded', (status) => { - this.emit('trackLoaded', status); - }); + const listener = (data: ServiceMessage) => { + if (data && data.message && data.message.json) { + console.log(data.message.name,">>", data.message.json); + } + }; - player.on('stateChanged', (status) => { - this.emit('stateChanged', status); - }); + stateMap.addListener('stateMessage', listener) - player.on('nowPlaying', (status) => { - this.emit('nowPlaying', status); - }); - }) + await stateMap.on('newStateMapDevice', (deviceId: DeviceId, socket: Socket) => { + Logger.debug(`New StateMap Device ${deviceId.toString()}`) + stateMap.subscribe(socket); + }) } private async setupBeatInfo(service: InstanceType) { - // const fileTransfer = service as Services.FileTransfer; - - Logger.silly(`Set up Service ${service.name}`); - const beatInfo = service as Services.BeatInfo; - + Logger.silly(`Set up Service ${beatInfo.name}`); // Just a counter to test resolution - let beatCalls: number = 0; - + let beatCalls: number = 0; // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold function beatCallback(bd: BeatData) { @@ -230,21 +203,14 @@ export class StageLinq extends EventEmitter { console.warn(`Total Calls ${beatCalls} ${playerBeatString}`); beatCalls++ } - // User Options const beatOptions = { everyNBeats: 1, // 1 = every beat, 4 = every 4 beats, .25 = every 1/4 beat } - // Start BeatInfo, pass user callback - - beatInfo.server.on("connection", (socket) =>{ - beatInfo.startBeatInfo(beatCallback, beatOptions, socket); + beatInfo.server.on("connection", (socket) =>{ + beatInfo.startBeatInfo(beatCallback, beatOptions, socket); }); - - - - } async downloadFile(_deviceId: string, path: string) { @@ -256,17 +222,13 @@ export class StageLinq extends EventEmitter { const socket = this.sockets[deviceId.toString()].get('FileTransfer'); assert(socket); - - await service.isAvailable(); let thisTxid = service.txid; service.on('fileTransferProgress', (txid, progress) => { - //Logger.warn(thisTxid, txid); if (thisTxid === txid) { this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); - //Logger.debug('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); } }); diff --git a/cli/index.ts b/cli/index.ts index d627dce..8e4bf6b 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -73,10 +73,8 @@ async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: st async function main() { - - console.log('Starting CLI'); - + console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { @@ -183,7 +181,7 @@ async function main() { }); // Fires when StageLinq receives messages from a device. - stageLinq.on('message', (data) => { + stageLinq.on('stateMessage', (data) => { if (data.message.json) { const msg = data.message.json ? JSON.stringify(data.message.json) diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 3b1f3be..4b0f30c 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -107,7 +107,6 @@ export class BeatInfo extends Service { this._userBeatCallback(p_data.message); } } - } diff --git a/services/Directory.ts b/services/Directory.ts index dfd7b1e..3c8f19c 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -41,12 +41,12 @@ export class Directory extends Service { while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); - const deviceId = new DeviceId(token); - const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const peer = this.parent.discovery.peers.get(deviceId.toString()); + this.deviceId = new DeviceId(token); + //const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + const peer = this.parent.discovery.peers.get(this.deviceId.toString()); - this.peerDeviceIds[ipAddressPort] = deviceId; - this.peerSockets.set(deviceId, socket); + //this.peerDeviceIds[ipAddressPort] = deviceId; + //this.peerSockets.set(deviceId, socket); switch (id) { case MessageId.TimeStamp: @@ -70,7 +70,7 @@ export class Directory extends Service { break; case MessageId.ServicesRequest: ctx.readRemaining(); // - this.sendServiceAnnouncement(deviceId, socket); + this.sendServiceAnnouncement(this.deviceId, socket); break; default: assert.fail(`NetworkDevice Unhandled message id '${id}'`); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 58ca652..ba6332c 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,4 +1,4 @@ -import { DOWNLOAD_TIMEOUT, IpAddressPort } from '../types'; +import { DOWNLOAD_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceData } from './Service'; @@ -71,8 +71,8 @@ export class FileTransfer extends Service { protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const deviceId = this.peerDeviceIds[ipAddressPort]; + //const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + //const deviceId = this.peerDeviceIds[ipAddressPort]; const check = p_ctx.getString(4); if (check !== MAGIC_MARKER) { @@ -112,7 +112,7 @@ export class FileTransfer extends Service { assert(p_ctx.isEOF()); if (sources.length) { - Logger.debug(`getting sources for `, deviceId.toString()); + //Logger.debug(`getting sources for `, deviceId.toString()); this.getSources(sources, socket); } @@ -194,7 +194,7 @@ export class FileTransfer extends Service { //sizeLeft() of 6 means its not an offline analyzer //FIXME actually parse these messages //if (p_ctx.sizeLeft() >= 5) { - Logger.debug(`requesting sources from `, deviceId.toString()); + //Logger.debug(`requesting sources from `, deviceId.toString()); this.requestSources(socket); //} @@ -228,6 +228,8 @@ export class FileTransfer extends Service { } protected messageHandler(p_data: ServiceMessage): void { + this.emit('fileMessage', p_data); + if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { //assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); @@ -255,7 +257,7 @@ export class FileTransfer extends Service { this._isAvailable = false; assert(this.receivedFile === null); await this.requestFileTransferId(p_location, socket); - const txinfo = await this.waitForMessage(MessageId.FileTransferId); + const txinfo = await this.waitForMessage('fileMessage', MessageId.FileTransferId); if (txinfo) { this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); @@ -314,16 +316,16 @@ export class FileTransfer extends Service { const result: Source[] = []; let devices: DeviceSources = {} - const deviceId = this.getDeviceIdFromSocket(socket); - const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const msgDeviceId = this.peerDeviceIds[ipAddressPort]; + //const deviceId = this.getDeviceIdFromSocket(socket); + //const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); + //const msgDeviceId = this.peerDeviceIds[ipAddressPort]; for (const source of sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; for (const database of databases) { await this.requestStat(database, socket); - const fstatMessage = await this.waitForMessage(MessageId.FileStat); + const fstatMessage = await this.waitForMessage('fileMessage', MessageId.FileStat); if (fstatMessage.size > 0) { @@ -334,7 +336,7 @@ export class FileTransfer extends Service { size: fstatMessage.size, remote: { location: database, - device: deviceId.toString(), + device: this.deviceId.toString(), } }, @@ -350,9 +352,9 @@ export class FileTransfer extends Service { } } - await this.deviceSources.set(msgDeviceId.toString(), devices); + await this.deviceSources.set(this.deviceId.toString(), devices); - this.parent.databases.downloadDb(msgDeviceId.toString()); + this.parent.databases.downloadDb(this.deviceId.toString()); return result; } diff --git a/services/Service.ts b/services/Service.ts index 5c696a9..e05f1bc 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -9,14 +9,6 @@ import * as net from 'net'; import type { ServiceMessage, IpAddressPort } from '../types'; import { StageLinq } from '../StageLinq'; -// export declare interface ServiceDevice { -// on(event: 'listening', listener: (address: AddressInfo) => void): this; -// on(event: 'connected', listener: (socket: Socket) => void): this; -// //on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; -// //on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; -// //on(event: 'message', listener: (connectionInfo: ConnectionInfo, message: ServiceMessage) => void): this; -// //on(event: 'ready', listener: () => void): this; -// } export declare type ServiceData = { socket?: Socket; @@ -24,30 +16,14 @@ export declare type ServiceData = { service?: InstanceType; } - -//Just a handy debugging feature. I'll expand on this later. -class MsgId { - public id: number = 0; - public loopId: number = 1; - - constructor(p_id?: number) { - this.id = p_id; - } - - incrementId() {this.id++}; - incrementLoopId() {this.loopId++}; - reset() {this.loopId = 1} - toString(): string { return `[${this.id}]:[${this.loopId}]` } -} - type PeerBuffers = { [key: IpAddressPort]: Buffer; } export abstract class Service extends EventEmitter { - //public port: number; - public readonly name: string = "Service"; + public deviceId: DeviceId = null; + protected isBufferedService: boolean = true; protected parent: InstanceType; @@ -56,18 +32,18 @@ export abstract class Service extends EventEmitter { public serverStatus: boolean = false; protected peerDeviceIds: Record = {} - public peerSockets: Map = new Map(); - public _peerSockets: Record = {}; + //public peerSockets: Map = new Map(); + //public _peerSockets: Record = {}; protected peerBuffers: PeerBuffers = {}; protected timeout: NodeJS.Timer; protected expectedDeviceId: DeviceId = null; - - private msgId: number = 0; //only used for debugging + constructor(p_parent:InstanceType, deviceId?: DeviceId) { super(); this.parent = p_parent; this.expectedDeviceId = deviceId || null; + this.deviceId = deviceId || null; } async createServer(): Promise { @@ -85,24 +61,11 @@ export abstract class Service extends EventEmitter { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) - - clearTimeout(this.timeout); //Initialize fresh buffer queue for this connection this.peerBuffers[ipAddressPort] = null; - //get device id from list of peers. will check if undefined later. - //while (!this.parent.devices.getDeviceIdFromIpAddressPort(ipAddressPort)) { - // await sleep(250); - //} - //let deviceId = await this.parent.devices.getDeviceIdFromIpAddressPort(ipAddressPort); - //Logger.warn(_deviceId); - //if (_deviceId) { - // Logger.warn(`deviceIdFromIpAddressPort: ${_deviceId.toString()}`); - //} - - let deviceId = this.peerDeviceIds[ipAddressPort]; socket.on('error', (err) => { @@ -110,10 +73,6 @@ export abstract class Service extends EventEmitter { }); socket.on('data', async p_data => { - - //Only used for debugging. - this.msgId++ - const msgId = new MsgId(this.msgId); //append queue to current data let buffer: Buffer = null; @@ -135,7 +94,6 @@ export abstract class Service extends EventEmitter { if (!this.isBufferedService) { const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket); this.messageHandler(parsedData); - this.emit('message', parsedData); }; // Check if device has announced itself to this service yet @@ -158,41 +116,33 @@ export abstract class Service extends EventEmitter { this.parent.sockets[deviceId.toString()].set(this.name, socket); this.peerDeviceIds[ipAddressPort] = deviceId; //this.peerSockets.set(deviceId,socket); - this._peerSockets[deviceId.toString()] = socket; + //this._peerSockets[deviceId.toString()] = socket; Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket); this.messageHandler(parsedData); - //this.emit('message', parsedData); } try { while (ctx.isEOF() === false) { - if (ctx.sizeLeft() < 4) { this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); break; } - const length = ctx.readUInt32(); - if ( length <= ctx.sizeLeft()) { - + if ( length <= ctx.sizeLeft()) { const message = ctx.read(length); // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - - this.msgId++ const parsedData = this.parseData(new ReadContext(data,false), socket); - this.messageHandler(parsedData); - this.emit('message', parsedData); + } else { ctx.seek(-4); // Rewind 4 bytes to include the length again this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); break; } - msgId.incrementLoopId(); } } catch (err) { Logger.error(this.name, deviceId.toString(), err); @@ -230,15 +180,15 @@ export abstract class Service extends EventEmitter { return this.peerDeviceIds[[socket.remoteAddress, socket.remotePort].join(':')] } - async waitForMessage(p_messageId: number): Promise { + async waitForMessage(message: string, p_messageId: number): Promise { return await new Promise((resolve, reject) => { const listener = (p_message: ServiceMessage) => { if (p_message.id === p_messageId) { - this.removeListener('message', listener); + this.removeListener(message, listener); resolve(p_message.message); } }; - this.addListener('message', listener); + this.addListener(message, listener); setTimeout(() => { reject(new Error(`Failed to receive message '${p_messageId}' on time`)); }, MESSAGE_TIMEOUT); @@ -266,26 +216,6 @@ export abstract class Service extends EventEmitter { return thisEntry.keys.toString(); } - protected testPoint(_ctx: ReadContext, deviceId: string, name: string, silent?:boolean) { - const ctx = _ctx.readRemainingAsNewCtx(); - const length = ctx.sizeLeft(); - let buff = "" - if (!ctx.isEOF()) { - buff = ctx.readRemainingAsNewBuffer().toString('hex'); - } - - ctx.seek(0- length); - if (buff.length > 1000) { - buff = buff.substring(0,40); - buff += "..."; - } - if (silent) { - Logger.silent(`[${this.name}] ${deviceId} (${name}) ${length} ${buff}`); - } else { - Logger.debug(`[${this.name}] ${deviceId} (${name}) ${length} ${buff}`); - } - } - // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); diff --git a/services/StateMap.ts b/services/StateMap.ts index 4b0703f..215b758 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -98,6 +98,9 @@ export const States = [ StageLinqValue.EngineDeck4TrackTrackName, StageLinqValue.EngineDeck4CurrentBPM, StageLinqValue.EngineDeck4ExternalMixerVolume, + //StageLinqValue.PrivateDeck1MidiSamplePosition, + //StageLinqValue.PrivateDeck2MidiSamplePosition, + //StageLinqValue.EngineDeck1PFL, ]; const MAGIC_MARKER = 'smaa'; @@ -206,6 +209,8 @@ export class StateMap extends Service { } protected messageHandler(p_data: ServiceMessage): void { + + this.emit('stateMessage', p_data); if (p_data && p_data.message.json) { Logger.silly( `${p_data.message.deviceId.toString()} ${p_data.message.name} => ${ diff --git a/types/common.ts b/types/common.ts index ff6baf4..cbdd78a 100644 --- a/types/common.ts +++ b/types/common.ts @@ -237,6 +237,9 @@ export enum StageLinqValue { MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', + PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', + PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', + EngineDeck1PFL = '/Engine/Deck1/PFL', } export const StageLinqValueObj = { diff --git a/types/index.ts b/types/index.ts index 0443b46..79d910b 100644 --- a/types/index.ts +++ b/types/index.ts @@ -73,3 +73,22 @@ export interface StageLinqOptions { downloadDbSources?: boolean; services?: ServiceList[]; } + + +export const deviceIds = { + JC11: { name: 'PRIME4', type: 'CONTROLLER' }, + JC16: { name: 'PRIME2', type: 'CONTROLLER' }, + JC20: { name: 'LC6000', type: 'OTHER' }, + JP07: { name: 'SC5000', type: 'PLAYER' }, + JP08: { name: 'SC5000M', type: 'PLAYER' }, + JP11: { name: 'PRIMEGO', type: 'CONTROLLER' }, + JP13: { name: 'SC6000', type: 'PLAYER' }, + JP14: { name: 'SC6000M', type: 'PLAYER' }, + JP20: { name: 'SCLIVE2', type: 'CONTROLLER' }, + JP21: { name: 'SCLIVE4', type: 'CONTROLLER' }, + NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER' }, + NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER' }, + NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER' }, + JM08: { name: 'DN-X1800Prime', type: 'MIXER' }, + JM10: { name: 'DN-X1850Prime', type: 'MIXER' } + } From f07794a3c388e920d5c932df12e9c94f5d8fc826 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 13 Mar 2023 23:47:07 -0400 Subject: [PATCH 051/146] refactor player to deck --- StageLinq/index.ts | 40 ++++++++++------------------------------ services/BeatInfo.ts | 30 +++++++++++++++--------------- 2 files changed, 25 insertions(+), 45 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 59f1ea1..6494bcb 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -23,9 +23,9 @@ export interface DeviceServices { [key: string]: DeviceService; } -export interface ServiceList { - [key: string]: InstanceType; -} +// export interface ServiceList { +// [key: string]: InstanceType; +// } type DeviceSocket = Map @@ -82,27 +82,7 @@ export class StageLinq extends EventEmitter { get databases() { return this._databases; } - /* - setInfo(deviceId: DeviceId, info: ConnectionInfo) { - this.devices[deviceId.toString()].info = info; - } - - getService(deviceId: DeviceId, serviceName: string) { - return this.devices[deviceId.toString()].service.get(serviceName); - } - - setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { - this.devices[deviceId.toString()].service.set(serviceName, service); - } - - getSocket(deviceId: DeviceId, serviceName: string) { - return this.devices[deviceId.toString()].socket.get(serviceName); - } - - setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { - this.devices[deviceId.toString()].socket.set(serviceName, socket); - } -*/ + /** * Connect to the StageLinq network. */ @@ -112,8 +92,8 @@ export class StageLinq extends EventEmitter { // Select Services to offer this.serviceList = [ - Services.FileTransfer.name, - Services.StateMap.name, + //Services.FileTransfer.name, + //Services.StateMap.name, Services.BeatInfo.name, ]; @@ -196,11 +176,11 @@ export class StageLinq extends EventEmitter { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold function beatCallback(bd: BeatData) { - let playerBeatString = "" - for (let i=0; i { assert(p_ctx.sizeLeft() > 72); let id = p_ctx.readUInt32() const clock = p_ctx.readUInt64(); - const playerCount = p_ctx.readUInt32(); - let player: playerBeatData[] = []; - for (let i=0; i { } let hasUpdated = false; - for (let i = 0; i Date: Mon, 13 Mar 2023 23:47:54 -0400 Subject: [PATCH 052/146] add deviceType to ConnectionInfo --- network/Discovery.ts | 39 ++++++++++++++++++++-------- services/Directory.ts | 4 +-- services/StateMap.ts | 4 +-- types/index.ts | 60 +++++++++++++++++++++++++++++++------------ 4 files changed, 76 insertions(+), 31 deletions(-) diff --git a/network/Discovery.ts b/network/Discovery.ts index a207bac..3883d30 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,4 @@ -import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, deviceIdFromBuff } from '../types'; +import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, deviceIdFromBuff, deviceTypes, } from '../types'; import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; @@ -22,6 +22,8 @@ export interface DiscoveryMessageOptions { type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; + + /** * Continuously listens for devices to announce themselves. When they do, * execute a callback. @@ -30,12 +32,14 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export class Discovery { + public parent: InstanceType; + private socket: Socket; private address: IpAddress; private broadcastAddress: IpAddress; private options: DiscoveryMessageOptions = null; - public peers: Map = new Map(); //FIXME figure out getter/setter methods for this? - public parent: InstanceType; + private peers: Map = new Map(); + private announceTimer: NodeJS.Timer; private hasLooped: boolean = false; @@ -44,6 +48,20 @@ export class Discovery { this.parent = _parent; } + public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { + return this.peers.get(deviceId.toString()); + } + + public async setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { + this.peers.set(deviceId.toString(), connectionInfo); + } + + public hasConnectionInfo(deviceId: DeviceId): Boolean { + return this.peers.has(deviceId.toString()); + } + + + async init(options:DiscoveryMessageOptions) { this.options = options; await this.listenForDevices( (connectionInfo) => { @@ -76,11 +94,6 @@ export class Discovery { const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); - // wait for a recieved UDP message to determine the correct interface - // no need to rush this as we want the list of peers to be close to complete - // while (!this.address) { - // await sleep(250); - // } while (!this.hasLooped) { await sleep(250); } @@ -151,7 +164,7 @@ export class Discovery { return null; } - const result: ConnectionInfo = { + const connectionInfo: ConnectionInfo = { token: p_ctx.read(16), source: p_ctx.readNetworkStringUTF16(), action: p_ctx.readNetworkStringUTF16(), @@ -162,9 +175,13 @@ export class Discovery { port: p_ctx.readUInt16(), address: p_address, }; - result.addressPort = [result.address, result.port].join(":"); + connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); + if (deviceTypes[connectionInfo.software.name]) { + connectionInfo.device = deviceTypes[connectionInfo.software.name]; + } + assert(p_ctx.isEOF()); - return result; + return connectionInfo; } diff --git a/services/Directory.ts b/services/Directory.ts index 3c8f19c..15ca15c 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -43,7 +43,7 @@ export class Directory extends Service { const token = ctx.read(16); this.deviceId = new DeviceId(token); //const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const peer = this.parent.discovery.peers.get(this.deviceId.toString()); + const peer = this.parent.discovery.getConnectionInfo(this.deviceId); //this.peerDeviceIds[ipAddressPort] = deviceId; //this.peerSockets.set(deviceId, socket); @@ -136,7 +136,7 @@ export class Directory extends Service { ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); + Logger.silly(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); } diff --git a/services/StateMap.ts b/services/StateMap.ts index 215b758..3f9b951 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -130,13 +130,13 @@ export class StateMap extends Service { const deviceId = this.getDeviceIdFromSocket(socket); - while (!this.parent.discovery.peers.has(deviceId.toString())) { + while (!this.parent.discovery.hasConnectionInfo(deviceId)) { await sleep(200); } Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); - const thisPeer = this.parent.discovery.peers.get(deviceId.toString()); + const thisPeer = this.parent.discovery.getConnectionInfo(deviceId); //TODO Better test for mixer if (thisPeer && thisPeer.software.name === 'JM08') { diff --git a/types/index.ts b/types/index.ts index 79d910b..a71f979 100644 --- a/types/index.ts +++ b/types/index.ts @@ -20,11 +20,31 @@ export interface DiscoveryMessage { port: number; } +export enum DeviceType { + Player = "PLAYER", + Mixer = "MIXER", + Controller = "CONTROLLER", +} + + export interface ConnectionInfo extends DiscoveryMessage { address: IpAddress; + device?: { + name: string, + type: string, + decks: number + }; addressPort?: string; } +// export interface DiscoveryDevice { +// [key: string]: { +// info: ConnectionInfo; + +// } +// } + + export interface ServicePorts { [key: string]: number; } @@ -74,21 +94,29 @@ export interface StageLinqOptions { services?: ServiceList[]; } +type deviceType = { + [key: string] : { + name: string, + type: string, + decks: number + } +} -export const deviceIds = { - JC11: { name: 'PRIME4', type: 'CONTROLLER' }, - JC16: { name: 'PRIME2', type: 'CONTROLLER' }, - JC20: { name: 'LC6000', type: 'OTHER' }, - JP07: { name: 'SC5000', type: 'PLAYER' }, - JP08: { name: 'SC5000M', type: 'PLAYER' }, - JP11: { name: 'PRIMEGO', type: 'CONTROLLER' }, - JP13: { name: 'SC6000', type: 'PLAYER' }, - JP14: { name: 'SC6000M', type: 'PLAYER' }, - JP20: { name: 'SCLIVE2', type: 'CONTROLLER' }, - JP21: { name: 'SCLIVE4', type: 'CONTROLLER' }, - NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER' }, - NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER' }, - NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER' }, - JM08: { name: 'DN-X1800Prime', type: 'MIXER' }, - JM10: { name: 'DN-X1850Prime', type: 'MIXER' } +export const deviceTypes:deviceType = { + JC11: { name: 'PRIME4', type: 'CONTROLLER', decks: 4 }, + JC16: { name: 'PRIME2', type: 'CONTROLLER', decks: 2 }, + JC20: { name: 'LC6000', type: 'OTHER' , decks: 0 }, + JP07: { name: 'SC5000', type: 'PLAYER' , decks: 2 }, + JP08: { name: 'SC5000M', type: 'PLAYER', decks: 2 }, + JP11: { name: 'PRIMEGO', type: 'CONTROLLER', decks: 2 }, + JP13: { name: 'SC6000', type: 'PLAYER', decks: 2 }, + JP14: { name: 'SC6000M', type: 'PLAYER', decks: 2 }, + JP20: { name: 'SCLIVE2', type: 'CONTROLLER', decks: 2 }, + JP21: { name: 'SCLIVE4', type: 'CONTROLLER', decks: 4 }, + NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER', decks: 2 }, + NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER', decks: 2 }, + NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER', decks: 2 }, + JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, + JM10: { name: 'DN-X1850Prime', type: 'MIXER' , decks: 0 }, + //OfflineAnalyzer: { name: 'OfflineAnalyzer', type: 'OTHER' } } From ddd7734acc9dc1f2888b9e5798622594555de841 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 13 Mar 2023 23:48:40 -0400 Subject: [PATCH 053/146] Cleanup --- services/Service.ts | 2 +- types/DeviceId.ts | 7 +++++ types/Devices.ts | 63 ++++++++++++++------------------------------- 3 files changed, 28 insertions(+), 44 deletions(-) diff --git a/services/Service.ts b/services/Service.ts index e05f1bc..6056cf2 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -218,7 +218,7 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { - Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + Logger.silly(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); await server.close(); parent.services[deviceId.toString()].delete(serviceName); } diff --git a/types/DeviceId.ts b/types/DeviceId.ts index 3b2792a..9034bc8 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -1,3 +1,10 @@ +//import { ConnectionInfo } from "./index"; + +// export interface DiscoveryDevice extends ConnectionInfo { +// deviceId: DeviceId; +// } + + class InvalidDeviceIdError extends Error { constructor(m?: string) { super(m || 'Error: invalid DeviceId !'); diff --git a/types/Devices.ts b/types/Devices.ts index 96fc9a1..a6c4ec6 100644 --- a/types/Devices.ts +++ b/types/Devices.ts @@ -4,57 +4,30 @@ import { ConnectionInfo, DeviceId, IpAddressPort, } from '../types'; //import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; -// const deviceTypes = { - -// player: [ -// 'JP13', -// 'JP14', -// ], -// mixer: [ -// 'JM08', -// ], -// allInOne: [ -// 'JP04', -// ], -// } - -// function mapTypes() { -// let devices = new Map(); -// for (let player of deviceTypes.player) { -// devices.set(player, "player" ) -// } -// for (let mixer of deviceTypes.mixer) { -// devices.set(mixer, "mixer" ) -// } -// for (let allInOne of deviceTypes.allInOne) { -// devices.set(allInOne, "all-in-one" ) -// } -// return devices -// } -// const deviceTypeMap = mapTypes(); -// //console.log(deviceTypeMap.get('JP13')); +//type DeviceService = Map>; -// //console.log(deviceTypeMap) - -type DeviceService = Map>; +interface ServicesList { + [key: string]: InstanceType; +} -type DeviceSocket = Map; +//type DeviceSocket = Map; type IpAddressPortDeviceId = Map; export interface IDevice { [key: string]: { info: ConnectionInfo; - service?: DeviceService; - socket?: DeviceSocket; + services?: ServicesList; + } } export class Devices { private _devices: IDevice = {}; + public devices: IDevice = {}; //private devices: Map = new Map(); getInfo(deviceId: DeviceId) { @@ -78,21 +51,25 @@ export class Devices { } + createDevice(deviceId: DeviceId, info: ConnectionInfo) { + this.devices[deviceId.toString()].info = info; + } + getService(deviceId: DeviceId, serviceName: string) { - return this._devices[deviceId.toString()].service.get(serviceName); + return this._devices[deviceId.toString()].services[serviceName]; } setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { - this._devices[deviceId.toString()].service.set(serviceName, service); + this._devices[deviceId.toString()].services[serviceName] = service; } - getSocket(deviceId: DeviceId, serviceName: string) { - return this._devices[deviceId.toString()].socket.get(serviceName); - } + // getSocket(deviceId: DeviceId, serviceName: string) { + // return this._devices[deviceId.toString()].socket.get(serviceName); + // } - setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { - this._devices[deviceId.toString()].socket.set(serviceName, socket); - } + // setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { + // this._devices[deviceId.toString()].socket.set(serviceName, socket); + // } hasDeviceId(deviceId: DeviceId) { return !!this._devices[deviceId.toString()] From 741dfaa45a0f1b4f96fe888d94f9a7f0a3523bf0 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 14 Mar 2023 02:08:30 -0400 Subject: [PATCH 054/146] refactor peerBuffers, code cleanup --- Databases/Databases.ts | 2 + StageLinq/index.ts | 4 +- network/Discovery.ts | 7 ++ services/BeatInfo.ts | 5 +- services/Directory.ts | 13 +-- services/FileTransfer.ts | 13 +-- services/Service.ts | 202 +++++++++++++++++---------------------- services/StateMap.ts | 16 ++-- types/Devices.ts | 2 +- 9 files changed, 115 insertions(+), 149 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index e4757a6..38668a6 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -70,6 +70,8 @@ export class Databases extends EventEmitter { if (thisTxid === txid) { this.emit('dbProgress', sourceName, progress.total, progress.bytesDownloaded, progress.percentComplete); //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + } else { + console.warn(txid, thisTxid) } }); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6494bcb..f072e63 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -92,8 +92,8 @@ export class StageLinq extends EventEmitter { // Select Services to offer this.serviceList = [ - //Services.FileTransfer.name, - //Services.StateMap.name, + Services.FileTransfer.name, + Services.StateMap.name, Services.BeatInfo.name, ]; diff --git a/network/Discovery.ts b/network/Discovery.ts index 3883d30..42343e8 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -60,6 +60,13 @@ export class Discovery { return this.peers.has(deviceId.toString()); } + public getDeviceList(): string[] { + return [...this.peers.keys()] + } + + public getDevices(): ConnectionInfo[] { + return [...this.peers.values()] + } async init(options:DiscoveryMessageOptions) { diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index e939ae5..5ae7e46 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -33,8 +33,7 @@ export class BeatInfo extends Service { private _userBeatCallback: beatCallback = null; private _userBeatOptions: BeatOptions = null; - private _currentBeatData: BeatData = null; - + private _currentBeatData: BeatData = null; async init() {} @@ -42,7 +41,6 @@ export class BeatInfo extends Service { this._userBeatCallback = beatCB; this._userBeatOptions = options; - this.sendBeatInfoRequest(socket); } @@ -109,7 +107,6 @@ export class BeatInfo extends Service { } } - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${messageId} to ${serviceName} from ${deviceId.toString()}`) diff --git a/services/Directory.ts b/services/Directory.ts index 15ca15c..844696d 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -42,11 +42,8 @@ export class Directory extends Service { const id = ctx.readUInt32(); const token = ctx.read(16); this.deviceId = new DeviceId(token); - //const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - const peer = this.parent.discovery.getConnectionInfo(this.deviceId); - - //this.peerDeviceIds[ipAddressPort] = deviceId; - //this.peerSockets.set(deviceId, socket); + + const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); switch (id) { case MessageId.TimeStamp: @@ -56,7 +53,7 @@ export class Directory extends Service { if (ctx.isEOF() === false) { ctx.readRemaining(); } - if (peer && peer.software.name === 'JM08') { + if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { this.sendTimeStampReply(token, socket); } @@ -124,13 +121,11 @@ export class Directory extends Service { this.parent.services[deviceId.toString()] = new Map(); this.parent.sockets[deviceId.toString()] = new Map(); - //this.parent.devices. for (const service of services) { this.parent.services[deviceId.toString()].set(service.name, service); - //this.parent.devices.setService(deviceId, service.name, service); - + ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(service.name); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index ba6332c..aa8a6c0 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -71,9 +71,6 @@ export class FileTransfer extends Service { protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - //const ipAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - //const deviceId = this.peerDeviceIds[ipAddressPort]; - const check = p_ctx.getString(4); if (check !== MAGIC_MARKER) { Logger.error(assert(check === MAGIC_MARKER)) @@ -112,7 +109,7 @@ export class FileTransfer extends Service { assert(p_ctx.isEOF()); if (sources.length) { - //Logger.debug(`getting sources for `, deviceId.toString()); + Logger.silly(`getting sources for `, this.deviceId.toString()); this.getSources(sources, socket); } @@ -132,7 +129,6 @@ export class FileTransfer extends Service { p_ctx.seek(49); const size = p_ctx.readUInt32(); - //Logger.debug(size); return { id: messageId, message: { @@ -159,7 +155,6 @@ export class FileTransfer extends Service { const filesize = p_ctx.readUInt32(); const id = p_ctx.readUInt32(); assert(id === 1) - //Logger.debug(id, filesize); return { id: messageId, socket: socket, @@ -177,7 +172,6 @@ export class FileTransfer extends Service { assert(chunksize === p_ctx.sizeLeft()); assert(p_ctx.sizeLeft() <= CHUNK_SIZE); - //Logger.debug(offset, chunksize); return { id: messageId, socket: socket, @@ -235,7 +229,6 @@ export class FileTransfer extends Service { this.receivedFile.write(p_data.message.data); } if (p_data && p_data.id === MessageId.RequestSources) { - //Logger.warn(`req source ${p_data.message.txId} from ${this.getDeviceIdFromSocket(p_data.socket)} `) this.sendNoSourcesReply(p_data.socket, p_data); } } @@ -316,10 +309,6 @@ export class FileTransfer extends Service { const result: Source[] = []; let devices: DeviceSources = {} - //const deviceId = this.getDeviceIdFromSocket(socket); - //const ipAddressPort:IpAddressPort = [socket.remoteAddress, socket.remotePort].join(':'); - //const msgDeviceId = this.peerDeviceIds[ipAddressPort]; - for (const source of sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; diff --git a/services/Service.ts b/services/Service.ts index 6056cf2..ebac5c4 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,12 +1,12 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, ConnectionInfo, DeviceId } from '../types'; +import { MessageId, MESSAGE_TIMEOUT, DeviceId } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import {Server, Socket, AddressInfo} from 'net'; import * as net from 'net'; -import type { ServiceMessage, IpAddressPort } from '../types'; +import type { ServiceMessage } from '../types'; import { StageLinq } from '../StageLinq'; @@ -16,13 +16,10 @@ export declare type ServiceData = { service?: InstanceType; } -type PeerBuffers = { - [key: IpAddressPort]: Buffer; -} - export abstract class Service extends EventEmitter { public readonly name: string = "Service"; public deviceId: DeviceId = null; + protected _deviceId: DeviceId = null; protected isBufferedService: boolean = true; protected parent: InstanceType; @@ -30,132 +27,42 @@ export abstract class Service extends EventEmitter { public server: Server = null; public serverInfo: AddressInfo; public serverStatus: boolean = false; - - protected peerDeviceIds: Record = {} - //public peerSockets: Map = new Map(); - //public _peerSockets: Record = {}; - protected peerBuffers: PeerBuffers = {}; + public socket: Socket = null; + protected timeout: NodeJS.Timer; - protected expectedDeviceId: DeviceId = null; + private messageBuffer: Buffer = null; constructor(p_parent:InstanceType, deviceId?: DeviceId) { super(); this.parent = p_parent; - this.expectedDeviceId = deviceId || null; this.deviceId = deviceId || null; } async createServer(): Promise { return await new Promise((resolve, reject) => { - const server = net.createServer(async (socket) => { + const server = net.createServer( (socket) => { - //Handle identification of incoming socket. - const addressInfo:AddressInfo = { - address: socket.remoteAddress, - port: socket.remotePort, - family: socket.remoteFamily, - } - const ipAddressPort = [addressInfo.address, addressInfo.port].join(":"); - Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) - clearTimeout(this.timeout); - //Initialize fresh buffer queue for this connection - this.peerBuffers[ipAddressPort] = null; - - let deviceId = this.peerDeviceIds[ipAddressPort]; - socket.on('error', (err) => { reject(err); }); socket.on('data', async p_data => { - - //append queue to current data - let buffer: Buffer = null; - if (this.peerBuffers[ipAddressPort] && this.peerBuffers[ipAddressPort].length > 0) { - buffer = Buffer.concat([this.peerBuffers[ipAddressPort], p_data]); - } else { - buffer = p_data; - } - this.peerBuffers[ipAddressPort] = null - - // FIXME: Clean up this arraybuffer confusion mess - const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); - let ctx = new ReadContext(arrayBuffer, false); - - // Notes on isBufferedService - // some simple services (Directory, TimeSync, others..) - // might receive data the is hard to parse with the buffer. - // if isBufferedService is false, we send this data immediately to parse. - if (!this.isBufferedService) { - const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket); - this.messageHandler(parsedData); - }; - - // Check if device has announced itself to this service yet - // Basically, we only want to handle - if (!deviceId && ctx.sizeLeft() >= 20) { - - const messageId = ctx.readUInt32(); - deviceId = new DeviceId(ctx.read(16)); - - //peak at network string length then rewind and read string - const stringLength = ctx.readUInt32(); - ctx.seek(-4); - (assert (stringLength <= ctx.sizeLeft())); - const serviceName = ctx.readNetworkStringUTF16(); - - //make sure reading port won't overrun buffer - (assert (ctx.sizeLeft() >= 2)); - ctx.readUInt16(); //read port, though we don't need it - - this.parent.sockets[deviceId.toString()].set(this.name, socket); - this.peerDeviceIds[ipAddressPort] = deviceId; - //this.peerSockets.set(deviceId,socket); - //this._peerSockets[deviceId.toString()] = socket; - - Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); - - const parsedData = this.parseServiceData(messageId, deviceId, serviceName, socket); - this.messageHandler(parsedData); - } - - try { - while (ctx.isEOF() === false) { - if (ctx.sizeLeft() < 4) { - this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); - break; - } - const length = ctx.readUInt32(); - if ( length <= ctx.sizeLeft()) { - const message = ctx.read(length); - // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer - const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - const parsedData = this.parseData(new ReadContext(data,false), socket); - this.messageHandler(parsedData); - - } else { - ctx.seek(-4); // Rewind 4 bytes to include the length again - this.peerBuffers[ipAddressPort] = ctx.readRemainingAsNewBuffer(); - break; - } - } - } catch (err) { - Logger.error(this.name, deviceId.toString(), err); - } + await this.dataHandler(p_data, socket) }); + }).listen(0, '0.0.0.0', () => { this.serverStatus = true; this.serverInfo = server.address() as net.AddressInfo; this.server = server; Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); - if (this.expectedDeviceId){ - Logger.silly(`started timer for ${this.name} for ${this.expectedDeviceId}`) - this.timeout = setTimeout(this.closeService, 5000, this.expectedDeviceId, this.name, this.server, this.parent); + if (this.deviceId){ + Logger.silly(`started timer for ${this.name} for ${this.deviceId}`) + this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent); }; resolve(server); }); @@ -176,8 +83,84 @@ export abstract class Service extends EventEmitter { } } - getDeviceIdFromSocket(socket: Socket): DeviceId { - return this.peerDeviceIds[[socket.remoteAddress, socket.remotePort].join(':')] + private async dataHandler(p_data: Buffer, socket: Socket) { + + //append queue to current data + let buffer: Buffer = null; + if ( this.messageBuffer && this.messageBuffer.length > 0) { + buffer = Buffer.concat([this.messageBuffer, p_data]); + } else { + buffer = p_data; + } + this.messageBuffer = null + + // FIXME: Clean up this arraybuffer confusion mess + const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + let ctx = new ReadContext(arrayBuffer, false); + + // Notes on isBufferedService + // some simple services (Directory, TimeSync, others..) + // might receive data the is hard to parse with the buffer. + // if isBufferedService is false, we send this data immediately to parse. + if (!this.isBufferedService) { + const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket); + this.messageHandler(parsedData); + }; + + // Check if device has announced itself to this service yet + // Basically, we only want to handle first msg sent to non-directory services + if (!this._deviceId && ctx.sizeLeft() >= 20) { + + const messageId = ctx.readUInt32(); + this._deviceId = new DeviceId(ctx.read(16)); + + //peak at network string length then rewind and read string + const stringLength = ctx.readUInt32(); + ctx.seek(-4); + + (assert (stringLength <= ctx.sizeLeft())); + const serviceName = ctx.readNetworkStringUTF16(); + + //make sure reading port won't overrun buffer + (assert (ctx.sizeLeft() >= 2)); + ctx.readUInt16(); //read port, though we don't need it + //todo fix sockets + this.parent.sockets[this.deviceId.toString()].set(this.name, socket); + + Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.toString()}`); + + const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); + this.messageHandler(parsedData); + } + + try { + while (ctx.isEOF() === false) { + if (ctx.sizeLeft() < 4) { + this.messageBuffer = ctx.readRemainingAsNewBuffer(); + break; + } + + const length = ctx.readUInt32(); + if ( length <= ctx.sizeLeft()) { + + const message = ctx.read(length); + if (!message) { + console.log(message) + } + // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer + const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); + const parsedData = this.parseData(new ReadContext(data,false), socket); + this.messageHandler(parsedData); + + } else { + ctx.seek(-4); // Rewind 4 bytes to include the length again + this.messageBuffer = ctx.readRemainingAsNewBuffer(); + break; + } + } + } catch (err) { + Logger.error(this.name, this.deviceId.toString(), err); + } } async waitForMessage(message: string, p_messageId: number): Promise { @@ -211,11 +194,6 @@ export abstract class Service extends EventEmitter { return await this.write(newCtx, socket); } - public getIdFromIp(map:Map, val:string) { - const thisEntry = [...map.values()].filter((item: ConnectionInfo) => item.addressPort === val); - return thisEntry.keys.toString(); - } - // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { Logger.silly(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); diff --git a/services/StateMap.ts b/services/StateMap.ts index 3f9b951..5229553 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -2,7 +2,6 @@ import { strict as assert } from 'assert'; import { MessageId, StageLinqValue, - //StageLinqValueObj, } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; @@ -128,17 +127,16 @@ export class StateMap extends Service { public async subscribe(socket: Socket) { - const deviceId = this.getDeviceIdFromSocket(socket); - - while (!this.parent.discovery.hasConnectionInfo(deviceId)) { + while (!this.parent.discovery.hasConnectionInfo(this.deviceId)) { await sleep(200); } - Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.getDeviceIdFromSocket(socket).toString()}`); + Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.toString()}`); - const thisPeer = this.parent.discovery.getConnectionInfo(deviceId); + const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); //TODO Better test for mixer + //TODO states from deviceType if (thisPeer && thisPeer.software.name === 'JM08') { for (const state of StatesMixer) { await this.subscribeState(state, 0, socket); @@ -159,7 +157,7 @@ export class StateMap extends Service { } protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { - const deviceId = this.getDeviceIdFromSocket(socket); + assert(this.deviceId); const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { Logger.error(assert(marker !== MAGIC_MARKER)); @@ -177,7 +175,7 @@ export class StateMap extends Service { id: MAGIC_MARKER_JSON, message: { name: name, - deviceId: deviceId, + deviceId: this.deviceId, json: json, socket: socket, }, @@ -194,7 +192,7 @@ export class StateMap extends Service { id: MAGIC_MARKER_INTERVAL, message: { name: name, - deviceId: deviceId, + deviceId: this.deviceId, interval: interval, socket: socket, }, diff --git a/types/Devices.ts b/types/Devices.ts index a6c4ec6..9d20c07 100644 --- a/types/Devices.ts +++ b/types/Devices.ts @@ -1,5 +1,5 @@ import * as Services from '../services'; -import { Socket } from 'net'; +//import { Socket } from 'net'; import { ConnectionInfo, DeviceId, IpAddressPort, } from '../types'; //import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; From 67e6d311f4c50f8438e5c267bbf884338c316ab9 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 14 Mar 2023 18:51:45 -0400 Subject: [PATCH 055/146] StateReducer for States --- network/Discovery.ts | 21 +---- services/FileTransfer.ts | 7 +- services/Service.ts | 7 +- services/StateMap.ts | 158 +++++++++++++---------------------- types/common.ts | 110 ++++++++++++++++--------- types/models/State.ts | 172 +++++++++++++++++++++++++++++++++++++++ types/models/index.ts | 3 +- 7 files changed, 310 insertions(+), 168 deletions(-) create mode 100644 types/models/State.ts diff --git a/network/Discovery.ts b/network/Discovery.ts index 42343e8..aa66396 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -16,21 +16,13 @@ export interface DiscoveryMessageOptions { name: string; version: string; source: string; - token: Uint8Array; //FIXME make this DeviceId + token: Uint8Array; //TODO make this DeviceId? port?: number }; type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; - -/** - * Continuously listens for devices to announce themselves. When they do, - * execute a callback. - */ - - - export class Discovery { public parent: InstanceType; @@ -68,12 +60,10 @@ export class Discovery { return [...this.peers.values()] } - async init(options:DiscoveryMessageOptions) { this.options = options; await this.listenForDevices( (connectionInfo) => { - if (!this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { const deviceId = new DeviceId(connectionInfo.token) this.peers.set(deviceId.toString(), connectionInfo); @@ -89,12 +79,9 @@ export class Discovery { this.parent.devices.setInfo(deviceId, connectionInfo); Logger.debug(`Updated port for From ${deviceId.toString()}`) } - - }); } - async announce(port: number) { assert(this.socket); this.socket.setBroadcast(true); @@ -119,7 +106,6 @@ export class Discovery { this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } - async unannounce(): Promise { assert(this.announceTimer); clearInterval(this.announceTimer); @@ -134,14 +120,13 @@ export class Discovery { Logger.debug("Unannounced myself"); } + //////////// PRIVATE METHODS /////////////// - private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress) { socket.send(msg, port, address); } - /** * Listen for new devices on the network and callback when a new one is found. * @param callback Callback when new device is discovered. @@ -201,7 +186,7 @@ export class Discovery { version: discoveryMessageOptions.version }, source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token //FIXME make this DeviceId + token: discoveryMessageOptions.token //TODO make this DeviceId }; return msg; } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index aa8a6c0..bc979e1 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -12,7 +12,7 @@ import { Socket } from 'net'; const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; -// FIXME: Strongly type this for all possible messages? +// TODO: Strongly type this for all possible messages? type FileTransferData = any; interface FileTransferServiceData extends ServiceData { @@ -52,6 +52,7 @@ export class FileTransfer extends Service { public name: string = "FileTransfer"; public services: Map = new Map(); public sources: Map = new Map(); + private _isAvailable: boolean = true; private txId: number = 1; @@ -59,9 +60,11 @@ export class FileTransfer extends Service { async init() {} + // TODO need better txId to handle consurrent transfers public get txid() { return this.txId; } + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); @@ -186,7 +189,7 @@ export class FileTransfer extends Service { case MessageId.Unknown0: { //sizeLeft() of 6 means its not an offline analyzer - //FIXME actually parse these messages + //TODO actually parse these messages //if (p_ctx.sizeLeft() >= 5) { //Logger.debug(`requesting sources from `, deviceId.toString()); this.requestSources(socket); diff --git a/services/Service.ts b/services/Service.ts index ebac5c4..466f586 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -94,7 +94,7 @@ export abstract class Service extends EventEmitter { } this.messageBuffer = null - // FIXME: Clean up this arraybuffer confusion mess + // TODO: Clean up this arraybuffer confusion mess const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); @@ -124,8 +124,7 @@ export abstract class Service extends EventEmitter { //make sure reading port won't overrun buffer (assert (ctx.sizeLeft() >= 2)); ctx.readUInt16(); //read port, though we don't need it - //todo fix sockets - this.parent.sockets[this.deviceId.toString()].set(this.name, socket); + this.parent.sockets[this.deviceId.toString()].set(this.name, socket); //TODO fix sockets Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.toString()}`); @@ -201,7 +200,7 @@ export abstract class Service extends EventEmitter { parent.services[deviceId.toString()].delete(serviceName); } - // FIXME: Cannot use abstract because of async; is there another way to get this? + // TODO: Cannot use abstract because of async; is there another way to get this? protected async init() { assert.fail('Implement this'); } diff --git a/services/StateMap.ts b/services/StateMap.ts index 5229553..044fbe9 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,112 +1,35 @@ import { strict as assert } from 'assert'; import { - MessageId, - StageLinqValue, + MessageId, } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -import type { ServiceMessage, DeviceId } from '../types'; +import { ServiceMessage, DeviceId, PlayerStates, MixerStates, PlayerDeckStates } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; -export const StatesMixer = [ - StageLinqValue.MixerCH1faderPosition, - StageLinqValue.MixerCH2faderPosition, - StageLinqValue.MixerCH3faderPosition, - StageLinqValue.MixerCH4faderPosition, - StageLinqValue.MixerCrossfaderPosition, - StageLinqValue.MixerChannelAssignment1, - StageLinqValue.MixerChannelAssignment2, - StageLinqValue.MixerChannelAssignment3, - StageLinqValue.MixerChannelAssignment4, - StageLinqValue.MixerNumberOfChannels, -] - -export const States = [ - // Mixer - - StageLinqValue.MixerCH1faderPosition, - StageLinqValue.MixerCH2faderPosition, - StageLinqValue.MixerCH3faderPosition, - StageLinqValue.MixerCH4faderPosition, - StageLinqValue.MixerCrossfaderPosition, - StageLinqValue.MixerChannelAssignment1, - StageLinqValue.MixerChannelAssignment2, - StageLinqValue.MixerChannelAssignment3, - StageLinqValue.MixerChannelAssignment4, - StageLinqValue.MixerNumberOfChannels, - StageLinqValue.ClientPreferencesLayerA, - StageLinqValue.ClientPreferencesPlayer, - StageLinqValue.ClientPreferencesPlayerJogColorA, - StageLinqValue.ClientPreferencesPlayerJogColorB, - StageLinqValue.EngineDeck1DeckIsMaster, - StageLinqValue.EngineDeck2DeckIsMaster, - - StageLinqValue.EngineMasterMasterTempo, - - StageLinqValue.EngineSyncNetworkMasterStatus, - - // Decks - StageLinqValue.EngineDeck1Play, - StageLinqValue.EngineDeck1PlayState, - StageLinqValue.EngineDeck1PlayStatePath, - StageLinqValue.EngineDeck1TrackArtistName, - StageLinqValue.EngineDeck1TrackTrackNetworkPath, - StageLinqValue.EngineDeck1TrackSongLoaded, - StageLinqValue.EngineDeck1TrackSongName, - StageLinqValue.EngineDeck1TrackTrackData, - StageLinqValue.EngineDeck1TrackTrackName, - StageLinqValue.EngineDeck1CurrentBPM, - StageLinqValue.EngineDeck1ExternalMixerVolume, - - StageLinqValue.EngineDeck2Play, - StageLinqValue.EngineDeck2PlayState, - StageLinqValue.EngineDeck2PlayStatePath, - StageLinqValue.EngineDeck2TrackArtistName, - StageLinqValue.EngineDeck2TrackTrackNetworkPath, - StageLinqValue.EngineDeck2TrackSongLoaded, - StageLinqValue.EngineDeck2TrackSongName, - StageLinqValue.EngineDeck2TrackTrackData, - StageLinqValue.EngineDeck2TrackTrackName, - StageLinqValue.EngineDeck2CurrentBPM, - StageLinqValue.EngineDeck2ExternalMixerVolume, - - StageLinqValue.EngineDeck3Play, - StageLinqValue.EngineDeck3PlayState, - StageLinqValue.EngineDeck3PlayStatePath, - StageLinqValue.EngineDeck3TrackArtistName, - StageLinqValue.EngineDeck3TrackTrackNetworkPath, - StageLinqValue.EngineDeck3TrackSongLoaded, - StageLinqValue.EngineDeck3TrackSongName, - StageLinqValue.EngineDeck3TrackTrackData, - StageLinqValue.EngineDeck3TrackTrackName, - StageLinqValue.EngineDeck3CurrentBPM, - StageLinqValue.EngineDeck3ExternalMixerVolume, - - StageLinqValue.EngineDeck4Play, - StageLinqValue.EngineDeck4PlayState, - StageLinqValue.EngineDeck4PlayStatePath, - StageLinqValue.EngineDeck4TrackArtistName, - StageLinqValue.EngineDeck4TrackTrackNetworkPath, - StageLinqValue.EngineDeck4TrackSongLoaded, - StageLinqValue.EngineDeck4TrackSongName, - StageLinqValue.EngineDeck4TrackTrackData, - StageLinqValue.EngineDeck4TrackTrackName, - StageLinqValue.EngineDeck4CurrentBPM, - StageLinqValue.EngineDeck4ExternalMixerVolume, - //StageLinqValue.PrivateDeck1MidiSamplePosition, - //StageLinqValue.PrivateDeck2MidiSamplePosition, - //StageLinqValue.EngineDeck1PFL, -]; - const MAGIC_MARKER = 'smaa'; -// FIXME: Is this thing really an interval? +// TODO: Is this thing really an interval? const MAGIC_MARKER_INTERVAL = 0x000007d2; const MAGIC_MARKER_JSON = 0x00000000; + +function stateReducer(obj: any, prefix: string): string[] { + const entries = Object.entries(obj) + const retArr = entries.map(([key, value]) => { + return (typeof value === 'object' ? [...stateReducer(value, `${prefix}${key}/`)] : `${prefix}${key}`) + }) + return retArr.flat() +} + +const playerStateValues = stateReducer(PlayerStates, '/'); +const mixerStateValues = stateReducer(MixerStates, '/'); +const controllerStateValues = [...playerStateValues, ...mixerStateValues]; + + export interface StateData { name?: string; deviceId?: DeviceId; @@ -135,16 +58,45 @@ export class StateMap extends Service { const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); - //TODO Better test for mixer - //TODO states from deviceType - if (thisPeer && thisPeer.software.name === 'JM08') { - for (const state of StatesMixer) { - await this.subscribeState(state, 0, socket); + switch (thisPeer?.device?.type) { + case "PLAYER": { + for (let state of playerStateValues) { + await this.subscribeState(state, 0, socket); + } + let playerDeckStateValues: string[] = []; + for (let i=0; i< thisPeer.device.decks; i++) { + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(PlayerDeckStates, `/Engine/Deck${i+1}/`)]; + } + + for (let state of playerDeckStateValues) { + await this.subscribeState(state, 0, socket); + } + + break; + } + case "CONTROLLER": { + for (let state of controllerStateValues) { + await this.subscribeState(state, 0, socket); + } + let playerDeckStateValues: string[] = []; + for (let i=0; i< thisPeer.device.decks; i++) { + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(PlayerDeckStates, `/Engine/Deck${i+1}/`)]; + } + + for (let state of playerDeckStateValues) { + await this.subscribeState(state, 0, socket); + } + + break; } - } else { - for (const state of States) { - await this.subscribeState(state, 0, socket); - } + case "MIXER": { + for (let state of mixerStateValues) { + await this.subscribeState(state, 0, socket); + } + break; + } + default: + break; } } diff --git a/types/common.ts b/types/common.ts index cbdd78a..c033bdf 100644 --- a/types/common.ts +++ b/types/common.ts @@ -21,8 +21,12 @@ export enum StageLinqValue { ClientLibrarianDevicesControllerCurrentDevice = '/Client/Librarian/DevicesController/CurrentDevice', ClientLibrarianDevicesControllerHasSDCardConnected = '/Client/Librarian/DevicesController/HasSDCardConnected', ClientLibrarianDevicesControllerHasUsbDeviceConnected = '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - ClientPreferencesLayerB = '/Client/Preferences/LayerB', + ClientPreferencesPlayer = '/Client/Preferences/Player', + ClientPreferencesLayerB = '/Client/Preferences/LayerB', + + ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', + ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', ClientPreferencesProfileApplicationPlayerColor1 = '/Client/Preferences/Profile/Application/PlayerColor1', ClientPreferencesProfileApplicationPlayerColor1A = '/Client/Preferences/Profile/Application/PlayerColor1A', ClientPreferencesProfileApplicationPlayerColor1B = '/Client/Preferences/Profile/Application/PlayerColor1B', @@ -35,7 +39,21 @@ export enum StageLinqValue { ClientPreferencesProfileApplicationPlayerColor4 = '/Client/Preferences/Profile/Application/PlayerColor4', ClientPreferencesProfileApplicationPlayerColor4A = '/Client/Preferences/Profile/Application/PlayerColor4A', ClientPreferencesProfileApplicationPlayerColor4B = '/Client/Preferences/Profile/Application/PlayerColor4B', + ClientPreferencesProfileApplicationSyncMode = '/Client/Preferences/Profile/Application/SyncMode', + + GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', + GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', + + EngineDeckCount = '/Engine/DeckCount', + + + EngineDeck1DeckIsMaster = '/Engine/Deck1/DeckIsMaster', + + ClientPreferencesLayerA = '/Client/Preferences/LayerA', + EngineSyncNetworkMasterStatus = '/Engine/Sync/Network/MasterStatus', + EngineMasterMasterTempo = '/Engine/Master/MasterTempo', + EngineDeck1CurrentBPM = '/Engine/Deck1/CurrentBPM', EngineDeck1ExternalMixerVolume = '/Engine/Deck1/ExternalMixerVolume', EngineDeck1ExternalScratchWheelTouch = '/Engine/Deck1/ExternalScratchWheelTouch', @@ -216,38 +234,42 @@ export enum StageLinqValue { EngineDeck4TrackTrackNetworkPath = '/Engine/Deck4/Track/TrackNetworkPath', EngineDeck4TrackTrackURI = '/Engine/Deck4/Track/TrackUri', EngineDeck4TrackTrackWasPlayed = '/Engine/Deck4/Track/TrackWasPlayed', - EngineDeckCount = '/Engine/DeckCount', - GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', - GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', - MixerCH1faderPosition = '/Mixer/CH1faderPosition', - MixerCH2faderPosition = '/Mixer/CH2faderPosition', - MixerCH3faderPosition = '/Mixer/CH3faderPosition', - MixerCH4faderPosition = '/Mixer/CH4faderPosition', - MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', + + + ClientDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', + ClientDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', MixerNumberOfChannels = '/Mixer/NumberOfChannels', - ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', - ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', - EngineDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', - EngineDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', - ClientPreferencesLayerA = '/Client/Preferences/LayerA', - EngineSyncNetworkMasterStatus = '/Engine/Sync/Network/MasterStatus', - EngineMasterMasterTempo = '/Engine/Master/MasterTempo', + MixerChannelAssignment1 = '/Mixer/ChannelAssignment1', MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', - PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', - PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', - EngineDeck1PFL = '/Engine/Deck1/PFL', + + MixerCH1faderPosition = '/Mixer/CH1faderPosition', + MixerCH2faderPosition = '/Mixer/CH2faderPosition', + MixerCH3faderPosition = '/Mixer/CH3faderPosition', + MixerCH4faderPosition = '/Mixer/CH4faderPosition', + MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', + + + // PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', + // PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', + // EngineDeck1PFL = '/Engine/Deck1/PFL', } export const StageLinqValueObj = { ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', + + + ClientPreferencesLayerA: '/Client/Preferences/LayerA', ClientPreferencesLayerB: '/Client/Preferences/LayerB', ClientPreferencesPlayer: '/Client/Preferences/Player', + ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', + ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', + ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', @@ -260,7 +282,35 @@ export const StageLinqValueObj = { ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', + ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', + + + + GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', + + MixerCH1faderPosition: '/Mixer/CH1faderPosition', + MixerCH2faderPosition: '/Mixer/CH2faderPosition', + MixerCH3faderPosition: '/Mixer/CH3faderPosition', + MixerCH4faderPosition: '/Mixer/CH4faderPosition', + MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', + MixerNumberOfChannels: '/Mixer/NumberOfChannels', + MixerChannelAssignment1: '/Mixer/ChannelAssignment1', + MixerChannelAssignment2: '/Mixer/ChannelAssignment2', + MixerChannelAssignment3: '/Mixer/ChannelAssignment3', + MixerChannelAssignment4: '/Mixer/ChannelAssignment4', + + + //ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', + //ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', + + + EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', + EngineMasterMasterTempo: '/Engine/Master/MasterTempo', + + EngineDeckCount: '/Engine/DeckCount', + EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', @@ -441,26 +491,6 @@ export const StageLinqValueObj = { EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', - EngineDeckCount: '/Engine/DeckCount', - GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', - GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', - MixerCH1faderPosition: '/Mixer/CH1faderPosition', - MixerCH2faderPosition: '/Mixer/CH2faderPosition', - MixerCH3faderPosition: '/Mixer/CH3faderPosition', - MixerCH4faderPosition: '/Mixer/CH4faderPosition', - MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', - - MixerNumberOfChannels: '/Mixer/NumberOfChannels', - ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', - ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', - EngineDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', - EngineDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', - ClientPreferencesLayerA: '/Client/Preferences/LayerA', - EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', - EngineMasterMasterTempo: '/Engine/Master/MasterTempo', - MixerChannelAssignment1: '/Mixer/ChannelAssignment1', - MixerChannelAssignment2: '/Mixer/ChannelAssignment2', - MixerChannelAssignment3: '/Mixer/ChannelAssignment3', - MixerChannelAssignment4: '/Mixer/ChannelAssignment4', + } diff --git a/types/models/State.ts b/types/models/State.ts new file mode 100644 index 0000000..a410c3a --- /dev/null +++ b/types/models/State.ts @@ -0,0 +1,172 @@ + +export const PlayerStates = { + Gui: { + ViewLayer: { + LayerB: 'LayerBB', + }, + Decks: { + Deck: { + ActiveDeck: 'ActiveDeck', + }, + }, + }, + Engine: { + DeckCount: 2, //type 10 + Sync: { + Network: { + MasterStatus: false, + }, + }, + Master: { + MasterTempo: 120.0, //type 0 + }, + }, + Client: { + Librarian: { + DevicesController: { + CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] + HasSDCardConnected: false, + HasUsbDeviceConnected: false, + }, + }, + Preferences: { + LayerA: 'LayerA', //NG + LayerB: true, + Player: '1', //type 4 ENUM? + PlayerJogColorA: 'PlayerJogColorA', //type 16 Colour string + PlayerJogColorB: 'PlayerJogColorB', + Profile: { + Application: { + PlayerColor1: 'PlayerColor1', + PlayerColor1A: 'PlayerColor1A', + PlayerColor1B: 'PlayerColor1B', + PlayerColor2: 'PlayerColor2', + PlayerColor2A: 'PlayerColor2A', + PlayerColor2B: 'PlayerColor2B', + PlayerColor3: 'PlayerColor3', + PlayerColor3A: 'PlayerColor3A', + PlayerColor3B: 'PlayerColor3B', + PlayerColor4: 'PlayerColor4', + PlayerColor4A: 'PlayerColor4A', + PlayerColor4B: 'PlayerColor4B', + SyncMode: 'Tempo', //type 4 ENUM + }, + }, + }, + }, +} + +export const PlayerDeckStates = { + CurrentBPM: 120.00, //type 0 + ExternalMixerVolume: 1, //type 0 + ExternalScratchWheelTouch: false, //type 2 false? + Pads: { + View: '', //type 4 ENUM? 'CUES' + }, + Play: false, + PlayState: false, + PlayStatePath: 'PlayStatePath', //NG + Speed: 1.0, //0.44444535 + SpeedNeutral: false, + SpeedOffsetDown: false, + SpeedOffsetUp: false, + SpeedRange: '8', //enum + SpeedState: 1.0, //type 0 signed -0.39999 + SyncMode: 'Off', //enum: Off, Tempo, TempoSync + DeckIsMaster: false, + Track: { + ArtistName: '', + Bleep: false, //type 2 + CuePosition: 156.0, //type 14? + CurrentBPM: 119.51, + CurrentKeyIndex: 0, //type 10? + CurrentLoopInPosition: 156.0, //type 14 + CurrentLoopOutPosition: 156.0, //type 14 + CurrentLoopSizeInBeats: 0, // type 14 + KeyLock: true, + LoopEnableState: false, //type 1 + Loop: { + QuickLoop1: false, //type 2 + QuickLoop2: false, + QuickLoop3: false, + QuickLoop4: false, + QuickLoop5: false, + QuickLoop6: false, + QuickLoop7: false, + QuickLoop8: false, + }, + PlayPauseLEDState: false, + SampleRate: 44100, //type 14 + SongAnalyzed: false, + SongLoaded: false, + SongName: '', + SoundSwitchGUID: 'SoundSwitchGuid', //NG must be Analyzed? + TrackBytes: 15323626, //type 10 + TrackData: false, //type 3??? + TrackLength: 16445952, //type 10 + TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... + TrackNetworkPath: '', + TrackURI: 'TrackUri', //NG Only streaming? + TrackWasPlayed: false, + } +} + +export const MixerStates = { + Mixer: { + CH1faderPosition: 1.27, //type 0 + CH2faderPosition: 0.0, + CH3faderPosition: 0.0, + CH4faderPosition: 0.0, + CrossfaderPosition: 0.5, //type 0 + NumberOfChannels: 'NumberOfChannels', //NG + ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' + ChannelAssignment2: '', + ChannelAssignment3: '', + ChannelAssignment4: '', + }, + Gui: { + ViewLayer: { + LayerB: 'LayerB', + }, + Decks: { + Deck: { + ActiveDeck: 'ActiveDeck', + }, + }, + }, +} + + +// export const PlayerDeckTrackStates = { +// ArtistName: 'ArtistName', +// Bleep: 'Bleep', +// CuePosition: 'CuePosition', +// CurrentBPM: 'CurrentBPM', +// CurrentKeyIndex: 'CurrentKeyIndex', +// CurrentLoopInPosition: 'CurrentLoopInPosition', +// CurrentLoopOutPosition: 'CurrentLoopOutPosition', +// CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', +// KeyLock: 'KeyLock', +// LoopEnableState: 'LoopEnableState', +// LoopQuickLoop1: 'Loop/QuickLoop1', +// LoopQuickLoop2: 'Loop/QuickLoop2', +// LoopQuickLoop3: 'Loop/QuickLoop3', +// LoopQuickLoop4: 'Loop/QuickLoop4', +// LoopQuickLoop5: 'Loop/QuickLoop5', +// LoopQuickLoop6: 'Loop/QuickLoop6', +// LoopQuickLoop7: 'Loop/QuickLoop7', +// LoopQuickLoop8: 'Loop/QuickLoop8', +// PlayPauseLEDState: 'PlayPauseLEDState', +// SampleRate: 'SampleRate', +// SongAnalyzed: 'SongAnalyzed', +// SongLoaded: 'SongLoaded', +// SongName: 'SongName', +// SoundSwitchGUID: 'SoundSwitchGuid', +// TrackBytes: 'TrackBytes', +// TrackData: 'TrackData', +// TrackLength: 'TrackLength', +// TrackName: 'TrackName', +// TrackNetworkPath: 'TrackNetworkPath', +// TrackURI: 'TrackUri', +// TrackWasPlayed: 'TrackWasPlayed', +// } \ No newline at end of file diff --git a/types/models/index.ts b/types/models/index.ts index d694080..b6dde07 100644 --- a/types/models/index.ts +++ b/types/models/index.ts @@ -1 +1,2 @@ -export * from './track'; \ No newline at end of file +export * from './track'; +export * from './state'; \ No newline at end of file From 0ae0255cef2a1faf2ff2fb154454cfb3dabb6010 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 15 Mar 2023 12:52:09 -0400 Subject: [PATCH 056/146] add json state config, resolveJsonModule --- services/StateMap.ts | 19 +- stagelinqConfig.json | 113 ++++++++++ tsconfig.json | 3 +- types/models/State.ts | 468 +++++++++++++++++++++++++++--------------- 4 files changed, 422 insertions(+), 181 deletions(-) create mode 100644 stagelinqConfig.json diff --git a/services/StateMap.ts b/services/StateMap.ts index 044fbe9..9dd02a2 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,22 +1,23 @@ import { strict as assert } from 'assert'; -import { - MessageId, -} from '../types'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service } from './Service'; -import { ServiceMessage, DeviceId, PlayerStates, MixerStates, PlayerDeckStates } from '../types'; +import { ServiceMessage, DeviceId, MessageId } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; +import * as stagelinqConfig from '../stagelinqConfig.json'; + +export type Player = typeof stagelinqConfig.player; +export type PlayerDeck = typeof stagelinqConfig.playerDeck; +export type Mixer = typeof stagelinqConfig.mixer; const MAGIC_MARKER = 'smaa'; // TODO: Is this thing really an interval? const MAGIC_MARKER_INTERVAL = 0x000007d2; const MAGIC_MARKER_JSON = 0x00000000; - function stateReducer(obj: any, prefix: string): string[] { const entries = Object.entries(obj) const retArr = entries.map(([key, value]) => { @@ -25,8 +26,8 @@ function stateReducer(obj: any, prefix: string): string[] { return retArr.flat() } -const playerStateValues = stateReducer(PlayerStates, '/'); -const mixerStateValues = stateReducer(MixerStates, '/'); +const playerStateValues = stateReducer(stagelinqConfig.player, '/'); +const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; @@ -65,7 +66,7 @@ export class StateMap extends Service { } let playerDeckStateValues: string[] = []; for (let i=0; i< thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(PlayerDeckStates, `/Engine/Deck${i+1}/`)]; + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } for (let state of playerDeckStateValues) { @@ -80,7 +81,7 @@ export class StateMap extends Service { } let playerDeckStateValues: string[] = []; for (let i=0; i< thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(PlayerDeckStates, `/Engine/Deck${i+1}/`)]; + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } for (let state of playerDeckStateValues) { diff --git a/stagelinqConfig.json b/stagelinqConfig.json new file mode 100644 index 0000000..a940a70 --- /dev/null +++ b/stagelinqConfig.json @@ -0,0 +1,113 @@ +{ + "player": { + "Engine": { + "DeckCount": 0, + "Sync": { + "Network": { + "MasterStatus": false + } + }, + "Master": { + "MasterTempo": 120 + } + }, + "Client": { + "Librarian": { + "DevicesController": { + "CurrentDevice": "", + "HasSDCardConnected": false, + "HasUsbDeviceConnected": false + } + }, + "Preferences": { + "LayerB": false, + "Player": "", + "PlayerJogColorA": "#FFFFFF", + "PlayerJogColorB": "#FFFFFF", + "Profile": { + "Application": { + "PlayerColor1": "#FFFFFF", + "PlayerColor1A": "#FFFFFF", + "PlayerColor1B": "#FFFFFF", + "PlayerColor2": "#FFFFFF", + "PlayerColor2A": "#FFFFFF", + "PlayerColor2B": "#FFFFFF", + "PlayerColor3": "#FFFFFF", + "PlayerColor3A": "#FFFFFF", + "PlayerColor3B": "#FFFFFF", + "PlayerColor4": "#FFFFFF", + "PlayerColor4A": "#FFFFFF", + "PlayerColor4B": "#FFFFFF", + "SyncMode": "" + } + } + } + } + }, + "playerDeck": { + "CurrentBPM": 120, + "ExternalMixerVolume": 1, + "ExternalScratchWheelTouch": false, + "Pads": { + "View": "" + }, + "Play": false, + "PlayState": false, + "Speed": 1, + "SpeedNeutral": false, + "SpeedOffsetDown": false, + "SpeedOffsetUp": false, + "SpeedRange": "8", + "SpeedState": 1, + "SyncMode": "Off", + "DeckIsMaster": false, + "Track": { + "ArtistName": "", + "Bleep": false, + "CuePosition": 156, + "CurrentBPM": 120, + "CurrentKeyIndex": 0, + "CurrentLoopInPosition": 156, + "CurrentLoopOutPosition": 156, + "CurrentLoopSizeInBeats": 0, + "KeyLock": false, + "LoopEnableState": false, + "Loop": { + "QuickLoop1": false, + "QuickLoop2": false, + "QuickLoop3": false, + "QuickLoop4": false, + "QuickLoop5": false, + "QuickLoop6": false, + "QuickLoop7": false, + "QuickLoop8": false + }, + "PlayPauseLEDState": false, + "SampleRate": 44100, + "SongAnalyzed": false, + "SongLoaded": false, + "SongName": "", + "SoundSwitchGUID": "", + "TrackBytes": 1, + "TrackData": false, + "TrackLength": 1, + "TrackName": "", + "TrackNetworkPath": "", + "TrackURI": "", + "TrackWasPlayed": false + } + }, + "mixer": { + "Mixer": { + "CH1faderPosition": 1.27, + "CH2faderPosition": 0, + "CH3faderPosition": 0, + "CH4faderPosition": 0, + "CrossfaderPosition": 0.5, + "ChannelAssignment1": "", + "ChannelAssignment2": "", + "ChannelAssignment3": "", + "ChannelAssignment4": "" + } + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 22ebfba..98ae2bc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ "alwaysStrict": true, "noImplicitAny": true, "noUnusedLocals": true, - "noUnusedParameters": true + "noUnusedParameters": true, + "resolveJsonModule": true } } diff --git a/types/models/State.ts b/types/models/State.ts index a410c3a..1123a6d 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,172 +1,298 @@ -export const PlayerStates = { - Gui: { - ViewLayer: { - LayerB: 'LayerBB', - }, - Decks: { - Deck: { - ActiveDeck: 'ActiveDeck', - }, - }, - }, - Engine: { - DeckCount: 2, //type 10 - Sync: { - Network: { - MasterStatus: false, - }, - }, - Master: { - MasterTempo: 120.0, //type 0 - }, - }, - Client: { - Librarian: { - DevicesController: { - CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] - HasSDCardConnected: false, - HasUsbDeviceConnected: false, - }, - }, - Preferences: { - LayerA: 'LayerA', //NG - LayerB: true, - Player: '1', //type 4 ENUM? - PlayerJogColorA: 'PlayerJogColorA', //type 16 Colour string - PlayerJogColorB: 'PlayerJogColorB', - Profile: { - Application: { - PlayerColor1: 'PlayerColor1', - PlayerColor1A: 'PlayerColor1A', - PlayerColor1B: 'PlayerColor1B', - PlayerColor2: 'PlayerColor2', - PlayerColor2A: 'PlayerColor2A', - PlayerColor2B: 'PlayerColor2B', - PlayerColor3: 'PlayerColor3', - PlayerColor3A: 'PlayerColor3A', - PlayerColor3B: 'PlayerColor3B', - PlayerColor4: 'PlayerColor4', - PlayerColor4A: 'PlayerColor4A', - PlayerColor4B: 'PlayerColor4B', - SyncMode: 'Tempo', //type 4 ENUM - }, - }, - }, - }, -} - -export const PlayerDeckStates = { - CurrentBPM: 120.00, //type 0 - ExternalMixerVolume: 1, //type 0 - ExternalScratchWheelTouch: false, //type 2 false? - Pads: { - View: '', //type 4 ENUM? 'CUES' - }, - Play: false, - PlayState: false, - PlayStatePath: 'PlayStatePath', //NG - Speed: 1.0, //0.44444535 - SpeedNeutral: false, - SpeedOffsetDown: false, - SpeedOffsetUp: false, - SpeedRange: '8', //enum - SpeedState: 1.0, //type 0 signed -0.39999 - SyncMode: 'Off', //enum: Off, Tempo, TempoSync - DeckIsMaster: false, - Track: { - ArtistName: '', - Bleep: false, //type 2 - CuePosition: 156.0, //type 14? - CurrentBPM: 119.51, - CurrentKeyIndex: 0, //type 10? - CurrentLoopInPosition: 156.0, //type 14 - CurrentLoopOutPosition: 156.0, //type 14 - CurrentLoopSizeInBeats: 0, // type 14 - KeyLock: true, - LoopEnableState: false, //type 1 - Loop: { - QuickLoop1: false, //type 2 - QuickLoop2: false, - QuickLoop3: false, - QuickLoop4: false, - QuickLoop5: false, - QuickLoop6: false, - QuickLoop7: false, - QuickLoop8: false, - }, - PlayPauseLEDState: false, - SampleRate: 44100, //type 14 - SongAnalyzed: false, - SongLoaded: false, - SongName: '', - SoundSwitchGUID: 'SoundSwitchGuid', //NG must be Analyzed? - TrackBytes: 15323626, //type 10 - TrackData: false, //type 3??? - TrackLength: 16445952, //type 10 - TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... - TrackNetworkPath: '', - TrackURI: 'TrackUri', //NG Only streaming? - TrackWasPlayed: false, - } -} - -export const MixerStates = { - Mixer: { - CH1faderPosition: 1.27, //type 0 - CH2faderPosition: 0.0, - CH3faderPosition: 0.0, - CH4faderPosition: 0.0, - CrossfaderPosition: 0.5, //type 0 - NumberOfChannels: 'NumberOfChannels', //NG - ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' - ChannelAssignment2: '', - ChannelAssignment3: '', - ChannelAssignment4: '', - }, - Gui: { - ViewLayer: { - LayerB: 'LayerB', - }, - Decks: { - Deck: { - ActiveDeck: 'ActiveDeck', - }, - }, - }, -} - - -// export const PlayerDeckTrackStates = { -// ArtistName: 'ArtistName', -// Bleep: 'Bleep', -// CuePosition: 'CuePosition', -// CurrentBPM: 'CurrentBPM', -// CurrentKeyIndex: 'CurrentKeyIndex', -// CurrentLoopInPosition: 'CurrentLoopInPosition', -// CurrentLoopOutPosition: 'CurrentLoopOutPosition', -// CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', -// KeyLock: 'KeyLock', -// LoopEnableState: 'LoopEnableState', -// LoopQuickLoop1: 'Loop/QuickLoop1', -// LoopQuickLoop2: 'Loop/QuickLoop2', -// LoopQuickLoop3: 'Loop/QuickLoop3', -// LoopQuickLoop4: 'Loop/QuickLoop4', -// LoopQuickLoop5: 'Loop/QuickLoop5', -// LoopQuickLoop6: 'Loop/QuickLoop6', -// LoopQuickLoop7: 'Loop/QuickLoop7', -// LoopQuickLoop8: 'Loop/QuickLoop8', -// PlayPauseLEDState: 'PlayPauseLEDState', -// SampleRate: 'SampleRate', -// SongAnalyzed: 'SongAnalyzed', -// SongLoaded: 'SongLoaded', -// SongName: 'SongName', -// SoundSwitchGUID: 'SoundSwitchGuid', -// TrackBytes: 'TrackBytes', -// TrackData: 'TrackData', -// TrackLength: 'TrackLength', -// TrackName: 'TrackName', -// TrackNetworkPath: 'TrackNetworkPath', -// TrackURI: 'TrackUri', -// TrackWasPlayed: 'TrackWasPlayed', -// } \ No newline at end of file + +// // type HexColor = `#${string}`; + +// // interface DeviceState { +// // Engine: { +// // DeckCount: number; +// // Sync: { +// // Network: { +// // MasterStatus: boolean, +// // }, +// // }, +// // Master: { +// // MasterTempo: number +// // }, +// // }, +// // Librarian: { +// // DevicesController: { +// // CurrentDevice: string, //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] +// // HasSDCardConnected: boolean, +// // HasUsbDeviceConnected: boolean, +// // }, +// // }, +// // Preferences: { +// // LayerB: boolean, +// // Player: 1|2|3|4, //type 4 ENUM? +// // PlayerJogColorA: HexColor, //type 16 Colour string +// // PlayerJogColorB: HexColor, +// // Profile: { +// // Application: { +// // PlayerColor1: HexColor, +// // PlayerColor1A: HexColor, +// // PlayerColor1B: HexColor, +// // PlayerColor2: HexColor, +// // PlayerColor2A: HexColor, +// // PlayerColor2B: HexColor, +// // PlayerColor3: HexColor, +// // PlayerColor3A: HexColor, +// // PlayerColor3B: HexColor, +// // PlayerColor4: HexColor, +// // PlayerColor4A: HexColor, +// // PlayerColor4B: HexColor, +// // SyncMode: 'Tempo' | 'TempoSync' | 'Off', //type 4 ENUM +// // }, +// // }, +// // }, +// // } + +// // interface PlayerDeckState { +// // CurrentBPM: number; +// // ExternalMixerVolume: number; +// // ExternalScratchWheelTouch: boolean; +// // Pads: { +// // View: string; //TODO Find ENUM values +// // }, +// // Play: boolean; +// // PlayState: boolean; +// // //PlayStatePath: 'PlayStatePath', //NG +// // Speed: number; +// // SpeedNeutral: boolean; +// // SpeedOffsetDown: boolean; +// // SpeedOffsetUp: boolean; +// // SpeedRange: '4' | '8' | '10' | '20' | '50' | '100'; +// // SpeedState: number; +// // SyncMode: string; //TODO find ENUM values +// // DeckIsMaster: boolean; +// // Track: { +// // ArtistName: string; +// // Bleep: boolean; +// // CuePosition: number; +// // CurrentBPM: number; +// // CurrentKeyIndex: number; +// // CurrentLoopInPosition: number; +// // CurrentLoopOutPosition: number; +// // CurrentLoopSizeInBeats: number; +// // KeyLock: boolean; +// // LoopEnableState: boolean; +// // Loop: { +// // QuickLoop1: boolean; +// // QuickLoop2: boolean; +// // QuickLoop3: boolean; +// // QuickLoop4: boolean; +// // QuickLoop5: boolean; +// // QuickLoop6: boolean; +// // QuickLoop7: boolean; +// // QuickLoop8: boolean; +// // }, +// // PlayPauseLEDState: boolean; +// // SampleRate: number; +// // SongAnalyzed: boolean; +// // SongLoaded: boolean; +// // SongName: string; +// // SoundSwitchGUID: string; //NG must be Analyzed? TODO check GUID +// // TrackBytes: number; +// // TrackData: boolean; +// // TrackLength: number; +// // TrackName: string; //TODO parse formatting of URI / Location +// // TrackNetworkPath: string; +// // TrackURI: string; //NG Only streaming? +// // TrackWasPlayed: boolean; +// // } +// // } + +// // interface PlayerDeckState extends DeviceState { + +// // } + + + + + + +// export const PlayerStates = { +// Gui: { +// ViewLayer: { +// LayerB: 'LayerB', +// }, +// Decks: { +// Deck: { +// ActiveDeck: 'ActiveDeck', +// }, +// }, +// }, +// Engine: { +// DeckCount: 2, //type 10 +// Sync: { +// Network: { +// MasterStatus: false, +// }, +// }, +// Master: { +// MasterTempo: 120.0, //type 0 +// }, +// }, +// Client: { +// Librarian: { +// DevicesController: { +// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] +// HasSDCardConnected: false, +// HasUsbDeviceConnected: false, +// }, +// }, +// Preferences: { +// LayerB: false, +// Player: '', //type 4 ENUM? +// PlayerJogColorA: '#FFFFFF', //type 16 Colour string +// PlayerJogColorB: '#FFFFFF', +// Profile: { +// Application: { +// PlayerColor1: '#FFFFFF', +// PlayerColor1A: '#FFFFFF', +// PlayerColor1B: '#FFFFFF', +// PlayerColor2: '#FFFFFF', +// PlayerColor2A: '#FFFFFF', +// PlayerColor2B: '#FFFFFF', +// PlayerColor3: '#FFFFFF', +// PlayerColor3A: '#FFFFFF', +// PlayerColor3B: '#FFFFFF', +// PlayerColor4: '#FFFFFF', +// PlayerColor4A: '#FFFFFF', +// PlayerColor4B: '#FFFFFF', +// SyncMode: '', +// }, +// }, +// }, +// }, +// } + +// export const PlayerDeckStates = { +// CurrentBPM: 120.00, //type 0 +// ExternalMixerVolume: 1, //type 0 +// ExternalScratchWheelTouch: false, //type 2 false? +// Pads: { +// View: '', //type 4 ENUM? 'CUES' +// }, +// Play: false, +// PlayState: false, +// //PlayStatePath: 'PlayStatePath', //NG +// Speed: 1.0, //0.44444535 +// SpeedNeutral: false, +// SpeedOffsetDown: false, +// SpeedOffsetUp: false, +// SpeedRange: '8', //enum +// SpeedState: 1.0, //type 0 signed -0.39999 +// SyncMode: 'Off', //enum: Off, Tempo, TempoSync +// DeckIsMaster: false, +// Track: { +// ArtistName: '', +// Bleep: false, //type 2 +// CuePosition: 156.0, //type 14? +// CurrentBPM: 120.0, +// CurrentKeyIndex: 0, //type 10? +// CurrentLoopInPosition: 156.0, //type 14 +// CurrentLoopOutPosition: 156.0, //type 14 +// CurrentLoopSizeInBeats: 0, // type 14 +// KeyLock: false, +// LoopEnableState: false, //type 1 +// Loop: { +// QuickLoop1: false, //type 2 +// QuickLoop2: false, +// QuickLoop3: false, +// QuickLoop4: false, +// QuickLoop5: false, +// QuickLoop6: false, +// QuickLoop7: false, +// QuickLoop8: false, +// }, +// PlayPauseLEDState: false, +// SampleRate: 44100, //type 14 +// SongAnalyzed: false, +// SongLoaded: false, +// SongName: '', +// SoundSwitchGUID: '', //NG must be Analyzed? +// TrackBytes: 1, //type 10 +// TrackData: false, //type 3??? +// TrackLength: 1, //type 10 +// TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... +// TrackNetworkPath: '', +// TrackURI: '', //NG Only streaming? +// TrackWasPlayed: false, +// } +// } + +// export const MixerStates = { +// Mixer: { +// CH1faderPosition: 1.27, //type 0 +// CH2faderPosition: 0.0, +// CH3faderPosition: 0.0, +// CH4faderPosition: 0.0, +// CrossfaderPosition: 0.5, //type 0 +// //NumberOfChannels: 'NumberOfChannels', //NG +// ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' +// ChannelAssignment2: '', +// ChannelAssignment3: '', +// ChannelAssignment4: '', +// }, +// // Gui: { +// // ViewLayer: { +// // LayerB: 'LayerB', +// // }, +// // Decks: { +// // Deck: { +// // ActiveDeck: 'ActiveDeck', +// // }, +// // }, +// // }, +// } + +// //const test = new MixerStates() + +// let exportObj = { +// player: { +// ...PlayerStates, +// }, +// playerDeck: { +// ...PlayerDeckStates +// }, +// mixer: { +// ...MixerStates, +// } +// } + + +// console.log(JSON.stringify(exportObj)); + +// // export const PlayerDeckTrackStates = { +// // ArtistName: 'ArtistName', +// // Bleep: 'Bleep', +// // CuePosition: 'CuePosition', +// // CurrentBPM: 'CurrentBPM', +// // CurrentKeyIndex: 'CurrentKeyIndex', +// // CurrentLoopInPosition: 'CurrentLoopInPosition', +// // CurrentLoopOutPosition: 'CurrentLoopOutPosition', +// // CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', +// // KeyLock: 'KeyLock', +// // LoopEnableState: 'LoopEnableState', +// // LoopQuickLoop1: 'Loop/QuickLoop1', +// // LoopQuickLoop2: 'Loop/QuickLoop2', +// // LoopQuickLoop3: 'Loop/QuickLoop3', +// // LoopQuickLoop4: 'Loop/QuickLoop4', +// // LoopQuickLoop5: 'Loop/QuickLoop5', +// // LoopQuickLoop6: 'Loop/QuickLoop6', +// // LoopQuickLoop7: 'Loop/QuickLoop7', +// // LoopQuickLoop8: 'Loop/QuickLoop8', +// // PlayPauseLEDState: 'PlayPauseLEDState', +// // SampleRate: 'SampleRate', +// // SongAnalyzed: 'SongAnalyzed', +// // SongLoaded: 'SongLoaded', +// // SongName: 'SongName', +// // SoundSwitchGUID: 'SoundSwitchGuid', +// // TrackBytes: 'TrackBytes', +// // TrackData: 'TrackData', +// // TrackLength: 'TrackLength', +// // TrackName: 'TrackName', +// // TrackNetworkPath: 'TrackNetworkPath', +// // TrackURI: 'TrackUri', +// // TrackWasPlayed: 'TrackWasPlayed', +// // } \ No newline at end of file From 1ceca3651de89e1b96223bab582ab11a4778ebb3 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 15 Mar 2023 13:58:46 -0400 Subject: [PATCH 057/146] Database refactor --- Databases/Databases.ts | 105 ++++++++++++++------------------------- StageLinq/index.ts | 37 ++++++++++++-- services/FileTransfer.ts | 9 ++-- services/Service.ts | 1 + types/index.ts | 6 +++ types/models/index.ts | 2 +- 6 files changed, 85 insertions(+), 75 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 38668a6..3171584 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -1,11 +1,9 @@ -import { Source } from '../types'; import { EventEmitter } from 'stream'; import { getTempFilePath } from '../utils'; import { Logger } from '../LogEmitter'; import * as fs from 'fs'; import { StageLinq } from '../StageLinq'; -import * as Services from '../services'; - +import { DbConnection } from './DbConnection'; export declare interface Databases { @@ -16,103 +14,76 @@ export declare interface Databases { export class Databases extends EventEmitter { parent: InstanceType; - sources: Map = new Map(); constructor(_parent: InstanceType) { super(); this.parent = _parent; } - /* - async downloadSourcesFromDevice(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice) { - const service = await networkDevice.connectToService(FileTransfer); - const sources = await service.getSources(); - const output: string[] = []; - for (const source of sources) { - const deviceId = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(connectionInfo.token).toString('hex')).splice(1).join('-'); - const dbConnectionName = `net://${deviceId}/${source.name}`; - Logger.debug(`DB network path: ${dbConnectionName}`); - if (this.sources.has(dbConnectionName)) { - Logger.debug(`Already seen ${source} on ${connectionInfo.address}:${connectionInfo.port}`); - } else { - await this.downloadDb(dbConnectionName, service, source); - output.push(dbConnectionName); - } - } - return output; - } - */ - /** * Download databases from this network source. */ - async downloadDb(deviceId: string) { - - Logger.debug(`downloadDb request for ${deviceId}`); - - //const service = this.parent.devices.getService(new DeviceId(deviceId), Services.FileTransfer.name) as Services.FileTransfer; - const service = this.parent.services[deviceId].get('FileTransfer') as Services.FileTransfer ; + async downloadDb(sourceName: string) { - //const socket = this.parent.devices.getSocket(new DeviceId(deviceId), Services.FileTransfer.name); - const socket = this.parent.sockets[deviceId].get('FileTransfer'); + Logger.debug(`downloadDb request for ${sourceName}`); + const source = this.parent.getSource(sourceName); + let thisTxid: number = 0 - for (const [sourceName, source] of service.sources) { - const dbPath = getTempFilePath(`${deviceId}/${sourceName}/m.db`); + const dbPath = getTempFilePath(`${source.deviceId.toString()}/${source.name}/m.db`); - Logger.info(`Reading database ${deviceId}/${source.name}`); - this.emit('dbDownloading', sourceName, dbPath); + Logger.info(`Reading database ${source.deviceId.toString()}/${source.name}`); + this.emit('dbDownloading', source.name, dbPath); - service.on('fileTransferProgress', (txid, progress) => { - if (thisTxid === txid) { - this.emit('dbProgress', sourceName, progress.total, progress.bytesDownloaded, progress.percentComplete); - //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - } else { - console.warn(txid, thisTxid) - } - }); + source.service.on('fileTransferProgress', (txid, progress) => { + if (thisTxid === txid) { + this.emit('dbProgress', source.name, progress.total, progress.bytesDownloaded, progress.percentComplete); + //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); + } else { + console.warn(txid, thisTxid) + } + }); + + source.database.local = { + path: dbPath, + }; + source.database.connection = new DbConnection(dbPath) + + // Save database to a file + thisTxid = source.service.txid; + const file = await source.service.getFile(source.database.location, source.service.socket); + Logger.info(`Saving ${source.deviceId.toString()}/${sourceName} to ${dbPath}`); + fs.writeFileSync(dbPath, Buffer.from(file)); + + this.parent.setSource(source); + Logger.info(`Downloaded ${source.deviceId.toString()}/${sourceName} to ${dbPath}`); + this.emit('dbDownloaded', source.deviceId.toString(), dbPath); - source.database.local = { - path: dbPath, - }; - - // Save database to a file - thisTxid = service.txid; - const file = await service.getFile(source.database.location, socket); - Logger.info(`Saving ${deviceId}/${sourceName} to ${dbPath}`); - fs.writeFileSync(dbPath, Buffer.from(file)); - - Logger.info(`Downloaded ${deviceId}/${sourceName} to ${dbPath}`); - this.emit('dbDownloaded', deviceId, dbPath); - this.sources.set(sourceName, source) - //Logger.info(sourceName, source); - } } getDbPath(dbSourceName?: string) { - if (!this.sources.size) + const source = this.parent.getSource(dbSourceName); + + if (!source.database.size) throw new Error(`No data sources have been downloaded`); - if (!dbSourceName || !this.sources.has(dbSourceName)) { + if (!dbSourceName || !this.parent.hasSource(dbSourceName)) { // Hack: Denon will save metadata on streaming files but only on an // internal database. So if the source is "(Unknown)streaming://" // return the first internal database we find. - for (const entry of Array.from(this.sources.entries())) { + for (const entry of this.parent.getSourcesArray()) { //Array.from(this.sources.entries())) { if (/\(Internal\)/.test(entry[0])) { Logger.debug(`Returning copy of internal database`); - return this.sources.get(entry[0]); + return this.parent.getSource(entry[0]); } } - // Else, throw an exception. throw new Error(`Data source "${dbSourceName}" doesn't exist.`); } - return this.sources.get(dbSourceName); + return this.parent.getSource(dbSourceName); } - } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index f072e63..73a2b8d 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,13 +1,11 @@ import { Discovery } from '../network'; -//import { Player } from '../devices/Player'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus} from '../types'; +import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus, Source} from '../types'; import { Databases } from '../Databases'; import * as Services from '../services'; import { Socket } from 'net'; import { assert } from 'console'; -// import { sleep } from '../utils'; import { BeatData } from '../services/BeatInfo'; @@ -32,6 +30,11 @@ type DeviceSocket = Map export interface DeviceSockets { [key: string]: DeviceSocket; } + +// export interface Source { +// db: DbConnection; +// service: InstanceType; +// } /* export interface Devices { [key: string]: { @@ -66,6 +69,8 @@ export class StageLinq extends EventEmitter { public readonly _services: Map> = new Map(); private _databases: Databases; public devices = new Devices(); + private _sources: Map = new Map(); + public options: StageLinqOptions; @@ -82,7 +87,31 @@ export class StageLinq extends EventEmitter { get databases() { return this._databases; } - + + hasSource(sourceName: string): boolean { + return this._sources.has(sourceName); + } + + getSource(sourceName: string): Source { + return this._sources.get(sourceName); + } + + setSource(source: Source) { + this._sources.set(source.name, source); + } + + getSourceList(): string[] { + return [...this._sources.keys()] + } + + getSources(): Source[] { + return [...this._sources.values()] + } + + getSourcesArray() { + return this._sources.entries() + } + /** * Connect to the StageLinq network. */ diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index bc979e1..5f29be7 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -323,6 +323,8 @@ export class FileTransfer extends Service { const thisSource: Source = { name: source, + deviceId: this.deviceId, + service: this, database: { location: database, size: fstatMessage.size, @@ -334,9 +336,10 @@ export class FileTransfer extends Service { } this.sources.set(source, thisSource); - this.parent.databases.sources.set(source, thisSource); + //this.parent.databases.sources.set(source, thisSource); + this.parent.setSource(thisSource); result.push(thisSource); - + this.parent.databases.downloadDb(thisSource.name); devices[source] = thisSource; break; @@ -346,7 +349,7 @@ export class FileTransfer extends Service { await this.deviceSources.set(this.deviceId.toString(), devices); - this.parent.databases.downloadDb(this.deviceId.toString()); + //this.parent.databases.downloadDb(this.deviceId.toString()); return result; } diff --git a/services/Service.ts b/services/Service.ts index 466f586..224b575 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -46,6 +46,7 @@ export abstract class Service extends EventEmitter { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) clearTimeout(this.timeout); + this.socket = socket; socket.on('error', (err) => { reject(err); diff --git a/types/index.ts b/types/index.ts index a71f979..928e3dd 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,5 +1,8 @@ import { Socket } from 'net'; +import { DbConnection } from '../Databases'; import { DiscoveryMessageOptions } from '../network'; +import * as Services from '../services'; +import { DeviceId } from './DeviceId'; export * from './common'; @@ -57,9 +60,12 @@ export interface ServiceMessage { export interface Source { name: string; + deviceId: DeviceId; + service: InstanceType database: { location: string; size: number; + connection?: DbConnection; remote?: { location: string, device: string, diff --git a/types/models/index.ts b/types/models/index.ts index b6dde07..e8c01aa 100644 --- a/types/models/index.ts +++ b/types/models/index.ts @@ -1,2 +1,2 @@ export * from './track'; -export * from './state'; \ No newline at end of file +//export * from './state'; \ No newline at end of file From 8f17dd52cb3a28fb884759db43192dcc169fb7b4 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 15 Mar 2023 14:10:28 -0400 Subject: [PATCH 058/146] cleanup sources --- StageLinq/index.ts | 17 ----------------- services/FileTransfer.ts | 27 +++------------------------ 2 files changed, 3 insertions(+), 41 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 73a2b8d..30962bc 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -21,29 +21,12 @@ export interface DeviceServices { [key: string]: DeviceService; } -// export interface ServiceList { -// [key: string]: InstanceType; -// } - type DeviceSocket = Map export interface DeviceSockets { [key: string]: DeviceSocket; } -// export interface Source { -// db: DbConnection; -// service: InstanceType; -// } -/* -export interface Devices { - [key: string]: { - info: ConnectionInfo; - service?: DeviceService; - socket?: DeviceSocket; - } -} -*/ export declare interface StageLinq { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 5f29be7..143db3f 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,7 +1,7 @@ import { DOWNLOAD_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service, ServiceData } from './Service'; +import { Service } from './Service'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -15,14 +15,6 @@ export const CHUNK_SIZE = 4096; // TODO: Strongly type this for all possible messages? type FileTransferData = any; -interface FileTransferServiceData extends ServiceData { - source?: Source -} - -type DeviceSources = { - [key: string]: Source; -} - enum MessageId { TimeCode = 0x0, FileStat = 0x1, @@ -50,14 +42,10 @@ export declare interface FileTransfer { export class FileTransfer extends Service { private receivedFile: WriteContext = null; public name: string = "FileTransfer"; - public services: Map = new Map(); - public sources: Map = new Map(); private _isAvailable: boolean = true; private txId: number = 1; - public deviceSources: Map = new Map(); - async init() {} // TODO need better txId to handle consurrent transfers @@ -144,7 +132,6 @@ export class FileTransfer extends Service { case MessageId.EndOfMessage: { // End of result indication? - return { id: messageId, message: null, @@ -192,7 +179,7 @@ export class FileTransfer extends Service { //TODO actually parse these messages //if (p_ctx.sizeLeft() >= 5) { //Logger.debug(`requesting sources from `, deviceId.toString()); - this.requestSources(socket); + this.requestSources(socket); //} return { @@ -310,7 +297,6 @@ export class FileTransfer extends Service { async getSources(sources: string[], socket: Socket): Promise { const result: Source[] = []; - let devices: DeviceSources = {} for (const source of sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db @@ -335,22 +321,15 @@ export class FileTransfer extends Service { }, } - this.sources.set(source, thisSource); - //this.parent.databases.sources.set(source, thisSource); + this.parent.setSource(thisSource); result.push(thisSource); this.parent.databases.downloadDb(thisSource.name); - devices[source] = thisSource; break; } } } - - await this.deviceSources.set(this.deviceId.toString(), devices); - - //this.parent.databases.downloadDb(this.deviceId.toString()); - return result; } From e42987634ae7fd49f83173dda32b553e0c3023f3 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 16 Mar 2023 17:24:49 -0400 Subject: [PATCH 059/146] Standardize deviceId and socket in serviceMessages --- cli/index.ts | 2 +- devices/Player.ts | 2 +- services/BeatInfo.ts | 2 ++ services/Directory.ts | 2 ++ services/FileTransfer.ts | 10 +++++++++- services/StateMap.ts | 18 +++++++++++------- types/index.ts | 3 ++- 7 files changed, 28 insertions(+), 11 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 8e4bf6b..ad9c29e 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -186,7 +186,7 @@ async function main() { const msg = data.message.json ? JSON.stringify(data.message.json) : data.message.interval; - console.debug(`${data.message.deviceId.toString()} ` + + console.debug(`${data.deviceId.toString()} ` + `${data.message.name} => ${msg}`); } diff --git a/devices/Player.ts b/devices/Player.ts index 620840c..e726d48 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -89,7 +89,7 @@ export class Player extends EventEmitter { const json = message.json as any; //check if message is for this Player - if(message.deviceId.toString() !== this.deviceId.toString()) return; + if(data.deviceId.toString() !== this.deviceId.toString()) return; if (/Client\/Preferences\/Player$/.test(name)) { this.player = parseInt(json.string); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 5ae7e46..c486cb8 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -75,6 +75,8 @@ export class BeatInfo extends Service { } return { id: id, + deviceId: this.deviceId, + socket: this.socket, message: beatMsg } } diff --git a/services/Directory.ts b/services/Directory.ts index 844696d..e1da4d8 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -79,6 +79,8 @@ export class Directory extends Service { }; const directoryData = { id: 69, + socket: socket, + deviceId: this.deviceId, message: directoryMessage, }; return directoryData; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 143db3f..4a779d3 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -78,6 +78,7 @@ export class FileTransfer extends Service { return { id: MessageId.RequestSources, + deviceId: this.deviceId, message: { txid: txId, }, @@ -106,10 +107,11 @@ export class FileTransfer extends Service { return { id: messageId, + deviceId: this.deviceId, + socket: socket, message: { txid: txId, sources: sources, - socket: socket, }, }; } @@ -122,6 +124,7 @@ export class FileTransfer extends Service { return { id: messageId, + deviceId: this.deviceId, message: { size: size, txid: txId, @@ -134,6 +137,7 @@ export class FileTransfer extends Service { // End of result indication? return { id: messageId, + deviceId: this.deviceId, message: null, socket: socket, }; @@ -147,6 +151,7 @@ export class FileTransfer extends Service { assert(id === 1) return { id: messageId, + deviceId: this.deviceId, socket: socket, message: { size: filesize, @@ -164,6 +169,7 @@ export class FileTransfer extends Service { return { id: messageId, + deviceId: this.deviceId, socket: socket, message: { txid: txId, @@ -184,6 +190,7 @@ export class FileTransfer extends Service { return { id: messageId, + deviceId: this.deviceId, socket: socket, message: null, }; @@ -198,6 +205,7 @@ export class FileTransfer extends Service { return { id: messageId, + deviceId: this.deviceId, socket: socket, message: null, }; diff --git a/services/StateMap.ts b/services/StateMap.ts index 9dd02a2..b4998a5 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -6,6 +6,7 @@ import { ServiceMessage, DeviceId, MessageId } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; +import * as Services from '../services'; import * as stagelinqConfig from '../stagelinqConfig.json'; @@ -32,9 +33,8 @@ const controllerStateValues = [...playerStateValues, ...mixerStateValues]; export interface StateData { + service: InstanceType name?: string; - deviceId?: DeviceId; - socket?: Socket; json?: { type: number; string?: string; @@ -126,11 +126,14 @@ export class StateMap extends Service { const json = JSON.parse(jsonString); return { id: MAGIC_MARKER_JSON, + deviceId: this.deviceId, + socket: socket, message: { name: name, - deviceId: this.deviceId, + + service: this, json: json, - socket: socket, + }, }; } catch(err) { @@ -143,11 +146,12 @@ export class StateMap extends Service { const interval = p_ctx.readInt32(); return { id: MAGIC_MARKER_INTERVAL, + socket: socket, + deviceId: this.deviceId, message: { name: name, - deviceId: this.deviceId, + service: this, interval: interval, - socket: socket, }, }; } @@ -164,7 +168,7 @@ export class StateMap extends Service { this.emit('stateMessage', p_data); if (p_data && p_data.message.json) { Logger.silly( - `${p_data.message.deviceId.toString()} ${p_data.message.name} => ${ + `${p_data.deviceId.toString()} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` ); diff --git a/types/index.ts b/types/index.ts index 928e3dd..f8e9626 100644 --- a/types/index.ts +++ b/types/index.ts @@ -55,7 +55,8 @@ export interface ServicePorts { export interface ServiceMessage { id: number; message: T; - socket?: Socket; + socket: Socket; + deviceId: DeviceId; } export interface Source { From 0f20c4a59d7736a667e55449c310380984269a96 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 16 Mar 2023 19:10:45 -0400 Subject: [PATCH 060/146] Statemap messahe fixes --- services/StateMap.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/StateMap.ts b/services/StateMap.ts index b4998a5..268be8e 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -39,6 +39,7 @@ export interface StateData { type: number; string?: string; value?: number; + state?: boolean; }; interval?: number; } @@ -164,8 +165,14 @@ export class StateMap extends Service { } protected messageHandler(p_data: ServiceMessage): void { - - this.emit('stateMessage', p_data); + //TODO do we need to emit intervals? + if (p_data?.message?.interval) { + //console.warn(p_data.deviceId.toString(), p_data.socket.localPort, p_data.message.interval, p_data.message.name) + //this.emit('stateMessage', p_data); + } else { + this.emit('stateMessage', p_data); + } + if (p_data && p_data.message.json) { Logger.silly( `${p_data.deviceId.toString()} ${p_data.message.name} => ${ From e3ad2b5789342cd05dba024052ba2f8f6a6c4b50 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 17 Mar 2023 13:31:40 -0400 Subject: [PATCH 061/146] added ServiceHandlers --- StageLinq/index.ts | 167 +++++++++++++-------------------------- cli/index.ts | 3 +- services/BeatInfo.ts | 32 +++++++- services/Directory.ts | 29 ++++--- services/FileTransfer.ts | 12 ++- services/Service.ts | 68 +++++++++++++++- services/StateMap.ts | 26 +++++- types/index.ts | 6 +- 8 files changed, 211 insertions(+), 132 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 30962bc..5d54bca 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -4,10 +4,8 @@ import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus, Source} from '../types'; import { Databases } from '../Databases'; import * as Services from '../services'; -import { Socket } from 'net'; +import { Socket, Server } from 'net'; import { assert } from 'console'; -import { BeatData } from '../services/BeatInfo'; - const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -15,16 +13,8 @@ const DEFAULT_OPTIONS: StageLinqOptions = { downloadDbSources: true, }; -type DeviceService = Map> - -export interface DeviceServices { - [key: string]: DeviceService; -} - -type DeviceSocket = Map - -export interface DeviceSockets { - [key: string]: DeviceSocket; +export interface ServiceHandlers { + [key: string]: InstanceType; } export declare interface StageLinq { @@ -46,14 +36,13 @@ export declare interface StageLinq { */ export class StageLinq extends EventEmitter { - public sockets: DeviceSockets = {}; - public services: DeviceServices = {}; - public serviceList: string[] = []; - public readonly _services: Map> = new Map(); + public services: ServiceHandlers = {}; + + private directory: InstanceType = null; private _databases: Databases; public devices = new Devices(); private _sources: Map = new Map(); - + private servers: Map = new Map(); public options: StageLinqOptions; @@ -95,6 +84,18 @@ export class StageLinq extends EventEmitter { return this._sources.entries() } + addServer(serverName: string , server: Server) { + this.servers.set(serverName, server); + } + + deleteServer(serverName: string) { + this.servers.delete(serverName); + } + + private getServers() { + return this.servers.entries(); + } + /** * Connect to the StageLinq network. */ @@ -102,19 +103,32 @@ export class StageLinq extends EventEmitter { // Initialize Discovery agent await this.discovery.init(this.options.actingAs); - // Select Services to offer - this.serviceList = [ - Services.FileTransfer.name, - Services.StateMap.name, - Services.BeatInfo.name, - ]; - - // Directory is required - const directory = await this.startServiceListener(Services.Directory); + for (let service of this.options.services) { + switch (service) { + case "StateMap": { + this.services[service] = new Services.StateMapHandler(this, service); + break; + } + case "FileTransfer": { + this.services[service] = new Services.FileTransferHandler(this, service) + break; + } + case "BeatInfo": { + this.services[service] = new Services.BeatInfoHandler(this, service); + break; + } + default: + break; + } + } + //Directory is required + const directory = new Services.DirectoryHandler(this, Services.Directory.name) + this.services[Services.Directory.name] = directory; + this.directory = await directory.startServiceListener(Services.Directory, this); + // Announce myself with Directory port - await this.discovery.announce(directory.serverInfo.port); - + await this.discovery.announce(this.directory.serverInfo.port); } /** @@ -123,97 +137,22 @@ export class StageLinq extends EventEmitter { async disconnect() { try { Logger.warn('disconnecting'); - this._services.forEach((service) => { - console.info(`Closing ${service.name} server port ${service.serverInfo.port}`); - service.closeServer(); - }); - + const servers = this.getServers(); + for (let [serviceName, server] of servers) { + Logger.debug(`Closing ${serviceName} server port ${server.address()}`) + server.close; + } await this.discovery.unannounce(); } catch (e) { throw new Error(e); } } - - async startServiceListener>(ctor: { - new (parent: InstanceType, _deviceId?: DeviceId): T; - }, deviceId?: DeviceId): Promise { - const serviceName = ctor.name; - const service = new ctor(this, deviceId); - - await service.listen(); - if (service.name == 'StateMap' ) { - this.setupStateMap(service) - } - if (service.name == 'FileTransfer' ) { - this.setupFileTransfer(service) - } - if (service.name == 'BeatInfo' ) { - this.setupBeatInfo(service) - } - this._services.set(serviceName, service); - return service; - } - - - private async setupFileTransfer(service: InstanceType) { - const fileTransfer = service as Services.FileTransfer; - Logger.silly(`Set up Service ${fileTransfer.name}`); - } - - - private async setupStateMap(service: InstanceType) { - const stateMap = service as Services.StateMap; - - const listener = (data: ServiceMessage) => { - if (data && data.message && data.message.json) { - console.log(data.message.name,">>", data.message.json); - } - }; - - stateMap.addListener('stateMessage', listener) - - await stateMap.on('newStateMapDevice', (deviceId: DeviceId, socket: Socket) => { - Logger.debug(`New StateMap Device ${deviceId.toString()}`) - stateMap.subscribe(socket); - }) - } - - - private async setupBeatInfo(service: InstanceType) { - const beatInfo = service as Services.BeatInfo; - Logger.silly(`Set up Service ${beatInfo.name}`); - // Just a counter to test resolution - let beatCalls: number = 0; - // User callback function. - // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: BeatData) { - let deckBeatString = "" - for (let i=0; i{ - beatInfo.startBeatInfo(beatCallback, beatOptions, socket); - }); - } - - async downloadFile(_deviceId: string, path: string) { - - const deviceId = new DeviceId(_deviceId); - const service = this.services[deviceId.toString()].get('FileTransfer') as Services.FileTransfer; + async downloadFile(sourceName: string, path: string): Promise { + + const source = this.getSource(sourceName); + const service = source.service; assert(service); - - const socket = this.sockets[deviceId.toString()].get('FileTransfer'); - assert(socket); - await service.isAvailable(); let thisTxid = service.txid; @@ -225,7 +164,7 @@ export class StageLinq extends EventEmitter { }); try { - const file = await service.getFile(path,socket); + const file = await service.getFile(path,service.socket); return file; } catch (err) { Logger.error(err); diff --git a/cli/index.ts b/cli/index.ts index ad9c29e..41b82aa 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,5 @@ import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList } from '../types'; +//import * as Services from '../services' import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; @@ -92,8 +93,8 @@ async function main() { services: [ ServiceList.StateMap, + ServiceList.BeatInfo, ServiceList.FileTransfer, - ServiceList.Directory, ], } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index c486cb8..eaea1bd 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -1,7 +1,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service } from './Service'; +import { Service, ServiceHandler } from './Service'; import { Logger } from '../LogEmitter'; import type { ServiceMessage, DeviceId } from '../types'; import { Socket } from 'net'; @@ -23,6 +23,36 @@ export interface BeatData { deckCount: number; deck: deckBeatData[]; } +export class BeatInfoHandler extends ServiceHandler { + public name: string = 'BeatInfo' + + public setupService(service: Service, deviceId: DeviceId) { + Logger.debug(`Setting up ${service.name} for ${deviceId.toString()}`); + const beatInfo = service as BeatInfo; + this.addDevice(deviceId, service); + + // Just a counter to test resolution + let beatCalls: number = 0; + // User callback function. + // Will be triggered everytime a player's beat counter crosses the resolution threshold + function beatCallback(bd: BeatData) { + let deckBeatString = "" + for (let i=0; i{ + beatInfo.startBeatInfo(beatCallback, beatOptions, socket); + }); + } + } export declare interface BeatInfo { on(event: 'message', listener: (message: BeatData) => void): this; diff --git a/services/Directory.ts b/services/Directory.ts index e1da4d8..8c4256e 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,6 +1,6 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service } from './Service'; +import { Service, ServiceHandler } from './Service'; import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId } from '../types'; import { sleep } from '../utils/sleep'; import { Socket } from 'net'; @@ -15,10 +15,19 @@ export interface DirectoryData { servicePorts: ServicePorts; } +export class DirectoryHandler extends ServiceHandler { + public name: string = "Directory" + + public setupService(service: Service) { + Logger.debug(`Setting up ${service.name}`); + } +} + export class Directory extends Service { public name: string = 'Directory'; public timeAlive: number; public servicePorts: ServicePorts; + protected readonly isBufferedService = false; @@ -98,21 +107,23 @@ export class Directory extends Service { ctx.write(Tokens.Listen); let services: InstanceType[] = [] - - for (const serviceName of this.parent.serviceList) { + for (const serviceName of Object.keys(this.parent.services)) { + //for (const serviceName of this.parent.serviceList) { switch (serviceName) { case 'FileTransfer': { - const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); + //const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); + const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); services.push(fileTransfer); break; } case 'StateMap': { - const stateMap = await this.parent.startServiceListener(StateMap, deviceId); + const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); services.push(stateMap); break; } case 'BeatInfo': { - const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); + //const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); + const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); services.push(beatInfo); break; } @@ -121,12 +132,12 @@ export class Directory extends Service { } } - this.parent.services[deviceId.toString()] = new Map(); - this.parent.sockets[deviceId.toString()] = new Map(); + //this.parent.services[deviceId.toString()] = new Map(); + //this.parent.sockets[deviceId.toString()] = new Map(); for (const service of services) { - this.parent.services[deviceId.toString()].set(service.name, service); + //this.parent.services[deviceId.toString()].set(service.name, service); ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 4a779d3..aacdbbc 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,7 +1,7 @@ import { DOWNLOAD_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service } from './Service'; +import { Service, ServiceHandler } from './Service'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -39,6 +39,16 @@ export declare interface FileTransfer { //on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; } +export class FileTransferHandler extends ServiceHandler { + public name: string = "FileTransfer" + + public setupService(service: Service, deviceId: DeviceId) { + const fileTransfer = service as FileTransfer; + Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.toString()}`); + this.addDevice(deviceId, service); + } +} + export class FileTransfer extends Service { private receivedFile: WriteContext = null; public name: string = "FileTransfer"; diff --git a/services/Service.ts b/services/Service.ts index 224b575..68d6e7f 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -11,11 +11,67 @@ import { StageLinq } from '../StageLinq'; export declare type ServiceData = { + name?: string; socket?: Socket; deviceId?: DeviceId; service?: InstanceType; } +export abstract class ServiceHandler extends EventEmitter { + public name: string; + protected parent: InstanceType; + private _devices: Map> = new Map(); + + constructor(p_parent:InstanceType, serviceName: string) { + super(); + this.parent = p_parent; + this.name = serviceName; + this.parent.services[serviceName] = this; + } + + hasDevice(deviceId: DeviceId): boolean { + return this._devices.has(deviceId.toString()) + } + + getDevice(deviceId: DeviceId): Service { + return this._devices.get(deviceId.toString()); + } + + getDevices(): Service[] { + return [...this._devices.values()] + } + + addDevice(deviceId: DeviceId, service: Service) { + this._devices.set(deviceId.toString(), service) + } + + async deleteDevice(deviceId: DeviceId) { + this._devices.delete(deviceId.toString()) + } + + async startServiceListener>(ctor: { + new (_parent: InstanceType, _deviceId?: DeviceId): T; + }, parent?: InstanceType, deviceId?: DeviceId): Promise { + + const service = new ctor(parent, deviceId); + await service.listen(); + this.setupService(service, deviceId) + + let serverName = `${ctor.name}`; + + if (deviceId) { + serverName += deviceId.toString(); + } + + this.parent.addServer(serverName, service.server); + + return service; + } + + protected abstract setupService(service: InstanceType, deviceId?: DeviceId): void; +} + + export abstract class Service extends EventEmitter { public readonly name: string = "Service"; public deviceId: DeviceId = null; @@ -125,7 +181,6 @@ export abstract class Service extends EventEmitter { //make sure reading port won't overrun buffer (assert (ctx.sizeLeft() >= 2)); ctx.readUInt16(); //read port, though we don't need it - this.parent.sockets[this.deviceId.toString()].set(this.name, socket); //TODO fix sockets Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.toString()}`); @@ -196,9 +251,16 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { - Logger.silly(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + await server.close(); - parent.services[deviceId.toString()].delete(serviceName); + let serverName = serviceName; + serverName += deviceId.toString(); + parent.deleteServer(serverName); + + const service = parent.services[serviceName] + await service.deleteDevice(deviceId); + assert(!service.hasDevice(deviceId)); } // TODO: Cannot use abstract because of async; is there another way to get this? diff --git a/services/StateMap.ts b/services/StateMap.ts index 268be8e..bdcec13 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,7 +1,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service } from './Service'; +import { Service, ServiceHandler } from './Service'; import { ServiceMessage, DeviceId, MessageId } from '../types'; import { Socket } from 'net'; import { Logger } from '../LogEmitter'; @@ -44,6 +44,30 @@ export interface StateData { interval?: number; } +export class StateMapHandler extends ServiceHandler { + public name: string = 'StateMap' + + public setupService(service: Service, deviceId: DeviceId) { + Logger.debug(`Setting up ${service.name} for ${deviceId.toString()}`); + const stateMap = service as Services.StateMap; + this.addDevice(deviceId, service); + + const listener = (data: ServiceMessage) => { + if (data && data.message && data.message.json) { + console.log(data.message.name,">>", data.message.json); + this.emit('stateMessage', data); + } + }; + + stateMap.addListener('stateMessage', listener) + + stateMap.on('newStateMapDevice', (deviceId: DeviceId, socket: Socket) => { + Logger.debug(`New StateMap Device ${deviceId.toString()}`) + stateMap.subscribe(socket); + }) + } +} + export class StateMap extends Service { name: string = "StateMap"; diff --git a/types/index.ts b/types/index.ts index f8e9626..d46e5e6 100644 --- a/types/index.ts +++ b/types/index.ts @@ -90,7 +90,8 @@ export type IpAddressPort = string; export enum ServiceList { StateMap = "StateMap", FileTransfer = "FileTransfer", - Directory = "DirectoryService", + BeatInfo = "BeatInfo", + Directory = "Directory", } @@ -99,13 +100,14 @@ export interface StageLinqOptions { actingAs?: DiscoveryMessageOptions; downloadDbSources?: boolean; services?: ServiceList[]; + //services?: typeof Services[] } type deviceType = { [key: string] : { name: string, type: string, - decks: number + decks: number, } } From e326f3b62985f8fd8a740d1f338e139e07965abb Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 17 Mar 2023 18:10:24 -0400 Subject: [PATCH 062/146] More serviceHandler stuff --- StageLinq/index.ts | 4 ++++ cli/index.ts | 7 ++++++- services/Service.ts | 25 ++++++++++++++++++++----- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 5d54bca..3f4e171 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -25,6 +25,7 @@ export declare interface StageLinq { on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; + on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; //on(event: 'fileDownloaded', listener: (sourceName: string, dbPath: string) => void): this; //on(event: 'fileDownloading', listener: (sourceName: string, dbPath: string) => void): this; @@ -107,6 +108,9 @@ export class StageLinq extends EventEmitter { switch (service) { case "StateMap": { this.services[service] = new Services.StateMapHandler(this, service); + // this.services[service].on('connection', (name: string, deviceId: DeviceId) => { + // Logger.warn(`Connection ${name} ${deviceId}`); + // }); break; } case "FileTransfer": { diff --git a/cli/index.ts b/cli/index.ts index 41b82aa..f8a7978 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,4 @@ -import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList } from '../types'; +import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId } from '../types'; //import * as Services from '../services' import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; @@ -100,6 +100,11 @@ async function main() { const stageLinq = new StageLinq(stageLinqOptions); + stageLinq.on('connection', (name: string, deviceId: DeviceId) => { + console.warn(`Connection ${name} ${deviceId}`); + }); + + stageLinq.logger.on('error', (...args: any) => { console.error(...args); }); diff --git a/services/Service.ts b/services/Service.ts index 68d6e7f..8afe4f0 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -21,6 +21,7 @@ export abstract class ServiceHandler extends EventEmitter { public name: string; protected parent: InstanceType; private _devices: Map> = new Map(); + constructor(p_parent:InstanceType, serviceName: string) { super(); @@ -50,10 +51,10 @@ export abstract class ServiceHandler extends EventEmitter { } async startServiceListener>(ctor: { - new (_parent: InstanceType, _deviceId?: DeviceId): T; + new (_parent: InstanceType, _serviceHandler?: InstanceType, _deviceId?: DeviceId): T; }, parent?: InstanceType, deviceId?: DeviceId): Promise { - const service = new ctor(parent, deviceId); + const service = new ctor(parent, this, deviceId); await service.listen(); this.setupService(service, deviceId) @@ -79,6 +80,8 @@ export abstract class Service extends EventEmitter { protected isBufferedService: boolean = true; protected parent: InstanceType; + protected _handler: ServiceHandler = null; + public server: Server = null; public serverInfo: AddressInfo; @@ -89,9 +92,10 @@ export abstract class Service extends EventEmitter { private messageBuffer: Buffer = null; - constructor(p_parent:InstanceType, deviceId?: DeviceId) { + constructor(p_parent:InstanceType, serviceHandler: InstanceType , deviceId?: DeviceId) { super(); this.parent = p_parent; + this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; } @@ -104,6 +108,14 @@ export abstract class Service extends EventEmitter { clearTimeout(this.timeout); this.socket = socket; + if (this.name !== "Directory") { + const handler = this._handler as ServiceHandler; + this.parent.emit('connection', this.name, this.deviceId) + if (this.deviceId) { + handler.addDevice(this.deviceId, this) + } + } + socket.on('error', (err) => { reject(err); }); @@ -119,7 +131,7 @@ export abstract class Service extends EventEmitter { Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); if (this.deviceId){ Logger.silly(`started timer for ${this.name} for ${this.deviceId}`) - this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent); + this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent, this._handler); }; resolve(server); }); @@ -250,7 +262,7 @@ export abstract class Service extends EventEmitter { } // callback for timeout timer - protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType) { + protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); await server.close(); @@ -258,6 +270,9 @@ export abstract class Service extends EventEmitter { serverName += deviceId.toString(); parent.deleteServer(serverName); + await handler.deleteDevice(deviceId); + assert(!handler.hasDevice(deviceId)); + const service = parent.services[serviceName] await service.deleteDevice(deviceId); assert(!service.hasDevice(deviceId)); From e28e3940287db9dbe8797522c720f9ec872d2901 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 17 Mar 2023 20:55:43 -0400 Subject: [PATCH 063/146] Player Working from CLI --- Databases/Databases.ts | 4 +- StageLinq/index.ts | 76 ++++++++++++++++--------- cli/index.ts | 123 +++++++++++++++++++++++++++++------------ devices/Player.ts | 5 +- services/Service.ts | 3 +- services/StateMap.ts | 16 ++++-- 6 files changed, 155 insertions(+), 72 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 3171584..1a10338 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -4,9 +4,11 @@ import { Logger } from '../LogEmitter'; import * as fs from 'fs'; import { StageLinq } from '../StageLinq'; import { DbConnection } from './DbConnection'; +import { Source } from '../types'; export declare interface Databases { + on(event: 'dbNewSource', listener: ( source: Source) => void): this; on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; on(event: 'dbDownloading', listener: (sourceName: string, dbPath: string) => void): this; on(event: 'dbProgress', listener: (sourceName: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; @@ -60,7 +62,7 @@ export class Databases extends EventEmitter { this.parent.setSource(source); Logger.info(`Downloaded ${source.deviceId.toString()}/${sourceName} to ${dbPath}`); this.emit('dbDownloaded', source.deviceId.toString(), dbPath); - + this.emit('dbNewSource', source) } getDbPath(dbSourceName?: string) { diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 3f4e171..6cee1c9 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -4,8 +4,9 @@ import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus, Source} from '../types'; import { Databases } from '../Databases'; import * as Services from '../services'; -import { Socket, Server } from 'net'; +import { Server } from 'net'; import { assert } from 'console'; +import { sleep } from '../utils/sleep'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -22,10 +23,12 @@ export declare interface StageLinq { on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; - on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, socket: Socket) => void): this; + on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; + //on(event: 'StateMap', listener: (service: InstanceType ) => void): this; + //on(event: 'stateMap', listener: (service: InstanceType ) => void): this; //on(event: 'fileDownloaded', listener: (sourceName: string, dbPath: string) => void): this; //on(event: 'fileDownloading', listener: (sourceName: string, dbPath: string) => void): this; @@ -46,6 +49,9 @@ export class StageLinq extends EventEmitter { private servers: Map = new Map(); public options: StageLinqOptions; + public stateMap: InstanceType = null; + public fileTransfer: InstanceType = null; + public beatInfo: InstanceType = null; public logger: Logger = Logger.instance; public discovery: Discovery = new Discovery(this); @@ -54,6 +60,31 @@ export class StageLinq extends EventEmitter { super(); this.options = options || DEFAULT_OPTIONS; this._databases = new Databases(this); + for (let service of this.options.services) { + switch (service) { + case "StateMap": { + const stateMap = new Services.StateMapHandler(this, service); + this.services[service] = stateMap + this.stateMap = stateMap + break; + } + case "FileTransfer": { + const fileTransfer = new Services.FileTransferHandler(this, service); + this.services[service] = fileTransfer; + this.fileTransfer = fileTransfer; + break; + } + case "BeatInfo": { + const beatInfo = new Services.BeatInfoHandler(this, service); + this.services[service] = beatInfo; + this.beatInfo = beatInfo; + break; + } + default: + break; + } + } + } ////// Getters & Setters ///////// @@ -103,29 +134,7 @@ export class StageLinq extends EventEmitter { async connect() { // Initialize Discovery agent await this.discovery.init(this.options.actingAs); - - for (let service of this.options.services) { - switch (service) { - case "StateMap": { - this.services[service] = new Services.StateMapHandler(this, service); - // this.services[service].on('connection', (name: string, deviceId: DeviceId) => { - // Logger.warn(`Connection ${name} ${deviceId}`); - // }); - break; - } - case "FileTransfer": { - this.services[service] = new Services.FileTransferHandler(this, service) - break; - } - case "BeatInfo": { - this.services[service] = new Services.BeatInfoHandler(this, service); - break; - } - default: - break; - } - } - + //Directory is required const directory = new Services.DirectoryHandler(this, Services.Directory.name) this.services[Services.Directory.name] = directory; @@ -154,8 +163,21 @@ export class StageLinq extends EventEmitter { async downloadFile(sourceName: string, path: string): Promise { - const source = this.getSource(sourceName); - const service = source.service; + let service: InstanceType = null + while (!service) { + await sleep(250); + const source = this.getSource(path); + if (source.service) { + service = source.service; + } + + } + console.log(sourceName, this.getSourceList()); + + const _sourceName = path.split('/').slice(1,2).shift(); + console.log(_sourceName); + //const source = this.getSource(_sourceName); + //const service = source.service; assert(service); await service.isAvailable(); diff --git a/cli/index.ts b/cli/index.ts index f8a7978..637951c 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,11 +1,12 @@ -import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId } from '../types'; -//import * as Services from '../services' +import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId, Source } from '../types'; +import * as Services from '../services' import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; +import { Player } from '../devices/Player'; require('console-stamp')(console, { @@ -60,8 +61,9 @@ async function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: string) { + // try { - const data = await stageLinq.downloadFile(status.deviceId, status.trackPathAbsolute); + const data = await stageLinq.downloadFile(status.deviceId, status.dbSourceName); if (data) { fs.writeFileSync(dest, Buffer.from(data)); console.log(`Downloaded ${status.trackPathAbsolute} to ${dest}`); @@ -98,12 +100,11 @@ async function main() { ], } - const stageLinq = new StageLinq(stageLinqOptions); + const downloadFlag = false; - stageLinq.on('connection', (name: string, deviceId: DeviceId) => { - console.warn(`Connection ${name} ${deviceId}`); - }); + const stageLinq = new StageLinq(stageLinqOptions); + stageLinq.logger.on('error', (...args: any) => { console.error(...args); @@ -151,6 +152,12 @@ async function main() { // dbDownloaded = true; }); + stageLinq.databases.on('dbNewSource', (source: Source) => { + console.log(`New Source Available (${source.name})`); + // dbDownloaded = true; + }); + + stageLinq.on('fileProgress', (file, total, bytes, percent) => { //Logger.warn(thisTxid, txid); //if (thisTxid === txid) { @@ -163,46 +170,90 @@ async function main() { //}); // Fires when StageLinq and all devices are ready to use. - stageLinq.on('ready', () => { - console.log(`StageLinq is ready!`); - }); + // stageLinq.on('ready', () => { + // console.log(`StageLinq is ready!`); + // }); // Fires when a new track is loaded on to a player. - stageLinq.on('trackLoaded', async (status) => { + // stageLinq.on('trackLoaded', async (status) => { - // Example of how to connect to the database using this library's - // implementation of BetterSqlite3 to get additional information. - if (stageLinq.options.downloadDbSources) { - getTrackInfo(stageLinq, status); - } + // // Example of how to connect to the database using this library's + // // implementation of BetterSqlite3 to get additional information. + // if (stageLinq.options.downloadDbSources) { + // getTrackInfo(stageLinq, status); + // } - // Example of how to download the actual track from the media. - const filename = [status.title,'.mp3'].join(''); - await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); - }); + // // Example of how to download the actual track from the media. + // const filename = [status.title,'.mp3'].join(''); + // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); + // }); - // Fires when a track has started playing. - stageLinq.on('nowPlaying', (status) => { - console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) - }); + // // Fires when a track has started playing. + // stageLinq.on('nowPlaying', (status) => { + // console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) + // }); // Fires when StageLinq receives messages from a device. - stageLinq.on('stateMessage', (data) => { - if (data.message.json) { - const msg = data.message.json - ? JSON.stringify(data.message.json) - : data.message.interval; - console.debug(`${data.deviceId.toString()} ` + - `${data.message.name} => ${msg}`); - } + stageLinq.stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType ) => { + console.log(`Subscribing to States on ${deviceId.toString()}`); + + const player = new Player({ + stateMap: service, + address: service.socket.remoteAddress, + port: service.socket.remotePort, + deviceId: deviceId, + }); + + //wait for Player to setup + while (!player.ready) { + sleep(250); + } + + service.subscribe(); + + player.on('trackLoaded', async (status) => { + if (stageLinq.options.downloadDbSources && downloadFlag) { + getTrackInfo(stageLinq, status); + } + + // Example of how to download the actual track from the media. + + if (downloadFlag) { + const filename = [status.title,'.mp3'].join(''); + while (!stageLinq.hasSource(status.dbSourceName)) { + await sleep(250); + } + await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); + } + + }); + + player.on('stateChanged', (status) => { + console.log(`Updating state [${status.deck}]`, status) + }); + + player.on('nowPlaying', (status) => { + console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) + }); + }); - }); + // stageLinq.stateMap.on('stateMessage', (data) => { + // if (data.message.json) { + // const msg = data.message.json + // ? JSON.stringify(data.message.json) + // : data.message.interval; + // console.debug(`${data.deviceId.toString()} ` + + // `${data.message.name} => ${msg}`); + + // } + + // }); // Fires when the state of a device has changed. - stageLinq.on('stateChanged', (status) => { - console.log(`Updating state [${status.deck}]`, status) - }); + // stageLinq.on('stateChanged', (status) => { + // console.log(`Updating state [${status.deck}]`, status) + // }); ///////////////////////////////////////////////////////////////////////// // CLI diff --git a/devices/Player.ts b/devices/Player.ts index e726d48..082abde 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -62,7 +62,7 @@ export class Player extends EventEmitter { */ constructor(options: PlayerOptions) { super(); - options.stateMap.on('message', this.messageHandler.bind(this)); + options.stateMap.on('stateMessage', this.messageHandler.bind(this)); this.address = options.address; this.port = options.port; this.deviceId = options.deviceId; @@ -83,6 +83,9 @@ export class Player extends EventEmitter { * @returns */ private messageHandler(data: ServiceMessage) { + if (!data?.message) { + return + } const message = data.message if (!message.json) return; const name = message.name; diff --git a/services/Service.ts b/services/Service.ts index 8afe4f0..77c5844 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -110,7 +110,8 @@ export abstract class Service extends EventEmitter { if (this.name !== "Directory") { const handler = this._handler as ServiceHandler; - this.parent.emit('connection', this.name, this.deviceId) + + handler.emit('connection', this.name, this.deviceId) if (this.deviceId) { handler.addDevice(this.deviceId, this) } diff --git a/services/StateMap.ts b/services/StateMap.ts index bdcec13..44159c4 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -54,16 +54,18 @@ export class StateMapHandler extends ServiceHandler { const listener = (data: ServiceMessage) => { if (data && data.message && data.message.json) { - console.log(data.message.name,">>", data.message.json); + // console.log(data.message.name,">>", data.message.json); this.emit('stateMessage', data); } }; stateMap.addListener('stateMessage', listener) - stateMap.on('newStateMapDevice', (deviceId: DeviceId, socket: Socket) => { + stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType) => { Logger.debug(`New StateMap Device ${deviceId.toString()}`) - stateMap.subscribe(socket); + this.emit('newStateMapDevice', deviceId, service); + //stateMap.subscribe(); + assert(service); }) } } @@ -74,13 +76,14 @@ export class StateMap extends Service { async init() { } - public async subscribe(socket: Socket) { + public async subscribe() { + const socket = this.socket; while (!this.parent.discovery.hasConnectionInfo(this.deviceId)) { await sleep(200); } - Logger.debug(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.toString()}`); + Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.toString()}`); const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); @@ -129,8 +132,9 @@ export class StateMap extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) sleep(500) + assert(socket); - this.emit('newStateMapDevice', deviceId, socket) + this.emit('newStateMapDevice', deviceId, this) return } From c15ee8d0662b6ea469dec89e4469becb7e80c2b6 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 18 Mar 2023 16:30:25 -0400 Subject: [PATCH 064/146] StateMessage Adapters --- Databases/Databases.ts | 2 +- StageLinq/index.ts | 23 +-- cli/index.ts | 242 +++++------------------------ cli/old.ts | 291 +++++++++++++++++++++++++++++++++++ services/StateMap.ts | 50 +++++- types/models/State.ts | 335 +++++++++++++++++++++++------------------ 6 files changed, 571 insertions(+), 372 deletions(-) create mode 100644 cli/old.ts diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 1a10338..5d1b461 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -44,7 +44,7 @@ export class Databases extends EventEmitter { this.emit('dbProgress', source.name, progress.total, progress.bytesDownloaded, progress.percentComplete); //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); } else { - console.warn(txid, thisTxid) + //console.warn(txid, thisTxid) } }); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 6cee1c9..006987c 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -6,7 +6,7 @@ import { Databases } from '../Databases'; import * as Services from '../services'; import { Server } from 'net'; import { assert } from 'console'; -import { sleep } from '../utils/sleep'; +//import { sleep } from '../utils/sleep'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -161,23 +161,12 @@ export class StageLinq extends EventEmitter { } } - async downloadFile(sourceName: string, path: string): Promise { + async downloadFile(source: Source, path: string): Promise { - let service: InstanceType = null - while (!service) { - await sleep(250); - const source = this.getSource(path); - if (source.service) { - service = source.service; - } - - } - console.log(sourceName, this.getSourceList()); - - const _sourceName = path.split('/').slice(1,2).shift(); - console.log(_sourceName); - //const source = this.getSource(_sourceName); - //const service = source.service; + + + + const service = source.service; assert(service); await service.isAvailable(); diff --git a/cli/index.ts b/cli/index.ts index 637951c..59b1144 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,27 +1,14 @@ -import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId, Source } from '../types'; +import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source} from '../types'; import * as Services from '../services' -import { DbConnection } from "../Databases"; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; -import * as fs from 'fs'; -import * as os from 'os'; -import * as path from 'path'; -import { Player } from '../devices/Player'; + require('console-stamp')(console, { format: ':date(HH:MM:ss) :label', }); -/** - * Get track information for latest playing song. - * - * @param stageLinq Instance of StageLinq. - * @param status Player to get track info from. - * @returns Track info - */ - -//let dbDownloaded: boolean = false; function progressBar(size: number, bytes: number, total: number): string { @@ -37,223 +24,76 @@ function progressBar(size: number, bytes: number, total: number): string { return `[${progressArrary.join('')}]` } -async function getTrackInfo(stageLinq: StageLinq, status: PlayerStatus) { - - try { - const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) - const connection = new DbConnection(dbPath.database.local.path); - const result = await connection.getTrackInfo(status.trackPath); - connection.close(); - console.log('Database entry:', result); - return result; - } catch(e) { - console.error(e); - } -} - -/** - * Download the currently playing song from the media. - * - * @param stageLinq Instance of StageLinq. - * @param status Player to download the current song from. - * @param dest Path to save file to. - */ - -async function downloadFile(stageLinq: StageLinq, status: PlayerStatus, dest: string) { +async function downloadFile(stageLinq: StageLinq, sourceName: string, path: string, dest?: string) { // + + while (!source.has(sourceName)) { + await sleep(250); + } + const _source = source.get(sourceName); try { - const data = await stageLinq.downloadFile(status.deviceId, status.dbSourceName); - if (data) { - fs.writeFileSync(dest, Buffer.from(data)); - console.log(`Downloaded ${status.trackPathAbsolute} to ${dest}`); + const data = await stageLinq.downloadFile(_source, path); + if (dest && data) { + //fs.writeFileSync(, Buffer.from(data)); + //console.log(`Downloaded ${status.trackPathAbsolute} to ${dest}`); } } catch(e) { - console.error(`Could not download ${status.trackPathAbsolute}`); + console.error(`Could not download ${path}`); console.error(e) } } +let source: Map = new Map(); async function main() { - - console.log('Starting CLI'); + console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - - // If set to true, download the source DBs in a temporary location. - // (default: true) downloadDbSources: true, - - // Max number of attempts to connect to a StageLinq device. - // (default: 3) maxRetries: 3, - - // What device to emulate on the network. - // (default: Now Playing) actingAs: ActingAsDevice.NowPlaying, - services: [ ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, ], } - - const downloadFlag = false; - - const stageLinq = new StageLinq(stageLinqOptions); - + const stageLinq = new StageLinq(stageLinqOptions); - stageLinq.logger.on('error', (...args: any) => { - console.error(...args); - }); - stageLinq.logger.on('warn', (...args: any) => { - console.warn(...args); - args.push("\n"); - }); - stageLinq.logger.on('info', (...args: any) => { - console.info(...args); - args.push("\n"); - }); - stageLinq.logger.on('log', (...args: any) => { - console.log(...args); - args.push("\n"); + stageLinq.on('fileProgress', (file, total, bytes, percent) => { + console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); }); - stageLinq.logger.on('debug', (...args: any) => { - console.debug(...args); - args.push("\n"); - }); - //Note: Silly is very verbose! - // stageLinq.logger.on('silly', (...args: any) => { - // console.debug(...args); - // }); - - // Fires when we connect to any device - //stageLinq.on('connected', async (connectionInfo) => { - // console.log(`Successfully connected to ${connectionInfo.software.name}`); - - if (stageLinq.options.downloadDbSources) { - // Fires when the database source starts downloading. - stageLinq.databases.on('dbDownloading', (sourceName, dbPath) => { - console.log(`Downloading ${sourceName} to ${dbPath}`); - }); - // Fires while the database source is being read - stageLinq.databases.on('dbProgress', ( sourceName, total, bytes, percent) => { - //console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); - console.debug(`Reading ${sourceName}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); - }); - // Fires when the database source has been read and saved to a temporary path. - stageLinq.databases.on('dbDownloaded', (sourceName, dbPath) => { - console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); - // dbDownloaded = true; - }); - - stageLinq.databases.on('dbNewSource', (source: Source) => { - console.log(`New Source Available (${source.name})`); - // dbDownloaded = true; - }); - - - stageLinq.on('fileProgress', (file, total, bytes, percent) => { - //Logger.warn(thisTxid, txid); - //if (thisTxid === txid) { - //this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); - console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); - //} - }); - } - - //}); - - // Fires when StageLinq and all devices are ready to use. - // stageLinq.on('ready', () => { - // console.log(`StageLinq is ready!`); - // }); - - // Fires when a new track is loaded on to a player. - // stageLinq.on('trackLoaded', async (status) => { - - // // Example of how to connect to the database using this library's - // // implementation of BetterSqlite3 to get additional information. - // if (stageLinq.options.downloadDbSources) { - // getTrackInfo(stageLinq, status); - // } - - // // Example of how to download the actual track from the media. - // const filename = [status.title,'.mp3'].join(''); - // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); - // }); - - // // Fires when a track has started playing. - // stageLinq.on('nowPlaying', (status) => { - // console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) - // }); - - // Fires when StageLinq receives messages from a device. - - stageLinq.stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType ) => { - console.log(`Subscribing to States on ${deviceId.toString()}`); + if (stageLinq.stateMap) { - const player = new Player({ - stateMap: service, - address: service.socket.remoteAddress, - port: service.socket.remotePort, - deviceId: deviceId, - }); - - //wait for Player to setup - while (!player.ready) { - sleep(250); - } - - service.subscribe(); - - player.on('trackLoaded', async (status) => { - if (stageLinq.options.downloadDbSources && downloadFlag) { - getTrackInfo(stageLinq, status); - } - - // Example of how to download the actual track from the media. - - if (downloadFlag) { - const filename = [status.title,'.mp3'].join(''); - while (!stageLinq.hasSource(status.dbSourceName)) { - await sleep(250); + stageLinq.stateMap.on('stateMessage', (data: ServiceMessage) => { + if (data.message.json) { + console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); + if (data.message.json.string && data.message.name.split('/').pop() === "TrackNetworkPath") { + const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + //console.log(sourceName, path, data.message.json.string); + downloadFile(stageLinq, sourceName, path); } - await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); } + }); + + stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { + console.log(`Subscribing to States on ${service.deviceId.toString()}`); + service.subscribe(); + }); - }); - - player.on('stateChanged', (status) => { - console.log(`Updating state [${status.deck}]`, status) - }); + } + - player.on('nowPlaying', (status) => { - console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) - }); - }); - - // stageLinq.stateMap.on('stateMessage', (data) => { - // if (data.message.json) { - // const msg = data.message.json - // ? JSON.stringify(data.message.json) - // : data.message.interval; - // console.debug(`${data.deviceId.toString()} ` + - // `${data.message.name} => ${msg}`); - - // } - - // }); - - // Fires when the state of a device has changed. - // stageLinq.on('stateChanged', (status) => { - // console.log(`Updating state [${status.deck}]`, status) - // }); + stageLinq.databases.on('dbNewSource', (_source: Source) => { + console.log(`New Source Available (${_source.name})`); + source.set(_source.name, _source) + }); ///////////////////////////////////////////////////////////////////////// // CLI @@ -262,8 +102,6 @@ async function main() { try { process.on('SIGINT', async function () { console.info('... exiting'); - - // Ensure SIGINT won't be impeded by some error try { await stageLinq.disconnect(); diff --git a/cli/old.ts b/cli/old.ts new file mode 100644 index 0000000..989a999 --- /dev/null +++ b/cli/old.ts @@ -0,0 +1,291 @@ +// import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId, Source } from '../types'; +// import * as Services from '../services' +// import { DbConnection } from "../Databases"; +// import { sleep } from '../utils/sleep'; +// import { StageLinq } from '../StageLinq'; +// import * as fs from 'fs'; +// import * as os from 'os'; +// import * as path from 'path'; +// import { Player } from '../devices/Player'; + + +// require('console-stamp')(console, { +// format: ':date(HH:MM:ss) :label', +// }); + +// /** +// * Get track information for latest playing song. +// * +// * @param stageLinq Instance of StageLinq. +// * @param status Player to get track info from. +// * @returns Track info +// */ + +// //let dbDownloaded: boolean = false; + +// function progressBar(size: number, bytes: number, total: number): string { + +// const progress = Math.ceil((bytes / total) * 10) +// let progressArrary = new Array(size); +// progressArrary.fill(' '); +// if (progress) { + +// for (let i=0; i { +// console.error(...args); +// }); +// stageLinq.logger.on('warn', (...args: any) => { +// console.warn(...args); +// args.push("\n"); +// }); +// stageLinq.logger.on('info', (...args: any) => { +// console.info(...args); +// args.push("\n"); +// }); +// stageLinq.logger.on('log', (...args: any) => { +// console.log(...args); +// args.push("\n"); +// }); +// stageLinq.logger.on('debug', (...args: any) => { +// console.debug(...args); +// args.push("\n"); +// }); +// //Note: Silly is very verbose! +// // stageLinq.logger.on('silly', (...args: any) => { +// // console.debug(...args); +// // }); + +// // Fires when we connect to any device +// //stageLinq.on('connected', async (connectionInfo) => { +// // console.log(`Successfully connected to ${connectionInfo.software.name}`); + +// if (stageLinq.options.downloadDbSources) { +// // Fires when the database source starts downloading. +// stageLinq.databases.on('dbDownloading', (sourceName, dbPath) => { +// console.log(`Downloading ${sourceName} to ${dbPath}`); +// }); + +// // Fires while the database source is being read +// stageLinq.databases.on('dbProgress', ( sourceName, total, bytes, percent) => { +// //console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); +// console.debug(`Reading ${sourceName}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); +// }); + +// // Fires when the database source has been read and saved to a temporary path. +// stageLinq.databases.on('dbDownloaded', (sourceName, dbPath) => { +// console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); +// // dbDownloaded = true; +// }); + +// stageLinq.databases.on('dbNewSource', (source: Source) => { +// console.log(`New Source Available (${source.name})`); +// // dbDownloaded = true; +// }); + + +// stageLinq.on('fileProgress', (file, total, bytes, percent) => { +// //Logger.warn(thisTxid, txid); +// //if (thisTxid === txid) { +// //this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); +// console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); +// //} +// }); +// } + +// //}); + +// // Fires when StageLinq and all devices are ready to use. +// // stageLinq.on('ready', () => { +// // console.log(`StageLinq is ready!`); +// // }); + +// // Fires when a new track is loaded on to a player. +// // stageLinq.on('trackLoaded', async (status) => { + +// // // Example of how to connect to the database using this library's +// // // implementation of BetterSqlite3 to get additional information. +// // if (stageLinq.options.downloadDbSources) { +// // getTrackInfo(stageLinq, status); +// // } + +// // // Example of how to download the actual track from the media. +// // const filename = [status.title,'.mp3'].join(''); +// // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); +// // }); + +// // // Fires when a track has started playing. +// // stageLinq.on('nowPlaying', (status) => { +// // console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) +// // }); + +// // Fires when StageLinq receives messages from a device. + +// stageLinq.stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType ) => { +// console.log(`Subscribing to States on ${deviceId.toString()}`); + +// const player = new Player({ +// stateMap: service, +// address: service.socket.remoteAddress, +// port: service.socket.remotePort, +// deviceId: deviceId, +// }); + +// //wait for Player to setup +// while (!player.ready) { +// sleep(250); +// } + +// service.subscribe(); + +// player.on('trackLoaded', async (status) => { +// if (stageLinq.options.downloadDbSources && downloadFlag) { +// getTrackInfo(stageLinq, status); +// } + +// // Example of how to download the actual track from the media. + +// if (downloadFlag) { +// const filename = [status.title,'.mp3'].join(''); +// while (!stageLinq.hasSource(status.dbSourceName)) { +// await sleep(250); +// } +// await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); +// } + +// }); + +// player.on('stateChanged', (status) => { +// console.log(`Updating state [${status.deck}]`, status) +// }); + +// player.on('nowPlaying', (status) => { +// console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) +// }); +// }); + +// // stageLinq.stateMap.on('stateMessage', (data) => { +// // if (data.message.json) { +// // const msg = data.message.json +// // ? JSON.stringify(data.message.json) +// // : data.message.interval; +// // console.debug(`${data.deviceId.toString()} ` + +// // `${data.message.name} => ${msg}`); + +// // } + +// // }); + +// // Fires when the state of a device has changed. +// // stageLinq.on('stateChanged', (status) => { +// // console.log(`Updating state [${status.deck}]`, status) +// // }); + +// ///////////////////////////////////////////////////////////////////////// +// // CLI + +// let returnCode = 0; +// try { +// process.on('SIGINT', async function () { +// console.info('... exiting'); + +// // Ensure SIGINT won't be impeded by some error + +// try { +// await stageLinq.disconnect(); +// } catch (err: any) { +// const message = err.stack.toString(); +// console.error(message); +// } +// process.exit(returnCode); +// }); + +// await stageLinq.connect(); + +// while (true) { +// await sleep(250); +// } + +// } catch (err: any) { +// const message = err.stack.toString(); +// console.error(message); +// returnCode = 1; +// } + +// await stageLinq.disconnect(); +// process.exit(returnCode); +// } + +// main(); diff --git a/services/StateMap.ts b/services/StateMap.ts index 44159c4..4f8c8c9 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -31,6 +31,7 @@ const playerStateValues = stateReducer(stagelinqConfig.player, '/'); const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; +export type StateMapDevice = InstanceType export interface StateData { service: InstanceType @@ -46,6 +47,7 @@ export interface StateData { export class StateMapHandler extends ServiceHandler { public name: string = 'StateMap' + public deviceTrackRegister: Map = new Map(); public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.toString()}`); @@ -61,9 +63,9 @@ export class StateMapHandler extends ServiceHandler { stateMap.addListener('stateMessage', listener) - stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType) => { - Logger.debug(`New StateMap Device ${deviceId.toString()}`) - this.emit('newStateMapDevice', deviceId, service); + stateMap.on('newDevice', ( service: InstanceType) => { + Logger.debug(`New StateMap Device ${service.deviceId.toString()}`) + this.emit('newDevice', service); //stateMap.subscribe(); assert(service); }) @@ -96,8 +98,11 @@ export class StateMap extends Service { for (let i=0; i< thisPeer.device.decks; i++) { playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } - + const handler = this._handler as Services.StateMapHandler for (let state of playerDeckStateValues) { + const stateValue = `${this.deviceId.toString()},/${state.split('/').slice(1,3).join("/")}` + const newValue = `{${this.deviceId}},${state.split('/').slice(2,3).shift().substring(4,5)}` + handler.deviceTrackRegister.set(stateValue, newValue); await this.subscribeState(state, 0, socket); } @@ -134,7 +139,7 @@ export class StateMap extends Service { sleep(500) assert(socket); - this.emit('newStateMapDevice', deviceId, this) + this.emit('newDevice', this) return } @@ -192,13 +197,44 @@ export class StateMap extends Service { return null; } + private deckMessageAdapter(data: ServiceMessage): ServiceMessage { + const handler = this._handler as Services.StateMapHandler + const deckHandlerMsgs = handler.deviceTrackRegister.entries(); + let returnMsg: ServiceMessage = {...data} + + for (let [oldValue, newValue] of deckHandlerMsgs) { + const oldValueArr = oldValue.split(',') + //const testString = `${this.deviceId.toString()}${data?.message?.name.substring(0,oldValue.length)}` + //console.warn(testString, oldValue) + if (oldValueArr[0] == this.deviceId.toString() && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { + //if (testString == oldValue) { + returnMsg.message.name = `${newValue},${data.message.name.substring(oldValueArr[1].length, data.message.name.length)}` + } + } + + return returnMsg + } + + private mixerAssignmentAdapter(data: ServiceMessage) { + const handler = this._handler as Services.StateMapHandler + const keyString = `${this.deviceId.toString()},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` + const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; + handler.deviceTrackRegister.set(keyString, valueString); + } + + protected messageHandler(p_data: ServiceMessage): void { //TODO do we need to emit intervals? + + if (p_data?.message?.name.substring(0,p_data?.message?.name?.length-1) == "/Mixer/ChannelAssignment") { + this.mixerAssignmentAdapter(p_data); + } + if (p_data?.message?.interval) { //console.warn(p_data.deviceId.toString(), p_data.socket.localPort, p_data.message.interval, p_data.message.name) - //this.emit('stateMessage', p_data); + //this.emit('stateMessage', this.deckMessageAdapter(p_data)); } else { - this.emit('stateMessage', p_data); + this.emit('stateMessage', this.deckMessageAdapter(p_data)); } if (p_data && p_data.message.json) { diff --git a/types/models/State.ts b/types/models/State.ts index 1123a6d..36494d1 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -109,156 +109,201 @@ +export const configStates = { + Mixer: { + Mixer: { + ChannelAssignment1: '', + ChannelAssignment2: '', + ChannelAssignment3: '', + ChannelAssignment4: '', + }, + }, + Player: { + Client: { + Librarian: { + DevicesController: { + CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] + HasSDCardConnected: false, + HasUsbDeviceConnected: false, + }, + }, + Preferences: { + LayerB: false, + Player: '', //type 4 ENUM? + PlayerJogColorA: '#FFFFFF', //type 16 Colour string + PlayerJogColorB: '#FFFFFF', + Profile: { + Application: { + SyncMode: '', + }, + }, + }, + }, + } +} -// export const PlayerStates = { -// Gui: { -// ViewLayer: { -// LayerB: 'LayerB', -// }, -// Decks: { -// Deck: { -// ActiveDeck: 'ActiveDeck', -// }, -// }, -// }, -// Engine: { -// DeckCount: 2, //type 10 -// Sync: { -// Network: { -// MasterStatus: false, -// }, -// }, -// Master: { -// MasterTempo: 120.0, //type 0 -// }, -// }, -// Client: { -// Librarian: { -// DevicesController: { -// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] -// HasSDCardConnected: false, -// HasUsbDeviceConnected: false, -// }, -// }, -// Preferences: { -// LayerB: false, -// Player: '', //type 4 ENUM? -// PlayerJogColorA: '#FFFFFF', //type 16 Colour string -// PlayerJogColorB: '#FFFFFF', -// Profile: { -// Application: { -// PlayerColor1: '#FFFFFF', -// PlayerColor1A: '#FFFFFF', -// PlayerColor1B: '#FFFFFF', -// PlayerColor2: '#FFFFFF', -// PlayerColor2A: '#FFFFFF', -// PlayerColor2B: '#FFFFFF', -// PlayerColor3: '#FFFFFF', -// PlayerColor3A: '#FFFFFF', -// PlayerColor3B: '#FFFFFF', -// PlayerColor4: '#FFFFFF', -// PlayerColor4A: '#FFFFFF', -// PlayerColor4B: '#FFFFFF', -// SyncMode: '', -// }, -// }, -// }, -// }, -// } -// export const PlayerDeckStates = { -// CurrentBPM: 120.00, //type 0 -// ExternalMixerVolume: 1, //type 0 -// ExternalScratchWheelTouch: false, //type 2 false? -// Pads: { -// View: '', //type 4 ENUM? 'CUES' -// }, -// Play: false, -// PlayState: false, -// //PlayStatePath: 'PlayStatePath', //NG -// Speed: 1.0, //0.44444535 -// SpeedNeutral: false, -// SpeedOffsetDown: false, -// SpeedOffsetUp: false, -// SpeedRange: '8', //enum -// SpeedState: 1.0, //type 0 signed -0.39999 -// SyncMode: 'Off', //enum: Off, Tempo, TempoSync -// DeckIsMaster: false, -// Track: { -// ArtistName: '', -// Bleep: false, //type 2 -// CuePosition: 156.0, //type 14? -// CurrentBPM: 120.0, -// CurrentKeyIndex: 0, //type 10? -// CurrentLoopInPosition: 156.0, //type 14 -// CurrentLoopOutPosition: 156.0, //type 14 -// CurrentLoopSizeInBeats: 0, // type 14 -// KeyLock: false, -// LoopEnableState: false, //type 1 -// Loop: { -// QuickLoop1: false, //type 2 -// QuickLoop2: false, -// QuickLoop3: false, -// QuickLoop4: false, -// QuickLoop5: false, -// QuickLoop6: false, -// QuickLoop7: false, -// QuickLoop8: false, -// }, -// PlayPauseLEDState: false, -// SampleRate: 44100, //type 14 -// SongAnalyzed: false, -// SongLoaded: false, -// SongName: '', -// SoundSwitchGUID: '', //NG must be Analyzed? -// TrackBytes: 1, //type 10 -// TrackData: false, //type 3??? -// TrackLength: 1, //type 10 -// TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... -// TrackNetworkPath: '', -// TrackURI: '', //NG Only streaming? -// TrackWasPlayed: false, -// } -// } +export const PlayerStates = { + // Gui: { + // ViewLayer: { + // LayerB: 'LayerB', + // }, + // Decks: { + // Deck: { + // ActiveDeck: 'ActiveDeck', + // }, + // }, + // }, + Mixer: { + //NumberOfChannels: 'NumberOfChannels', //NG + ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' + ChannelAssignment2: '', + ChannelAssignment3: '', + ChannelAssignment4: '', + }, + Engine: { + DeckCount: 2, //type 10 + Sync: { + Network: { + MasterStatus: false, + }, + }, + Master: { + MasterTempo: 120.0, //type 0 + }, + }, + Client: { + Librarian: { + DevicesController: { + CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] + HasSDCardConnected: false, + HasUsbDeviceConnected: false, + }, + }, + Preferences: { + LayerB: false, + Player: '', //type 4 ENUM? + PlayerJogColorA: '#FFFFFF', //type 16 Colour string + PlayerJogColorB: '#FFFFFF', + Profile: { + Application: { + PlayerColor1: '#FFFFFF', + PlayerColor1A: '#FFFFFF', + PlayerColor1B: '#FFFFFF', + PlayerColor2: '#FFFFFF', + PlayerColor2A: '#FFFFFF', + PlayerColor2B: '#FFFFFF', + PlayerColor3: '#FFFFFF', + PlayerColor3A: '#FFFFFF', + PlayerColor3B: '#FFFFFF', + PlayerColor4: '#FFFFFF', + PlayerColor4A: '#FFFFFF', + PlayerColor4B: '#FFFFFF', + SyncMode: '', + }, + }, + }, + }, +} -// export const MixerStates = { -// Mixer: { -// CH1faderPosition: 1.27, //type 0 -// CH2faderPosition: 0.0, -// CH3faderPosition: 0.0, -// CH4faderPosition: 0.0, -// CrossfaderPosition: 0.5, //type 0 -// //NumberOfChannels: 'NumberOfChannels', //NG -// ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' -// ChannelAssignment2: '', -// ChannelAssignment3: '', -// ChannelAssignment4: '', -// }, -// // Gui: { -// // ViewLayer: { -// // LayerB: 'LayerB', -// // }, -// // Decks: { -// // Deck: { -// // ActiveDeck: 'ActiveDeck', -// // }, -// // }, -// // }, -// } +export const PlayerDeckStates = { + CurrentBPM: 120.00, //type 0 + ExternalMixerVolume: 1, //type 0 + // ExternalScratchWheelTouch: false, //type 2 false? + // Pads: { + // View: '', //type 4 ENUM? 'CUES' + // }, + // Play: false, + PlayState: false, + //PlayStatePath: 'PlayStatePath', //NG + Speed: 1.0, //0.44444535 + // SpeedNeutral: false, + // SpeedOffsetDown: false, + // SpeedOffsetUp: false, + // SpeedRange: '8', //enum + // SpeedState: 1.0, //type 0 signed -0.39999 + SyncMode: 'Off', //enum: Off, Tempo, TempoSync + DeckIsMaster: false, + Track: { + ArtistName: '', + Bleep: false, //type 2 + CuePosition: 156.0, //type 14? + CurrentBPM: 120.0, + CurrentKeyIndex: 0, //type 10? + CurrentLoopInPosition: 156.0, //type 14 + CurrentLoopOutPosition: 156.0, //type 14 + CurrentLoopSizeInBeats: 0, // type 14 + // KeyLock: false, + // LoopEnableState: false, //type 1 + // Loop: { + // QuickLoop1: false, //type 2 + // QuickLoop2: false, + // QuickLoop3: false, + // QuickLoop4: false, + // QuickLoop5: false, + // QuickLoop6: false, + // QuickLoop7: false, + // QuickLoop8: false, + // }, + // PlayPauseLEDState: false, + SampleRate: 44100, //type 14 + SongAnalyzed: false, + SongLoaded: false, + SongName: '', + SoundSwitchGUID: '', //NG must be Analyzed? + TrackBytes: 1, //type 10 + TrackData: false, //type 3??? + TrackLength: 1, //type 10 + TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... + TrackNetworkPath: '', + TrackURI: '', //NG Only streaming? + TrackWasPlayed: false, + } +} -// //const test = new MixerStates() +export const MixerStates = { + Mixer: { + CH1faderPosition: 1.27, //type 0 + CH2faderPosition: 0.0, + CH3faderPosition: 0.0, + CH4faderPosition: 0.0, + CrossfaderPosition: 0.5, //type 0 + //NumberOfChannels: 'NumberOfChannels', //NG + // ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' + // ChannelAssignment2: '', + // ChannelAssignment3: '', + // ChannelAssignment4: '', + }, + // Gui: { + // ViewLayer: { + // LayerB: 'LayerB', + // }, + // Decks: { + // Deck: { + // ActiveDeck: 'ActiveDeck', + // }, + // }, + // }, +} -// let exportObj = { -// player: { -// ...PlayerStates, -// }, -// playerDeck: { -// ...PlayerDeckStates -// }, -// mixer: { -// ...MixerStates, -// } -// } +//const test = new MixerStates() + + + +export const exportObj = { + config: { + + }, + player: { + ...PlayerStates, + }, + playerDeck: { + ...PlayerDeckStates + }, + mixer: { + ...MixerStates, + } +} // console.log(JSON.stringify(exportObj)); From 775f35b805f13da81e38f5ca97e6a951e3d705cc Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 21 Mar 2023 10:37:54 -0400 Subject: [PATCH 065/146] Some fixes --- .gitignore | 1 + Databases/Databases.ts | 61 +++++++++---------- Databases/DbConnection.ts | 27 +++++---- StageLinq/index.ts | 12 ++-- cli/index.ts | 124 ++++++++++++++++++++++++++++++++------ network/Discovery.ts | 8 ++- services/BeatInfo.ts | 61 +++++++++++-------- services/FileTransfer.ts | 27 +++++++-- services/Service.ts | 4 +- services/StateMap.ts | 50 ++++++++------- 10 files changed, 250 insertions(+), 125 deletions(-) diff --git a/.gitignore b/.gitignore index d039fcf..9827b2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /localdb /dist +.clinic/ # Logs logs diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 5d1b461..94e323b 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -5,13 +5,14 @@ import * as fs from 'fs'; import { StageLinq } from '../StageLinq'; import { DbConnection } from './DbConnection'; import { Source } from '../types'; +import { FileTransferProgress } from '../services'; export declare interface Databases { - on(event: 'dbNewSource', listener: ( source: Source) => void): this; - on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; + //on(event: 'dbNewSource', listener: ( source: Source) => void): this; + on(event: 'dbDownloaded', listener: (source: Source) => void): this; on(event: 'dbDownloading', listener: (sourceName: string, dbPath: string) => void): this; - on(event: 'dbProgress', listener: (sourceName: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; + on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; } export class Databases extends EventEmitter { @@ -26,44 +27,38 @@ export class Databases extends EventEmitter { * Download databases from this network source. */ - async downloadDb(sourceName: string) { + async downloadDb(source: Source) { - Logger.debug(`downloadDb request for ${sourceName}`); + Logger.debug(`downloadDb request for ${source.name}`); - const source = this.parent.getSource(sourceName); + //const source = this.parent.getSource(sourceName); - let thisTxid: number = 0 + //let thisTxid: number = 0 const dbPath = getTempFilePath(`${source.deviceId.toString()}/${source.name}/m.db`); Logger.info(`Reading database ${source.deviceId.toString()}/${source.name}`); - this.emit('dbDownloading', source.name, dbPath); - - source.service.on('fileTransferProgress', (txid, progress) => { - if (thisTxid === txid) { - this.emit('dbProgress', source.name, progress.total, progress.bytesDownloaded, progress.percentComplete); - //Logger.debug('dbProgress', deviceId, progress.total, progress.bytesDownloaded, progress.percentComplete); - } else { - //console.warn(txid, thisTxid) - } - }); + //this.emit('dbDownloading', source.name, dbPath); - source.database.local = { - path: dbPath, - }; - source.database.connection = new DbConnection(dbPath) - - // Save database to a file - thisTxid = source.service.txid; - const file = await source.service.getFile(source.database.location, source.service.socket); - Logger.info(`Saving ${source.deviceId.toString()}/${sourceName} to ${dbPath}`); - fs.writeFileSync(dbPath, Buffer.from(file)); - - this.parent.setSource(source); - Logger.info(`Downloaded ${source.deviceId.toString()}/${sourceName} to ${dbPath}`); - this.emit('dbDownloaded', source.deviceId.toString(), dbPath); - this.emit('dbNewSource', source) -} + + source.database.local = { + path: dbPath, + }; + source.database.connection = new DbConnection(dbPath) + + // Save database to a file + //thisTxid = source.service.txid; + const file = await source.service.getFile(source.database.location, source.service.socket); + Logger.info(`Saving ${source.deviceId.toString()}/${source.name} to ${dbPath}`); + fs.writeFileSync(dbPath, Buffer.from(file)); + + source.database.connection = new DbConnection(dbPath); + + this.parent.setSource(source); + Logger.info(`Downloaded ${source.deviceId.toString()}/${source.name} to ${dbPath}`); + this.emit('dbDownloaded', source); + + } getDbPath(dbSourceName?: string) { const source = this.parent.getSource(dbSourceName); diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 2fad160..944008b 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -1,5 +1,6 @@ import Database = require('better-sqlite3'); import { Track } from '../types'; +import { Logger } from '../LogEmitter'; import { inflate as Inflate } from 'zlib' export class DbConnection { @@ -9,7 +10,7 @@ export class DbConnection { constructor(dbPath: string) { this.dbPath = dbPath; - console.debug(`Opening ${this.dbPath}`); + Logger.debug(`Opening ${this.dbPath}`); this.db = new Database(this.dbPath); } @@ -21,7 +22,7 @@ export class DbConnection { * @returns */ querySource(query: string, ...params: any[]): T[] { - console.debug(`Querying ${this.dbPath}: ${query} (${params.join(', ')})`); + Logger.debug(`Querying ${this.dbPath}: ${query} (${params.join(', ')})`); const result = this.db.prepare(query); return result.all(params); } @@ -45,23 +46,27 @@ export class DbConnection { * @param trackPath Path of track on the source's filesystem. * @returns */ - async getTrackInfo(trackPath: string): Promise { + async getTrackInfo(_trackPath: string): Promise { let result: Track[]; - if (/streaming:\/\//.test(trackPath)) { - result = this.querySource('SELECT * FROM Track WHERE uri = (?) LIMIT 1', trackPath); - } else { + + //console.dir(_trackPath.split('/')) + const trackPath = _trackPath.split('/').slice(5, _trackPath.length).join('/') + //console.log(trackPath) + //if (/streaming:\/\//.test(trackPath)) { + // result = this.querySource('SELECT * FROM Track WHERE uri = (?) LIMIT 1', trackPath); + //} else { result = this.querySource('SELECT * FROM Track WHERE path = (?) LIMIT 1', trackPath); - } + //} if (!result) throw new Error(`Could not find track: ${trackPath} in database.`); - result[0].trackData = await this.inflate(result[0].trackData); - result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); - result[0].beatData = await this.inflate(result[0].beatData); + result[0].trackData = await this.inflate(result[0].trackData); + result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); + result[0].beatData = await this.inflate(result[0].beatData); return result[0]; } close() { - console.debug(`Closing ${this.dbPath}`); + Logger.debug(`Closing ${this.dbPath}`); this.db.close(); } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 006987c..e7cca50 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -170,13 +170,13 @@ export class StageLinq extends EventEmitter { assert(service); await service.isAvailable(); - let thisTxid = service.txid; + // let thisTxid = service.txid; - service.on('fileTransferProgress', (txid, progress) => { - if (thisTxid === txid) { - this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); - } - }); + // service.on('fileTransferProgress', (txid, progress) => { + // if (thisTxid === txid) { + // this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); + // } + // }); try { const file = await service.getFile(path,service.socket); diff --git a/cli/index.ts b/cli/index.ts index 59b1144..a58c2b8 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -2,8 +2,9 @@ import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source} import * as Services from '../services' import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; - - +import * as fs from 'fs'; +import * as os from 'os'; +import * as Path from 'path'; require('console-stamp')(console, { format: ':date(HH:MM:ss) :label', @@ -24,25 +25,43 @@ function progressBar(size: number, bytes: number, total: number): string { return `[${progressArrary.join('')}]` } +async function getTrackInfo(stageLinq: StageLinq, sourceName: string, trackName: string) { + while (!stageLinq.hasSource(sourceName)) { + await sleep(250); + } + try { + const _source = stageLinq.getSource(sourceName); + //const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) + const connection = _source.database.connection; + const result = await connection.getTrackInfo(trackName); + //connection.close(); + console.log('Database entry:', result); + return result; + } catch(e) { + console.error(e); + } +} async function downloadFile(stageLinq: StageLinq, sourceName: string, path: string, dest?: string) { - // - while (!source.has(sourceName)) { + while (!stageLinq.hasSource(sourceName)) { await sleep(250); } - const _source = source.get(sourceName); try { + const _source = stageLinq.getSource(sourceName); const data = await stageLinq.downloadFile(_source, path); if (dest && data) { - //fs.writeFileSync(, Buffer.from(data)); - //console.log(`Downloaded ${status.trackPathAbsolute} to ${dest}`); + const filePath = `${dest}/${path.split('/').pop()}` + + fs.writeFileSync(filePath, Buffer.from(data)); + console.log(`Downloaded ${path} to ${dest}`); } } catch(e) { console.error(`Could not download ${path}`); console.error(e) } } + let source: Map = new Map(); @@ -62,22 +81,44 @@ async function main() { const stageLinq = new StageLinq(stageLinqOptions); - stageLinq.on('fileProgress', (file, total, bytes, percent) => { - console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); + stageLinq.logger.on('error', (...args: any) => { + console.error(...args); }); + stageLinq.logger.on('warn', (...args: any) => { + console.warn(...args); + args.push("\n"); + }); + stageLinq.logger.on('info', (...args: any) => { + console.info(...args); + args.push("\n"); + }); + stageLinq.logger.on('log', (...args: any) => { + console.log(...args); + args.push("\n"); + }); + stageLinq.logger.on('debug', (...args: any) => { + console.debug(...args); + args.push("\n"); + }); + //Note: Silly is very verbose! + // stageLinq.logger.on('silly', (...args: any) => { + // console.debug(...args); + // }); + if (stageLinq.stateMap) { - stageLinq.stateMap.on('stateMessage', (data: ServiceMessage) => { + stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { if (data.message.json) { console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); if (data.message.json.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` - //console.log(sourceName, path, data.message.json.string); - downloadFile(stageLinq, sourceName, path); + await getTrackInfo(stageLinq, sourceName, data.message.json.string); + downloadFile(stageLinq, sourceName, path, Path.resolve(os.tmpdir())); + } } }); @@ -88,13 +129,62 @@ async function main() { }); } - + + if (stageLinq.fileTransfer) { + + stageLinq.fileTransfer.on('fileTransferProgress', (file, txid, progress) => { + console.debug(`{${txid}} Reading ${file}: ${progressBar(10,progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); + }); - stageLinq.databases.on('dbNewSource', (_source: Source) => { - console.log(`New Source Available (${_source.name})`); - source.set(_source.name, _source) - }); + stageLinq.fileTransfer.on('dbNewSource', (_source: Source) => { + console.log(`New Source Available (${_source.name})`); + source.set(_source.name, _source) + }); + + stageLinq.databases.on('dbDownloaded', (_source: Source) => { + console.log(`New Downloaded Database (${_source.name})`); + source.set(_source.name, _source); + }); + + } + + if (stageLinq.beatInfo) { + stageLinq.beatInfo.on('newBeatInfoDevice', (beatInfo: Services.BeatInfo) => { + + // User callback function. + // Will be triggered everytime a player's beat counter crosses the resolution threshold + function beatCallback(bd: Services.BeatData, ) { + let deckBeatString = "" + for (let i=0; i { + beatCallback(bd); + }); + }) + + + } + + ///////////////////////////////////////////////////////////////////////// // CLI diff --git a/network/Discovery.ts b/network/Discovery.ts index aa66396..aafca9a 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -31,6 +31,7 @@ export class Discovery { private broadcastAddress: IpAddress; private options: DiscoveryMessageOptions = null; private peers: Map = new Map(); + private deviceId: DeviceId = null private announceTimer: NodeJS.Timer; @@ -38,6 +39,7 @@ export class Discovery { constructor(_parent: InstanceType) { this.parent = _parent; + } public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { @@ -62,6 +64,8 @@ export class Discovery { async init(options:DiscoveryMessageOptions) { this.options = options; + this.deviceId = new DeviceId(options.token) + await this.listenForDevices( (connectionInfo) => { if (!this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { @@ -102,7 +106,7 @@ export class Discovery { const msg = this.writeDiscoveryMessage(discoveryMessage) this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress ); - Logger.debug("Announced myself"); + Logger.debug(`Broadcast Discovery Message ${this.deviceId.toString()} ${discoveryMessage.source}`); this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } @@ -117,7 +121,7 @@ export class Discovery { await this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); await this.socket.close(); - Logger.debug("Unannounced myself"); + Logger.debug("Broadcast Unannounce Message"); } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index eaea1bd..3feabab 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -23,6 +23,12 @@ export interface BeatData { deckCount: number; deck: deckBeatData[]; } + +export declare interface BeatInfoHandler { + on(event: 'newBeatInfoDevice', listener: (device: Service) => void): this; + on(event: 'beatMsg', listener: (beatData: BeatData, device: Service) => void): this; + } + export class BeatInfoHandler extends ServiceHandler { public name: string = 'BeatInfo' @@ -31,31 +37,20 @@ export class BeatInfoHandler extends ServiceHandler { const beatInfo = service as BeatInfo; this.addDevice(deviceId, service); - // Just a counter to test resolution - let beatCalls: number = 0; - // User callback function. - // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: BeatData) { - let deckBeatString = "" - for (let i=0; i{ - beatInfo.startBeatInfo(beatCallback, beatOptions, socket); + beatInfo.server.on("connection", () =>{ + //beatInfo.startBeatInfo(beatCallback, beatOptions, socket); + this.emit('newBeatInfoDevice', beatInfo) }); + beatInfo.on('beatMessage', (message: BeatData) => { + this.emit('beatMsg', message, beatInfo) + }) } } export declare interface BeatInfo { - on(event: 'message', listener: (message: BeatData) => void): this; + on(event: 'beatMessage', listener: (message: BeatData) => void): this; } export class BeatInfo extends Service { @@ -67,11 +62,14 @@ export class BeatInfo extends Service { async init() {} - public async startBeatInfo(beatCB: beatCallback, options: BeatOptions, socket?: Socket) { - this._userBeatCallback = beatCB; + public async startBeatInfo(options: BeatOptions, beatCB?: beatCallback,) { + if (beatCB) { + this._userBeatCallback = beatCB; + } + this._userBeatOptions = options; - this.sendBeatInfoRequest(socket); + this.sendBeatInfoRequest(this.socket); } private async sendBeatInfoRequest(socket: Socket) { @@ -113,14 +111,21 @@ export class BeatInfo extends Service { protected messageHandler(p_data: ServiceMessage): void { if (p_data && p_data.message) { - function resCheck(res: number, prevBeat: number, currentBeat: number ) { - return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) + function resCheck(res: number, prevBeat: number, currentBeat: number ): boolean { + if (res === 0) { + return true + } + return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) || ( Math.floor(prevBeat/res) - Math.floor(currentBeat/res) >= 1) } if (!this._currentBeatData) { this._currentBeatData = p_data.message - this._userBeatCallback(p_data.message); + if (this._userBeatCallback) { + this._userBeatCallback(p_data.message); + } + this.emit('beatMessage', p_data.message) + } let hasUpdated = false; @@ -134,7 +139,11 @@ export class BeatInfo extends Service { } if (hasUpdated) { this._currentBeatData = p_data.message; - this._userBeatCallback(p_data.message); + if (this._userBeatCallback) { + this._userBeatCallback(p_data.message); + } + this.emit('beatMessage', p_data.message) + } } } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index aacdbbc..f030b53 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -9,6 +9,7 @@ import type { ServiceMessage, Source, DeviceId } from '../types'; import { Socket } from 'net'; + const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; @@ -27,7 +28,7 @@ enum MessageId { RequestSources = 0x7d2, } -interface FileTransferProgress { +export interface FileTransferProgress { sizeLeft: number; total: number; bytesDownloaded: number; @@ -35,17 +36,27 @@ interface FileTransferProgress { } export declare interface FileTransfer { - on(event: 'fileTransferProgress', listener: (txId: number, progress: FileTransferProgress) => void): this; - //on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this; + on(event: 'fileTransferProgress', listener: (fileName: string, txId: number, progress: FileTransferProgress) => void): this; + on(event: 'dbNewSource', listener: (source: Source) => void): this; } export class FileTransferHandler extends ServiceHandler { public name: string = "FileTransfer" + + public setupService(service: Service, deviceId: DeviceId) { const fileTransfer = service as FileTransfer; Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.toString()}`); this.addDevice(deviceId, service); + fileTransfer.on('fileTransferProgress', (fileName, txid, progress) => { + this.emit('fileTransferProgress', fileName, txid, progress); + }); + fileTransfer.on('dbNewSource', (source: Source) => { + this.emit('dbNewSource', source); + }); + + } } @@ -281,7 +292,7 @@ export class FileTransfer extends Service { while (this.receivedFile.isEOF() === false) { const bytesDownloaded = total - this.receivedFile.sizeLeft(); const percentComplete = (bytesDownloaded / total) * 100; - this.emit('fileTransferProgress', this.txId,{ + this.emit('fileTransferProgress', p_location.split('/').pop(), this.txId,{ sizeLeft: this.receivedFile.sizeLeft(), total: txinfo.size, bytesDownloaded: bytesDownloaded, @@ -339,10 +350,10 @@ export class FileTransfer extends Service { }, } - + this.emit('dbNewSource', thisSource); this.parent.setSource(thisSource); result.push(thisSource); - this.parent.databases.downloadDb(thisSource.name); + this.parent.databases.downloadDb(thisSource); break; } @@ -351,6 +362,10 @@ export class FileTransfer extends Service { return result; } + + + + /////////////////////////////////////////////////////////////////////////// // Private methods diff --git a/services/Service.ts b/services/Service.ts index 77c5844..265ca04 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -213,7 +213,7 @@ export abstract class Service extends EventEmitter { const message = ctx.read(length); if (!message) { - console.log(message) + Logger.warn(message) } // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); @@ -264,7 +264,7 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { - Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + Logger.silly(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); await server.close(); let serverName = serviceName; diff --git a/services/StateMap.ts b/services/StateMap.ts index 4f8c8c9..97ac719 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -7,7 +7,7 @@ import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; import * as Services from '../services'; - +import { StageLinq } from '../StageLinq'; import * as stagelinqConfig from '../stagelinqConfig.json'; export type Player = typeof stagelinqConfig.player; @@ -73,11 +73,16 @@ export class StateMapHandler extends ServiceHandler { } export class StateMap extends Service { - name: string = "StateMap"; + public name: string = "StateMap"; + public handler: StateMapHandler; async init() { } + constructor(p_parent:InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { + super(p_parent, serviceHandler, deviceId) + this.handler = this._handler as StateMapHandler + } public async subscribe() { const socket = this.socket; @@ -98,11 +103,12 @@ export class StateMap extends Service { for (let i=0; i< thisPeer.device.decks; i++) { playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } - const handler = this._handler as Services.StateMapHandler + + //const handler = this._handler as Services.StateMapHandler for (let state of playerDeckStateValues) { const stateValue = `${this.deviceId.toString()},/${state.split('/').slice(1,3).join("/")}` const newValue = `{${this.deviceId}},${state.split('/').slice(2,3).shift().substring(4,5)}` - handler.deviceTrackRegister.set(stateValue, newValue); + this.handler.deviceTrackRegister.set(stateValue, newValue); await this.subscribeState(state, 0, socket); } @@ -197,29 +203,28 @@ export class StateMap extends Service { return null; } - private deckMessageAdapter(data: ServiceMessage): ServiceMessage { - const handler = this._handler as Services.StateMapHandler - const deckHandlerMsgs = handler.deviceTrackRegister.entries(); - let returnMsg: ServiceMessage = {...data} + // private deckMessageAdapter(data: ServiceMessage): ServiceMessage { + // const handler = this._handler as Services.StateMapHandler + // const deckHandlerMsgs = handler.deviceTrackRegister.entries(); + // let returnMsg: ServiceMessage = {...data} - for (let [oldValue, newValue] of deckHandlerMsgs) { - const oldValueArr = oldValue.split(',') - //const testString = `${this.deviceId.toString()}${data?.message?.name.substring(0,oldValue.length)}` - //console.warn(testString, oldValue) - if (oldValueArr[0] == this.deviceId.toString() && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { - //if (testString == oldValue) { - returnMsg.message.name = `${newValue},${data.message.name.substring(oldValueArr[1].length, data.message.name.length)}` - } - } + // for (let [oldValue, newValue] of deckHandlerMsgs) { + // const oldValueArr = oldValue.split(',') + // //const testString = `${this.deviceId.toString()}${data?.message?.name.substring(0,oldValue.length)}` + // //console.warn(testString, oldValue) + // if (oldValueArr[0] == this.deviceId.toString() && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { + // //if (testString == oldValue) { + // returnMsg.message.name = `${newValue},${data.message.name.substring(oldValueArr[1].length, data.message.name.length)}` + // } + // } - return returnMsg - } + // return returnMsg + // } private mixerAssignmentAdapter(data: ServiceMessage) { - const handler = this._handler as Services.StateMapHandler const keyString = `${this.deviceId.toString()},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; - handler.deviceTrackRegister.set(keyString, valueString); + this.handler.deviceTrackRegister.set(keyString, valueString); } @@ -234,7 +239,8 @@ export class StateMap extends Service { //console.warn(p_data.deviceId.toString(), p_data.socket.localPort, p_data.message.interval, p_data.message.name) //this.emit('stateMessage', this.deckMessageAdapter(p_data)); } else { - this.emit('stateMessage', this.deckMessageAdapter(p_data)); + //this.emit('stateMessage', this.deckMessageAdapter(p_data)); + this.emit('stateMessage', p_data); } if (p_data && p_data.message.json) { From 5fcf0328bfb5e0fea3139642e075cdb9c495f09c Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 21 Mar 2023 23:37:17 -0400 Subject: [PATCH 066/146] Devices & Device Classes --- StageLinq/index.ts | 24 ++----- cli/index.ts | 44 ++++++++---- network/Discovery.ts | 18 ++--- services/BeatInfo.ts | 14 ++-- services/Directory.ts | 55 +++++++++------ services/Service.ts | 23 +++++-- services/TimeSync.ts | 153 ++++++++++++++++++++++++++++------------- services/index.ts | 3 +- types/DeviceId.ts | 8 +++ types/Devices.ts | 154 +++++++++++++++++++----------------------- types/index.ts | 1 + 11 files changed, 293 insertions(+), 204 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index e7cca50..fcad2da 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -6,7 +6,6 @@ import { Databases } from '../Databases'; import * as Services from '../services'; import { Server } from 'net'; import { assert } from 'console'; -//import { sleep } from '../utils/sleep'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -27,11 +26,6 @@ export declare interface StageLinq { on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; - //on(event: 'StateMap', listener: (service: InstanceType ) => void): this; - //on(event: 'stateMap', listener: (service: InstanceType ) => void): this; - - //on(event: 'fileDownloaded', listener: (sourceName: string, dbPath: string) => void): this; - //on(event: 'fileDownloading', listener: (sourceName: string, dbPath: string) => void): this; on(event: 'fileProgress', listener: (path: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; } @@ -52,6 +46,7 @@ export class StageLinq extends EventEmitter { public stateMap: InstanceType = null; public fileTransfer: InstanceType = null; public beatInfo: InstanceType = null; + public timeSync: InstanceType = null; public logger: Logger = Logger.instance; public discovery: Discovery = new Discovery(this); @@ -80,6 +75,12 @@ export class StageLinq extends EventEmitter { this.beatInfo = beatInfo; break; } + case "TimeSynchronization": { + const timeSync = new Services.TimeSynchronizationHandler(this, service); + this.services[service] = timeSync; + this.timeSync = timeSync; + break; + } default: break; } @@ -163,20 +164,9 @@ export class StageLinq extends EventEmitter { async downloadFile(source: Source, path: string): Promise { - - - const service = source.service; assert(service); await service.isAvailable(); - - // let thisTxid = service.txid; - - // service.on('fileTransferProgress', (txid, progress) => { - // if (thisTxid === txid) { - // this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); - // } - // }); try { const file = await service.getFile(path,service.socket); diff --git a/cli/index.ts b/cli/index.ts index a58c2b8..ebdaee6 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -76,6 +76,7 @@ async function main() { ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, + //ServiceList.TimeSynchronization, ], } @@ -96,16 +97,23 @@ async function main() { console.log(...args); args.push("\n"); }); - stageLinq.logger.on('debug', (...args: any) => { - console.debug(...args); - args.push("\n"); - }); + // stageLinq.logger.on('debug', (...args: any) => { + // console.debug(...args); + // args.push("\n"); + // }); //Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); // }); + stageLinq.devices.on('newDevice', (device) =>{ + console.log(`DEVICES New Device ${device.deviceId.toString()}`) + }); + + stageLinq.devices.on('newService', (device, service) =>{ + console.log(`DEVICES New ${service.name} Service on ${device.deviceId.toString()}`) + }); if (stageLinq.stateMap) { @@ -124,7 +132,7 @@ async function main() { }); stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { - console.log(`Subscribing to States on ${service.deviceId.toString()}`); + console.log(`Subscribing to States on ${service.deviceId.string}`); service.subscribe(); }); @@ -154,12 +162,16 @@ async function main() { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: Services.BeatData, ) { + function beatCallback(bd: ServiceMessage, ) { let deckBeatString = "" - for (let i=0; i { - beatCallback(bd); - }); + // beatInfo.startBeatInfo(beatOptions); + // stageLinq.beatInfo.on('beatMsg', (bd) => { + // if (bd.message) { + // beatCallback(bd); + // } + // }); }) diff --git a/network/Discovery.ts b/network/Discovery.ts index aafca9a..c9efa12 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -66,21 +66,23 @@ export class Discovery { this.options = options; this.deviceId = new DeviceId(options.token) - await this.listenForDevices( (connectionInfo) => { + await this.listenForDevices( (connectionInfo: ConnectionInfo) => { - if (!this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - const deviceId = new DeviceId(connectionInfo.token) - this.peers.set(deviceId.toString(), connectionInfo); - this.parent.devices.setInfo(deviceId, connectionInfo); - Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${deviceId.toString()}`) + if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { + //const deviceId = new DeviceId(connectionInfo.token) + + const device = this.parent.devices.addDevice(connectionInfo); + this.peers.set(device.deviceId.toString(), connectionInfo); + Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.toString()}`) } else { this.hasLooped = true; } - if (this.parent.devices.hasDeviceIdString(deviceIdFromBuff(connectionInfo.token)) && this.parent.devices.getDeviceInfoFromString(deviceIdFromBuff(connectionInfo.token)).port !== connectionInfo.port) { + if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.device(connectionInfo.token).info.port !== connectionInfo.port) { const deviceId = new DeviceId(connectionInfo.token) + this.peers.set(deviceId.toString(), connectionInfo); - this.parent.devices.setInfo(deviceId, connectionInfo); + this.parent.devices.device(deviceId.toString()).info = connectionInfo; Logger.debug(`Updated port for From ${deviceId.toString()}`) } }); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 3feabab..e8b6278 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -6,7 +6,7 @@ import { Logger } from '../LogEmitter'; import type { ServiceMessage, DeviceId } from '../types'; import { Socket } from 'net'; -type beatCallback = (n: BeatData) => void; +type beatCallback = (n: ServiceMessage) => void; type BeatOptions = { everyNBeats: number, @@ -26,7 +26,7 @@ export interface BeatData { export declare interface BeatInfoHandler { on(event: 'newBeatInfoDevice', listener: (device: Service) => void): this; - on(event: 'beatMsg', listener: (beatData: BeatData, device: Service) => void): this; + on(event: 'beatMsg', listener: (beatData: ServiceMessage, device: Service) => void): this; } export class BeatInfoHandler extends ServiceHandler { @@ -43,14 +43,14 @@ export class BeatInfoHandler extends ServiceHandler { //beatInfo.startBeatInfo(beatCallback, beatOptions, socket); this.emit('newBeatInfoDevice', beatInfo) }); - beatInfo.on('beatMessage', (message: BeatData) => { + beatInfo.on('beatMessage', (message: ServiceMessage) => { this.emit('beatMsg', message, beatInfo) }) } } export declare interface BeatInfo { - on(event: 'beatMessage', listener: (message: BeatData) => void): this; + on(event: 'beatMessage', listener: (message: ServiceMessage) => void): this; } export class BeatInfo extends Service { @@ -122,9 +122,9 @@ export class BeatInfo extends Service { if (!this._currentBeatData) { this._currentBeatData = p_data.message if (this._userBeatCallback) { - this._userBeatCallback(p_data.message); + this._userBeatCallback(p_data); } - this.emit('beatMessage', p_data.message) + this.emit('beatMessage', p_data) } @@ -140,7 +140,7 @@ export class BeatInfo extends Service { if (hasUpdated) { this._currentBeatData = p_data.message; if (this._userBeatCallback) { - this._userBeatCallback(p_data.message); + this._userBeatCallback(p_data); } this.emit('beatMessage', p_data.message) diff --git a/services/Directory.ts b/services/Directory.ts index 8c4256e..6c2a0af 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,7 +1,7 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId } from '../types'; +import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId, deviceTypes } from '../types'; import { sleep } from '../utils/sleep'; import { Socket } from 'net'; import { strict as assert } from 'assert'; @@ -9,6 +9,7 @@ import { WriteContext } from '../utils/WriteContext'; import { FileTransfer } from './FileTransfer'; import { StateMap } from './StateMap'; import { BeatInfo } from './BeatInfo'; +import { TimeSynchronization } from './TimeSync'; export interface DirectoryData { deviceId: string; @@ -105,31 +106,43 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); + if (!this.parent.devices.hasDevice(deviceId.toString())) { + await sleep(250); + } let services: InstanceType[] = [] for (const serviceName of Object.keys(this.parent.services)) { //for (const serviceName of this.parent.serviceList) { - switch (serviceName) { - case 'FileTransfer': { - //const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); - const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); - services.push(fileTransfer); - break; - } - case 'StateMap': { - const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); - services.push(stateMap); - break; - } - case 'BeatInfo': { - //const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); - const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); - services.push(beatInfo); - break; + const device = this.parent.devices.device(deviceId.toString()); + if (device && !!deviceTypes[device.info?.software?.name]) { + switch (serviceName) { + case 'FileTransfer': { + //const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); + const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); + services.push(fileTransfer); + break; + } + case 'StateMap': { + const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); + services.push(stateMap); + break; + } + case 'BeatInfo': { + //const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); + const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); + services.push(beatInfo); + break; + } + case 'TimeSynchronization': { + const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); + services.push(timeSync); + break; + } + default: + break; } - default: - break; } + } //this.parent.services[deviceId.toString()] = new Map(); @@ -144,7 +157,7 @@ export class Directory extends Service { ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.silly(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); + Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); } diff --git a/services/Service.ts b/services/Service.ts index 265ca04..784a94f 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,6 +1,6 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, DeviceId } from '../types'; +import { MessageId, MESSAGE_TIMEOUT, DeviceId, Device } from '../types'; import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -46,16 +46,20 @@ export abstract class ServiceHandler extends EventEmitter { this._devices.set(deviceId.toString(), service) } - async deleteDevice(deviceId: DeviceId) { + deleteDevice(deviceId: DeviceId) { this._devices.delete(deviceId.toString()) } async startServiceListener>(ctor: { - new (_parent: InstanceType, _serviceHandler?: InstanceType, _deviceId?: DeviceId): T; + new (_parent: InstanceType, _serviceHandler?: any, _deviceId?: DeviceId): T; }, parent?: InstanceType, deviceId?: DeviceId): Promise { const service = new ctor(parent, this, deviceId); await service.listen(); + if (deviceId) { + this.parent.devices.addService(deviceId, service) + } + this.setupService(service, deviceId) let serverName = `${ctor.name}`; @@ -76,7 +80,9 @@ export abstract class ServiceHandler extends EventEmitter { export abstract class Service extends EventEmitter { public readonly name: string = "Service"; public deviceId: DeviceId = null; + //public type: T; protected _deviceId: DeviceId = null; + public device: Device; protected isBufferedService: boolean = true; protected parent: InstanceType; @@ -95,8 +101,10 @@ export abstract class Service extends EventEmitter { constructor(p_parent:InstanceType, serviceHandler: InstanceType , deviceId?: DeviceId) { super(); this.parent = p_parent; + //this.type = Service; this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; + this.device = (deviceId ? this.parent.devices.device(deviceId) : null); } async createServer(): Promise { @@ -155,6 +163,7 @@ export abstract class Service extends EventEmitter { private async dataHandler(p_data: Buffer, socket: Socket) { + //append queue to current data let buffer: Buffer = null; if ( this.messageBuffer && this.messageBuffer.length > 0) { @@ -168,6 +177,7 @@ export abstract class Service extends EventEmitter { const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); + // Notes on isBufferedService // some simple services (Directory, TimeSync, others..) // might receive data the is hard to parse with the buffer. @@ -196,7 +206,9 @@ export abstract class Service extends EventEmitter { ctx.readUInt16(); //read port, though we don't need it Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.toString()}`); - + if (this.device) { + this.device.parent.emit('newService', this.device, this) + } const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); this.messageHandler(parsedData); } @@ -264,7 +276,7 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { - Logger.silly(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); await server.close(); let serverName = serviceName; @@ -275,6 +287,7 @@ export abstract class Service extends EventEmitter { assert(!handler.hasDevice(deviceId)); const service = parent.services[serviceName] + parent.devices.deleteService(deviceId, serviceName); await service.deleteDevice(deviceId); assert(!service.hasDevice(deviceId)); } diff --git a/services/TimeSync.ts b/services/TimeSync.ts index e76d544..d8a4edd 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -1,11 +1,14 @@ -/* + import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service } from './Service'; +import { Service, ServiceHandler } from './Service'; +import * as Services from '../services'; //import { Logger } from '../LogEmitter'; -import { ServiceMessage, Tokens, deviceIdFromBuff } from '../types'; +import { ServiceMessage, Tokens, DeviceId } from '../types'; import { Logger } from '../LogEmitter'; +import { Socket } from 'net'; +const { performance } = require('perf_hooks'); export interface TimeSyncData { @@ -13,24 +16,42 @@ export interface TimeSyncData { timestamp: bigint, } -export declare interface TimeSynchronization { - on(event: 'message', listener: (message: TimeSyncData) => void): this; - } +// export declare interface TimeSync { +// //on(event: 'message', listener: (message: TimeSyncData) => void): this; +// } + +export class TimeSynchronizationHandler extends ServiceHandler { + public name: string = 'TimeSync' + + public setupService(service: TimeSynchronization, deviceId: DeviceId) { + console.log(`Setting up ${service.name} for ${deviceId.toString()}`); + + service.on('newDevice', ( _service: InstanceType) => { + Logger.debug(`New TimeSync Device ${service.deviceId.toString()}`) + //this.emit('newDevice', service); + _service.sendTimeSyncRequest(); + }) + + } +} export class TimeSynchronization extends Service { - private _hasReplied: boolean = false; + public name:string = "TimeSynchronization" + protected isBufferedService: boolean = false; + private localTime: bigint; + private remoteTime: bigint; + private avgTimeArray: bigint[] = []; + //private queryTimer: NodeJS.Timer; + - async init() { - - } public async sendTimeSyncRequest() { const ctx = new WriteContext(); ctx.write(new Uint8Array([0x0,0x0,0x0,0x0])); - ctx.write(Tokens.SoundSwitch); + ctx.write(Tokens.Listen); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); - await this.write(ctx); + await this.write(ctx, this.socket); } private timeSyncMsgHelper(msgId: number, msgs: bigint[]): Buffer { @@ -49,47 +70,58 @@ export class TimeSynchronization extends Service { ctx.write(message); return ctx.getBuffer() } + private getTimeStamp(): bigint { - const timestamp = Date.now(); - return (BigInt(timestamp) * 1000000n) + //const timestamp = Math.floor(performance.now() * 1000000); //Date.now(); + return (BigInt(Math.floor(performance.now()))) } - private async sendTimeSyncReply(interval: bigint, timeReceived: bigint): Promise { - // const currentTime = Date.now(); - const buffMsg = this.timeSyncMsgHelper(2,[interval,timeReceived]); - Logger.debug(buffMsg); - await this.connection.write(buffMsg); - //const buffMsg2 = this.timeSyncMsgHelper(1,[this.getTimeStamp()]); - //await this.connection.write(buffMsg2); - //assert(written === 4); - - - //let result = await this.write(ctx); - - //Logger.debug(ctx.getBuffer()); - //assert(result === ctx.tell()) - }; + private sendTimeSyncQuery(localTime: bigint, remoteTime: bigint) { + this.localTime = localTime; + //this.currrentTime = currentTime; + const buffMsg = this.timeSyncMsgHelper(1,[this.localTime]); + const ctx = new WriteContext() + ctx.write(buffMsg) + //Logger.debug(buffMsg); + this.remoteTime = remoteTime; + this.write(ctx, this.socket); + }; + + // private async sendTimeSyncReply(interval: bigint, timeReceived: bigint): Promise { + // const buffMsg = this.timeSyncMsgHelper(2,[interval,timeReceived]); + // const ctx = new WriteContext() + // ctx.write(buffMsg) + // await this.write(ctx, this.socket); + // }; protected parseData(p_ctx: ReadContext): ServiceMessage { const timestamp = this.getTimeStamp() + //console.log(performance.now()) + //console.log(p_ctx.readRemainingAsNewBuffer()) + //p_ctx.rewind(); const size = p_ctx.readUInt32(); + // console.log(timestamp, size) + if (size === 0) { const token = p_ctx.read(16); + const deviceId = new DeviceId(token) const svcName = p_ctx.readNetworkStringUTF16(); const svcPort = p_ctx.readUInt16(); - console.log(deviceIdFromBuff(token), svcName, svcPort) + console.log(deviceId.toString(), svcName, svcPort) } else { const id = p_ctx.readUInt32(); const msgs: bigint[] = [] while (p_ctx.sizeLeft()) { msgs.push(p_ctx.readUInt64()) }; - console.log(size,id,msgs) + //console.log(this.deviceId.toString(), size,id,msgs) return { id: id, + deviceId: this.deviceId, + socket: this.socket, message: { msgs: msgs, timestamp: timestamp, @@ -98,36 +130,63 @@ export class TimeSynchronization extends Service { } } + private timeAvg(time: bigint) { + //const timeInt = Number(time); + if (this.avgTimeArray.length > 100) { + this.avgTimeArray.shift(); + this.avgTimeArray.push(time); + const sum = this.avgTimeArray.reduce((a, b) => a + b, 0n); + const avg = (sum / BigInt(this.avgTimeArray.length)) || 0; + console.log(`${this.deviceId.toString()} Average time ${Number(avg)}`) + } else { + this.avgTimeArray.push(time); + //console.log(this.avgTimeArray.length) + } + } + protected messageHandler(msg: ServiceMessage): void { - console.log(msg) + //console.log(msg.message) + if (!msg?.message) { + return + } + if (msg?.deviceId && msg?.deviceId.toString() != "4be14112-5ead-4848-a07d-b37ca8a7220e") { + // return + } // if (!this._hasReplied) { - // this.sendTimeSyncReply(msg.message.msgs.shift(), msg.message.timestamp) + //this.sendTimeSyncReply(msg.message.msgs.shift(), msg.message.timestamp) // this._hasReplied = true; // } - + //console.log(performance.now()) switch (msg.id) { case 1: - //Logger.debug('Sending Reply'); - //try { - // this.sendTimeSyncReply(msg.message.msgs.shift()) - //} catch(err) { - // Logger.error(err) - // } + //console.log(msg.deviceId.toString(), msg.message.msgs[0]) + + //this.remoteTime = msg.message.msgs.shift(); + this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); + break; case 2: - //Logger.debug('Sending Reply'); - //try { - // this.sendTimeSyncReply(msg.message.msgs.shift()) - //} catch(err) { - // Logger.error(err) - //} + console.log(msg.message) + const localClock = msg.message.timestamp - msg.message.msgs[0] + const remoteClock = msg.message.msgs[1] - this.remoteTime + + console.log(msg.deviceId.toString(), localClock, remoteClock, (localClock - remoteClock)) + this.timeAvg(remoteClock) + break; } } + + protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + assert((socket)); + Logger.silly(`${messageId} to ${serviceName} from ${deviceId.toString()}`) + this.emit('newDevice', this) + return + } } -*/ \ No newline at end of file + diff --git a/services/index.ts b/services/index.ts index f3db61a..11da13e 100644 --- a/services/index.ts +++ b/services/index.ts @@ -2,4 +2,5 @@ export * from './FileTransfer'; export * from './Service'; export * from './StateMap'; export * from './Directory'; -export * from './BeatInfo'; \ No newline at end of file +export * from './BeatInfo'; +export * from './TimeSync'; \ No newline at end of file diff --git a/types/DeviceId.ts b/types/DeviceId.ts index 9034bc8..52ddee5 100644 --- a/types/DeviceId.ts +++ b/types/DeviceId.ts @@ -28,6 +28,14 @@ export class DeviceId { if (!reg.test(this.m_str)) throw new InvalidDeviceIdError(); } + get string() { + return this.m_str + } + + get buffer() { + return this.m_array + } + toString() { return this.m_str; } diff --git a/types/Devices.ts b/types/Devices.ts index 9d20c07..39f8e93 100644 --- a/types/Devices.ts +++ b/types/Devices.ts @@ -1,105 +1,93 @@ +import { EventEmitter } from 'events'; import * as Services from '../services'; -//import { Socket } from 'net'; -import { ConnectionInfo, DeviceId, IpAddressPort, } from '../types'; -//import { Logger } from '../LogEmitter'; -import { sleep } from '../utils'; +import { ConnectionInfo, DeviceId } from '../types'; - -//type DeviceService = Map>; - -interface ServicesList { - [key: string]: InstanceType; -} - -//type DeviceSocket = Map; - -type IpAddressPortDeviceId = Map; - -export interface IDevice { - [key: string]: { - info: ConnectionInfo; - services?: ServicesList; - +export declare interface Devices { + on(event: 'newDevice', listener: (device: Device) => void): this; + on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; } -} +export class Devices extends EventEmitter { + private _devices: Map = new Map(); -export class Devices { - private _devices: IDevice = {}; - public devices: IDevice = {}; - //private devices: Map = new Map(); + getDevices() { + return [...this._devices.entries()] + } - getInfo(deviceId: DeviceId) { - return this._devices[deviceId.toString()].info; - } + addDevice(info: ConnectionInfo): Device { + const device = new Device(info, this); + this._devices.set(device.deviceId.toString(), device) + this.emit('newDevice', device) + return device + } - setInfo(deviceId: DeviceId, info: ConnectionInfo) { - if (!this._devices[deviceId.toString()]) { - this._devices[deviceId.toString()] = { - info: info - }; - } else { - this._devices[deviceId.toString()].info = info; + device(deviceId: string | Uint8Array | DeviceId): Device { + if (typeof deviceId == "string") { + return this._devices.get(deviceId) } + if (deviceId instanceof DeviceId) { + const _deviceId = deviceId as DeviceId + return this._devices.get(_deviceId.toString()) + } + if (typeof deviceId == "object") { + const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string + return this._devices.get(deviceString); + } + } - // if (!this.devices.has(deviceId)) { - // this.devices.set(deviceId, new Device(info)) - // } else { - // //this.devices.set() - // } - - } - - createDevice(deviceId: DeviceId, info: ConnectionInfo) { - this.devices[deviceId.toString()].info = info; - } - - getService(deviceId: DeviceId, serviceName: string) { - return this._devices[deviceId.toString()].services[serviceName]; - } - - setService(deviceId: DeviceId, serviceName: string, service: InstanceType) { - this._devices[deviceId.toString()].services[serviceName] = service; - } - - // getSocket(deviceId: DeviceId, serviceName: string) { - // return this._devices[deviceId.toString()].socket.get(serviceName); - // } - // setSocket(deviceId: DeviceId, serviceName: string, socket: Socket) { - // this._devices[deviceId.toString()].socket.set(serviceName, socket); - // } - - hasDeviceId(deviceId: DeviceId) { - return !!this._devices[deviceId.toString()] + hasDevice(deviceId: Uint8Array | string | DeviceId) { + if (typeof deviceId == "string") { + return this._devices.has(deviceId) + } + if (deviceId instanceof DeviceId) { + const _deviceId = deviceId as DeviceId + return this._devices.has(_deviceId.toString()) + } + if (typeof deviceId == "object"){ + return this._devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string) + } } - hasDeviceIdString(deviceIdString: string) { - return !!this._devices[deviceIdString] + addService(deviceId: DeviceId, service: InstanceType ) { + const device = this.device(deviceId.toString()) + device.addService(service) } - getDeviceInfoFromString(deviceIdString: string): ConnectionInfo { - return this._devices[deviceIdString].info + deleteService(deviceId: DeviceId, serviceName: string) { + const device = this.device(deviceId.toString()); + device.deleteService(serviceName) } - async getDeviceIdFromIpAddressPort(ipAddressPort: IpAddressPort): Promise { - //while (this.devices[key]) - let devices: IpAddressPortDeviceId = new Map(); +} - while (!devices.has(ipAddressPort)) { - const keys = Object.keys(this._devices); - for (const key of keys) { - if (this._devices[key].info) { - //Logger.warn(`found ${key}`) - devices.set(ipAddressPort, new DeviceId(key)) - } - } - await sleep(250); - } - - return devices.get(ipAddressPort) +export class Device extends EventEmitter { + readonly parent: Devices; + readonly deviceId: DeviceId; + info: ConnectionInfo; + private services: Map> = new Map(); + + constructor(info: ConnectionInfo, parent: Devices) { + super(); + this.deviceId = new DeviceId(info.token); + this.parent = parent; + this.info = info; + } + addService(service: InstanceType) { + this.services.set(service.name, service) } + deleteService(serviceName: string) { + this.services.delete(serviceName) + } + + } \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index d46e5e6..f0e0306 100644 --- a/types/index.ts +++ b/types/index.ts @@ -91,6 +91,7 @@ export enum ServiceList { StateMap = "StateMap", FileTransfer = "FileTransfer", BeatInfo = "BeatInfo", + TimeSynchronization = "TimeSynchronization", Directory = "Directory", } From ab5738db594a4b02720a91460d607590902c517f Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 21 Mar 2023 23:41:04 -0400 Subject: [PATCH 067/146] add getter for DeviceId --- Databases/Databases.ts | 8 ++++---- cli/index.ts | 10 +++++----- cli/old.ts | 4 ++-- devices/Player.ts | 6 +++--- network/Discovery.ts | 18 +++++++++--------- services/BeatInfo.ts | 4 ++-- services/Directory.ts | 14 +++++++------- services/FileTransfer.ts | 10 +++++----- services/Service.ts | 18 +++++++++--------- services/StateMap.ts | 20 ++++++++++---------- services/TimeSync.ts | 18 +++++++++--------- types/Devices.ts | 10 +++++----- 12 files changed, 70 insertions(+), 70 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 94e323b..f4836a7 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -35,9 +35,9 @@ export class Databases extends EventEmitter { //let thisTxid: number = 0 - const dbPath = getTempFilePath(`${source.deviceId.toString()}/${source.name}/m.db`); + const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); - Logger.info(`Reading database ${source.deviceId.toString()}/${source.name}`); + Logger.info(`Reading database ${source.deviceId.string}/${source.name}`); //this.emit('dbDownloading', source.name, dbPath); @@ -49,13 +49,13 @@ export class Databases extends EventEmitter { // Save database to a file //thisTxid = source.service.txid; const file = await source.service.getFile(source.database.location, source.service.socket); - Logger.info(`Saving ${source.deviceId.toString()}/${source.name} to ${dbPath}`); + Logger.info(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); source.database.connection = new DbConnection(dbPath); this.parent.setSource(source); - Logger.info(`Downloaded ${source.deviceId.toString()}/${source.name} to ${dbPath}`); + Logger.info(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); } diff --git a/cli/index.ts b/cli/index.ts index ebdaee6..4df8895 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -108,11 +108,11 @@ async function main() { stageLinq.devices.on('newDevice', (device) =>{ - console.log(`DEVICES New Device ${device.deviceId.toString()}`) + console.log(`DEVICES New Device ${device.deviceId.string}`) }); stageLinq.devices.on('newService', (device, service) =>{ - console.log(`DEVICES New ${service.name} Service on ${device.deviceId.toString()}`) + console.log(`DEVICES New ${service.name} Service on ${device.deviceId.string}`) }); if (stageLinq.stateMap) { @@ -168,10 +168,10 @@ async function main() { deckBeatString += `Deck: ${i+1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` } - //if (beatInfo.deviceId.toString() == "4be14112-5ead-4848-a07d-b37ca8a7220e") { - console.log(`${bd.deviceId.toString()} clock: ${bd.message.clock} ${deckBeatString}`); + //if (beatInfo.deviceId.string == "4be14112-5ead-4848-a07d-b37ca8a7220e") { + console.log(`${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); //} - //console.log(`BeatInfo: ${beatInfo.deviceId.toString()} ${deckBeatString}`); + //console.log(`BeatInfo: ${beatInfo.deviceId.string} ${deckBeatString}`); } // User Options diff --git a/cli/old.ts b/cli/old.ts index 989a999..8b53d59 100644 --- a/cli/old.ts +++ b/cli/old.ts @@ -194,7 +194,7 @@ // // Fires when StageLinq receives messages from a device. // stageLinq.stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType ) => { -// console.log(`Subscribing to States on ${deviceId.toString()}`); +// console.log(`Subscribing to States on ${deviceId.string}`); // const player = new Player({ // stateMap: service, @@ -241,7 +241,7 @@ // // const msg = data.message.json // // ? JSON.stringify(data.message.json) // // : data.message.interval; -// // console.debug(`${data.deviceId.toString()} ` + +// // console.debug(`${data.deviceId.string} ` + // // `${data.message.name} => ${msg}`); // // } diff --git a/devices/Player.ts b/devices/Player.ts index 082abde..ac8094f 100644 --- a/devices/Player.ts +++ b/devices/Player.ts @@ -92,7 +92,7 @@ export class Player extends EventEmitter { const json = message.json as any; //check if message is for this Player - if(data.deviceId.toString() !== this.deviceId.toString()) return; + if(data.deviceId.string !== this.deviceId.string) return; if (/Client\/Preferences\/Player$/.test(name)) { this.player = parseInt(json.string); @@ -181,7 +181,7 @@ export class Player extends EventEmitter { port: this.port, masterTempo: this.masterTempo, masterStatus: this.masterStatus, - deviceId: `net://${this.deviceId.toString()}`, + deviceId: `net://${this.deviceId.string}`, ...result }; @@ -196,7 +196,7 @@ export class Player extends EventEmitter { // Tracks from streaming sources won't be in the database. currentState.dbSourceName = ''; } else { - currentState.dbSourceName = `net://${this.deviceId.toString()}/${currentState.source}`; + currentState.dbSourceName = `net://${this.deviceId.string}/${currentState.source}`; } // If a song is loaded and we have a location emit the trackLoaded event. diff --git a/network/Discovery.ts b/network/Discovery.ts index c9efa12..ae24b74 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -43,15 +43,15 @@ export class Discovery { } public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { - return this.peers.get(deviceId.toString()); + return this.peers.get(deviceId.string); } public async setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { - this.peers.set(deviceId.toString(), connectionInfo); + this.peers.set(deviceId.string, connectionInfo); } public hasConnectionInfo(deviceId: DeviceId): Boolean { - return this.peers.has(deviceId.toString()); + return this.peers.has(deviceId.string); } public getDeviceList(): string[] { @@ -72,8 +72,8 @@ export class Discovery { //const deviceId = new DeviceId(connectionInfo.token) const device = this.parent.devices.addDevice(connectionInfo); - this.peers.set(device.deviceId.toString(), connectionInfo); - Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.toString()}`) + this.peers.set(device.deviceId.string, connectionInfo); + Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) } else { this.hasLooped = true; } @@ -81,9 +81,9 @@ export class Discovery { if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.device(connectionInfo.token).info.port !== connectionInfo.port) { const deviceId = new DeviceId(connectionInfo.token) - this.peers.set(deviceId.toString(), connectionInfo); - this.parent.devices.device(deviceId.toString()).info = connectionInfo; - Logger.debug(`Updated port for From ${deviceId.toString()}`) + this.peers.set(deviceId.string, connectionInfo); + this.parent.devices.device(deviceId.string).info = connectionInfo; + Logger.debug(`Updated port for From ${deviceId.string}`) } }); } @@ -108,7 +108,7 @@ export class Discovery { const msg = this.writeDiscoveryMessage(discoveryMessage) this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress ); - Logger.debug(`Broadcast Discovery Message ${this.deviceId.toString()} ${discoveryMessage.source}`); + Logger.debug(`Broadcast Discovery Message ${this.deviceId.string} ${discoveryMessage.source}`); this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index e8b6278..e8bff09 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -33,7 +33,7 @@ export class BeatInfoHandler extends ServiceHandler { public name: string = 'BeatInfo' public setupService(service: Service, deviceId: DeviceId) { - Logger.debug(`Setting up ${service.name} for ${deviceId.toString()}`); + Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); const beatInfo = service as BeatInfo; this.addDevice(deviceId, service); @@ -150,7 +150,7 @@ export class BeatInfo extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); - Logger.silly(`${messageId} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) return } } \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 6c2a0af..6ab6e85 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -41,7 +41,7 @@ export class Directory extends Service { socket: Socket ): ServiceMessage { assert(socket); - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`); + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`); return; } @@ -106,14 +106,14 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - if (!this.parent.devices.hasDevice(deviceId.toString())) { + if (!this.parent.devices.hasDevice(deviceId.string)) { await sleep(250); } let services: InstanceType[] = [] for (const serviceName of Object.keys(this.parent.services)) { //for (const serviceName of this.parent.serviceList) { - const device = this.parent.devices.device(deviceId.toString()); + const device = this.parent.devices.device(deviceId.string); if (device && !!deviceTypes[device.info?.software?.name]) { switch (serviceName) { case 'FileTransfer': { @@ -145,19 +145,19 @@ export class Directory extends Service { } - //this.parent.services[deviceId.toString()] = new Map(); - //this.parent.sockets[deviceId.toString()] = new Map(); + //this.parent.services[deviceId.string] = new Map(); + //this.parent.sockets[deviceId.string] = new Map(); for (const service of services) { - //this.parent.services[deviceId.toString()].set(service.name, service); + //this.parent.services[deviceId.string].set(service.name, service); ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.debug(`${deviceId.toString()} Created new ${service.name} on port ${service.serverInfo.port}`); + Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index f030b53..87d098e 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -47,7 +47,7 @@ export class FileTransferHandler extends ServiceHandler { public setupService(service: Service, deviceId: DeviceId) { const fileTransfer = service as FileTransfer; - Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.toString()}`); + Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); this.addDevice(deviceId, service); fileTransfer.on('fileTransferProgress', (fileName, txid, progress) => { this.emit('fileTransferProgress', fileName, txid, progress); @@ -77,7 +77,7 @@ export class FileTransfer extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) return } @@ -122,7 +122,7 @@ export class FileTransfer extends Service { assert(p_ctx.isEOF()); if (sources.length) { - Logger.silly(`getting sources for `, this.deviceId.toString()); + Logger.silly(`getting sources for `, this.deviceId.string); this.getSources(sources, socket); } @@ -205,7 +205,7 @@ export class FileTransfer extends Service { //sizeLeft() of 6 means its not an offline analyzer //TODO actually parse these messages //if (p_ctx.sizeLeft() >= 5) { - //Logger.debug(`requesting sources from `, deviceId.toString()); + //Logger.debug(`requesting sources from `, deviceId.string); this.requestSources(socket); //} @@ -345,7 +345,7 @@ export class FileTransfer extends Service { size: fstatMessage.size, remote: { location: database, - device: this.deviceId.toString(), + device: this.deviceId.string, } }, diff --git a/services/Service.ts b/services/Service.ts index 784a94f..34fd2f6 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -31,11 +31,11 @@ export abstract class ServiceHandler extends EventEmitter { } hasDevice(deviceId: DeviceId): boolean { - return this._devices.has(deviceId.toString()) + return this._devices.has(deviceId.string) } getDevice(deviceId: DeviceId): Service { - return this._devices.get(deviceId.toString()); + return this._devices.get(deviceId.string); } getDevices(): Service[] { @@ -43,11 +43,11 @@ export abstract class ServiceHandler extends EventEmitter { } addDevice(deviceId: DeviceId, service: Service) { - this._devices.set(deviceId.toString(), service) + this._devices.set(deviceId.string, service) } deleteDevice(deviceId: DeviceId) { - this._devices.delete(deviceId.toString()) + this._devices.delete(deviceId.string) } async startServiceListener>(ctor: { @@ -65,7 +65,7 @@ export abstract class ServiceHandler extends EventEmitter { let serverName = `${ctor.name}`; if (deviceId) { - serverName += deviceId.toString(); + serverName += deviceId.string; } this.parent.addServer(serverName, service.server); @@ -205,7 +205,7 @@ export abstract class Service extends EventEmitter { (assert (ctx.sizeLeft() >= 2)); ctx.readUInt16(); //read port, though we don't need it - Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.toString()}`); + Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.string}`); if (this.device) { this.device.parent.emit('newService', this.device, this) } @@ -239,7 +239,7 @@ export abstract class Service extends EventEmitter { } } } catch (err) { - Logger.error(this.name, this.deviceId.toString(), err); + Logger.error(this.name, this.deviceId.string, err); } } @@ -276,11 +276,11 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { - Logger.debug(`closing ${serviceName} server for ${deviceId.toString()} due to timeout`); + Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); await server.close(); let serverName = serviceName; - serverName += deviceId.toString(); + serverName += deviceId.string; parent.deleteServer(serverName); await handler.deleteDevice(deviceId); diff --git a/services/StateMap.ts b/services/StateMap.ts index 97ac719..2c84d68 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -50,7 +50,7 @@ export class StateMapHandler extends ServiceHandler { public deviceTrackRegister: Map = new Map(); public setupService(service: Service, deviceId: DeviceId) { - Logger.debug(`Setting up ${service.name} for ${deviceId.toString()}`); + Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); const stateMap = service as Services.StateMap; this.addDevice(deviceId, service); @@ -64,7 +64,7 @@ export class StateMapHandler extends ServiceHandler { stateMap.addListener('stateMessage', listener) stateMap.on('newDevice', ( service: InstanceType) => { - Logger.debug(`New StateMap Device ${service.deviceId.toString()}`) + Logger.debug(`New StateMap Device ${service.deviceId.string}`) this.emit('newDevice', service); //stateMap.subscribe(); assert(service); @@ -90,7 +90,7 @@ export class StateMap extends Service { await sleep(200); } - Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.toString()}`); + Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); @@ -106,7 +106,7 @@ export class StateMap extends Service { //const handler = this._handler as Services.StateMapHandler for (let state of playerDeckStateValues) { - const stateValue = `${this.deviceId.toString()},/${state.split('/').slice(1,3).join("/")}` + const stateValue = `${this.deviceId.string},/${state.split('/').slice(1,3).join("/")}` const newValue = `{${this.deviceId}},${state.split('/').slice(2,3).shift().substring(4,5)}` this.handler.deviceTrackRegister.set(stateValue, newValue); await this.subscribeState(state, 0, socket); @@ -141,7 +141,7 @@ export class StateMap extends Service { } protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) sleep(500) assert(socket); @@ -210,9 +210,9 @@ export class StateMap extends Service { // for (let [oldValue, newValue] of deckHandlerMsgs) { // const oldValueArr = oldValue.split(',') - // //const testString = `${this.deviceId.toString()}${data?.message?.name.substring(0,oldValue.length)}` + // //const testString = `${this.deviceId.string}${data?.message?.name.substring(0,oldValue.length)}` // //console.warn(testString, oldValue) - // if (oldValueArr[0] == this.deviceId.toString() && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { + // if (oldValueArr[0] == this.deviceId.string && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { // //if (testString == oldValue) { // returnMsg.message.name = `${newValue},${data.message.name.substring(oldValueArr[1].length, data.message.name.length)}` // } @@ -222,7 +222,7 @@ export class StateMap extends Service { // } private mixerAssignmentAdapter(data: ServiceMessage) { - const keyString = `${this.deviceId.toString()},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` + const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; this.handler.deviceTrackRegister.set(keyString, valueString); } @@ -236,7 +236,7 @@ export class StateMap extends Service { } if (p_data?.message?.interval) { - //console.warn(p_data.deviceId.toString(), p_data.socket.localPort, p_data.message.interval, p_data.message.name) + //console.warn(p_data.deviceId.string, p_data.socket.localPort, p_data.message.interval, p_data.message.name) //this.emit('stateMessage', this.deckMessageAdapter(p_data)); } else { //this.emit('stateMessage', this.deckMessageAdapter(p_data)); @@ -245,7 +245,7 @@ export class StateMap extends Service { if (p_data && p_data.message.json) { Logger.silly( - `${p_data.deviceId.toString()} ${p_data.message.name} => ${ + `${p_data.deviceId.string} ${p_data.message.name} => ${ p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }` ); diff --git a/services/TimeSync.ts b/services/TimeSync.ts index d8a4edd..1f6bd62 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -24,10 +24,10 @@ export class TimeSynchronizationHandler extends ServiceHandler { public name: string = 'TimeSync' public setupService(service: TimeSynchronization, deviceId: DeviceId) { - console.log(`Setting up ${service.name} for ${deviceId.toString()}`); + console.log(`Setting up ${service.name} for ${deviceId.string}`); service.on('newDevice', ( _service: InstanceType) => { - Logger.debug(`New TimeSync Device ${service.deviceId.toString()}`) + Logger.debug(`New TimeSync Device ${service.deviceId.string}`) //this.emit('newDevice', service); _service.sendTimeSyncRequest(); }) @@ -110,14 +110,14 @@ export class TimeSynchronization extends Service { const deviceId = new DeviceId(token) const svcName = p_ctx.readNetworkStringUTF16(); const svcPort = p_ctx.readUInt16(); - console.log(deviceId.toString(), svcName, svcPort) + console.log(deviceId.string, svcName, svcPort) } else { const id = p_ctx.readUInt32(); const msgs: bigint[] = [] while (p_ctx.sizeLeft()) { msgs.push(p_ctx.readUInt64()) }; - //console.log(this.deviceId.toString(), size,id,msgs) + //console.log(this.deviceId.string, size,id,msgs) return { id: id, deviceId: this.deviceId, @@ -137,7 +137,7 @@ export class TimeSynchronization extends Service { this.avgTimeArray.push(time); const sum = this.avgTimeArray.reduce((a, b) => a + b, 0n); const avg = (sum / BigInt(this.avgTimeArray.length)) || 0; - console.log(`${this.deviceId.toString()} Average time ${Number(avg)}`) + console.log(`${this.deviceId.string} Average time ${Number(avg)}`) } else { this.avgTimeArray.push(time); //console.log(this.avgTimeArray.length) @@ -150,7 +150,7 @@ export class TimeSynchronization extends Service { if (!msg?.message) { return } - if (msg?.deviceId && msg?.deviceId.toString() != "4be14112-5ead-4848-a07d-b37ca8a7220e") { + if (msg?.deviceId && msg?.deviceId.string != "4be14112-5ead-4848-a07d-b37ca8a7220e") { // return } @@ -163,7 +163,7 @@ export class TimeSynchronization extends Service { switch (msg.id) { case 1: - //console.log(msg.deviceId.toString(), msg.message.msgs[0]) + //console.log(msg.deviceId.string, msg.message.msgs[0]) //this.remoteTime = msg.message.msgs.shift(); this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); @@ -174,7 +174,7 @@ export class TimeSynchronization extends Service { const localClock = msg.message.timestamp - msg.message.msgs[0] const remoteClock = msg.message.msgs[1] - this.remoteTime - console.log(msg.deviceId.toString(), localClock, remoteClock, (localClock - remoteClock)) + console.log(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) this.timeAvg(remoteClock) break; @@ -184,7 +184,7 @@ export class TimeSynchronization extends Service { protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); - Logger.silly(`${messageId} to ${serviceName} from ${deviceId.toString()}`) + Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) this.emit('newDevice', this) return } diff --git a/types/Devices.ts b/types/Devices.ts index 39f8e93..fa96f97 100644 --- a/types/Devices.ts +++ b/types/Devices.ts @@ -17,7 +17,7 @@ export class Devices extends EventEmitter { addDevice(info: ConnectionInfo): Device { const device = new Device(info, this); - this._devices.set(device.deviceId.toString(), device) + this._devices.set(device.deviceId.string, device) this.emit('newDevice', device) return device } @@ -28,7 +28,7 @@ export class Devices extends EventEmitter { } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId - return this._devices.get(_deviceId.toString()) + return this._devices.get(_deviceId.string) } if (typeof deviceId == "object") { const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i @@ -46,7 +46,7 @@ export class Devices extends EventEmitter { } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId - return this._devices.has(_deviceId.toString()) + return this._devices.has(_deviceId.string) } if (typeof deviceId == "object"){ return this._devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i @@ -57,12 +57,12 @@ export class Devices extends EventEmitter { } addService(deviceId: DeviceId, service: InstanceType ) { - const device = this.device(deviceId.toString()) + const device = this.device(deviceId.string) device.addService(service) } deleteService(deviceId: DeviceId, serviceName: string) { - const device = this.device(deviceId.toString()); + const device = this.device(deviceId.string); device.deleteService(serviceName) } From 121c2c4287ac83cd1e7eb14d114a7b53cfd3a2b0 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 22 Mar 2023 12:22:54 -0400 Subject: [PATCH 068/146] add Sources class --- Databases/Databases.ts | 47 +++++++++++----------- Databases/Sources.ts | 44 ++++++++++++++++++++ Databases/index.ts | 3 +- StageLinq/index.ts | 60 +++++++++------------------ cli/index.ts | 18 ++++----- network/Discovery.ts | 2 - services/BeatInfo.ts | 17 +++----- services/Directory.ts | 87 ++++++++++++++-------------------------- services/FileTransfer.ts | 19 ++------- services/Service.ts | 29 +++++--------- services/StateMap.ts | 31 +++----------- services/TimeSync.ts | 49 ++++------------------ types/index.ts | 2 +- 13 files changed, 164 insertions(+), 244 deletions(-) create mode 100644 Databases/Sources.ts diff --git a/Databases/Databases.ts b/Databases/Databases.ts index f4836a7..b0e643d 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -9,7 +9,6 @@ import { FileTransferProgress } from '../services'; export declare interface Databases { - //on(event: 'dbNewSource', listener: ( source: Source) => void): this; on(event: 'dbDownloaded', listener: (source: Source) => void): this; on(event: 'dbDownloading', listener: (sourceName: string, dbPath: string) => void): this; on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; @@ -54,33 +53,33 @@ export class Databases extends EventEmitter { source.database.connection = new DbConnection(dbPath); - this.parent.setSource(source); + this.parent.sources.setSource(source); Logger.info(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); } - getDbPath(dbSourceName?: string) { - const source = this.parent.getSource(dbSourceName); + // getDbPath(dbSourceName?: string) { + // const source = this.parent.sources.getSource(dbSourceName); - if (!source.database.size) - throw new Error(`No data sources have been downloaded`); - - if (!dbSourceName || !this.parent.hasSource(dbSourceName)) { - - // Hack: Denon will save metadata on streaming files but only on an - // internal database. So if the source is "(Unknown)streaming://" - // return the first internal database we find. - for (const entry of this.parent.getSourcesArray()) { //Array.from(this.sources.entries())) { - if (/\(Internal\)/.test(entry[0])) { - Logger.debug(`Returning copy of internal database`); - return this.parent.getSource(entry[0]); - } - } - // Else, throw an exception. - throw new Error(`Data source "${dbSourceName}" doesn't exist.`); - } - - return this.parent.getSource(dbSourceName); - } + // if (!source.database.size) + // throw new Error(`No data sources have been downloaded`); + + // if (!dbSourceName || !this.parent.sources.hasSource(dbSourceName)) { + + // // Hack: Denon will save metadata on streaming files but only on an + // // internal database. So if the source is "(Unknown)streaming://" + // // return the first internal database we find. + // for (const entry of this.parent.sources.getSourcesArray()) { //Array.from(this.sources.entries())) { + // if (/\(Internal\)/.test(entry[0])) { + // Logger.debug(`Returning copy of internal database`); + // return this.parent.sources.getSource(entry[0]); + // } + // } + // // Else, throw an exception. + // throw new Error(`Data source "${dbSourceName}" doesn't exist.`); + // } + + // return this.parent.sources.getSource(dbSourceName); + // } } diff --git a/Databases/Sources.ts b/Databases/Sources.ts new file mode 100644 index 0000000..da6313b --- /dev/null +++ b/Databases/Sources.ts @@ -0,0 +1,44 @@ +import { EventEmitter } from 'events'; +//import * as Services from '../services'; +import { Source, DeviceId} from '../types'; +import { StageLinq } from '../StageLinq'; + +export declare interface Sources { + //on(event: 'newSource', listener: (device: Device) => void): this; + //on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; +} + +export class Sources extends EventEmitter { + private _sources: Map = new Map(); + public readonly parent: InstanceType; + + constructor(parent: InstanceType) { + super(); + this.parent = parent; + } + + hasSource(sourceName: string, deviceId: DeviceId): boolean { + return this._sources.has(`${sourceName}${deviceId.string}`); + } + + getSource(sourceName: string, deviceId: DeviceId): Source { + return this._sources.get(`${sourceName}${deviceId.string}`); + } + + setSource(source: Source) { + this._sources.set(`${source.name}${source.deviceId.string}`, source); + } + + getSourceList(): string[] { + return [...this._sources.keys()] + } + + getSources(): Source[] { + return [...this._sources.values()] + } + +// getSourcesArray() { +// return this._sources.entries() +// } +} + diff --git a/Databases/index.ts b/Databases/index.ts index 63cefa1..08ff7d5 100644 --- a/Databases/index.ts +++ b/Databases/index.ts @@ -1,2 +1,3 @@ export * from './Databases'; -export * from './DbConnection'; \ No newline at end of file +export * from './DbConnection'; +export * from './Sources'; \ No newline at end of file diff --git a/StageLinq/index.ts b/StageLinq/index.ts index fcad2da..b73bc4c 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,8 +1,8 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, PlayerStatus, Source} from '../types'; -import { Databases } from '../Databases'; +import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, Source} from '../types'; +import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Server } from 'net'; import { assert } from 'console'; @@ -18,9 +18,7 @@ export interface ServiceHandlers { } export declare interface StageLinq { - on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; - on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; - on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; + on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; @@ -34,27 +32,30 @@ export declare interface StageLinq { */ export class StageLinq extends EventEmitter { + public options: StageLinqOptions; public services: ServiceHandlers = {}; + public readonly devices = new Devices(); + public readonly logger: Logger = Logger.instance; + public readonly discovery: Discovery = new Discovery(this); + + public readonly stateMap: InstanceType = null; + public readonly fileTransfer: InstanceType = null; + public readonly beatInfo: InstanceType = null; + public readonly timeSync: InstanceType = null; + private directory: InstanceType = null; private _databases: Databases; - public devices = new Devices(); - private _sources: Map = new Map(); + private _sources: Sources; private servers: Map = new Map(); - - public options: StageLinqOptions; - public stateMap: InstanceType = null; - public fileTransfer: InstanceType = null; - public beatInfo: InstanceType = null; - public timeSync: InstanceType = null; - - public logger: Logger = Logger.instance; - public discovery: Discovery = new Discovery(this); - + constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; this._databases = new Databases(this); + this._sources = new Sources(this); + + //TODO make this into factory function? for (let service of this.options.services) { switch (service) { case "StateMap": { @@ -85,7 +86,6 @@ export class StageLinq extends EventEmitter { break; } } - } ////// Getters & Setters ///////// @@ -93,28 +93,8 @@ export class StageLinq extends EventEmitter { return this._databases; } - hasSource(sourceName: string): boolean { - return this._sources.has(sourceName); - } - - getSource(sourceName: string): Source { - return this._sources.get(sourceName); - } - - setSource(source: Source) { - this._sources.set(source.name, source); - } - - getSourceList(): string[] { - return [...this._sources.keys()] - } - - getSources(): Source[] { - return [...this._sources.values()] - } - - getSourcesArray() { - return this._sources.entries() + get sources() { + return this._sources } addServer(serverName: string , server: Server) { diff --git a/cli/index.ts b/cli/index.ts index 4df8895..a58e478 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,4 @@ -import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source} from '../types'; +import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source, DeviceId} from '../types'; import * as Services from '../services' import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; @@ -25,12 +25,12 @@ function progressBar(size: number, bytes: number, total: number): string { return `[${progressArrary.join('')}]` } -async function getTrackInfo(stageLinq: StageLinq, sourceName: string, trackName: string) { - while (!stageLinq.hasSource(sourceName)) { +async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, trackName: string) { + while (!stageLinq.sources.hasSource(sourceName, deviceId)) { await sleep(250); } try { - const _source = stageLinq.getSource(sourceName); + const _source = stageLinq.sources.getSource(sourceName, deviceId); //const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) const connection = _source.database.connection; const result = await connection.getTrackInfo(trackName); @@ -42,13 +42,13 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, trackName: } } -async function downloadFile(stageLinq: StageLinq, sourceName: string, path: string, dest?: string) { +async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { - while (!stageLinq.hasSource(sourceName)) { + while (!stageLinq.sources.hasSource(sourceName, deviceId)) { await sleep(250); } try { - const _source = stageLinq.getSource(sourceName); + const _source = stageLinq.sources.getSource(sourceName, deviceId); const data = await stageLinq.downloadFile(_source, path); if (dest && data) { const filePath = `${dest}/${path.split('/').pop()}` @@ -124,8 +124,8 @@ async function main() { const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` - await getTrackInfo(stageLinq, sourceName, data.message.json.string); - downloadFile(stageLinq, sourceName, path, Path.resolve(os.tmpdir())); + await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); + downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); } } diff --git a/network/Discovery.ts b/network/Discovery.ts index ae24b74..2649620 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -7,7 +7,6 @@ import { strict as assert } from 'assert'; import { sleep, WriteContext } from '../utils'; import { networkInterfaces } from 'os'; import { subnet, SubnetInfo } from 'ip'; -//import * as Services from '../services'; import { Logger } from '../LogEmitter'; import { StageLinq } from '../StageLinq'; @@ -69,7 +68,6 @@ export class Discovery { await this.listenForDevices( (connectionInfo: ConnectionInfo) => { if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - //const deviceId = new DeviceId(connectionInfo.token) const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index e8bff09..9c5d317 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -37,10 +37,7 @@ export class BeatInfoHandler extends ServiceHandler { const beatInfo = service as BeatInfo; this.addDevice(deviceId, service); - - // Start BeatInfo, pass user callback beatInfo.server.on("connection", () =>{ - //beatInfo.startBeatInfo(beatCallback, beatOptions, socket); this.emit('newBeatInfoDevice', beatInfo) }); beatInfo.on('beatMessage', (message: ServiceMessage) => { @@ -54,21 +51,18 @@ export declare interface BeatInfo { } export class BeatInfo extends Service { - public name: string = "BeatInfo"; + public readonly name = "BeatInfo"; private _userBeatCallback: beatCallback = null; private _userBeatOptions: BeatOptions = null; private _currentBeatData: BeatData = null; - async init() {} public async startBeatInfo(options: BeatOptions, beatCB?: beatCallback,) { if (beatCB) { this._userBeatCallback = beatCB; } - - this._userBeatOptions = options; - + this._userBeatOptions = options; this.sendBeatInfoRequest(this.socket); } @@ -123,13 +117,14 @@ export class BeatInfo extends Service { this._currentBeatData = p_data.message if (this._userBeatCallback) { this._userBeatCallback(p_data); + } this.emit('beatMessage', p_data) - } let hasUpdated = false; - for (let i = 0; i { hasUpdated = true; } } + if (hasUpdated) { this._currentBeatData = p_data.message; if (this._userBeatCallback) { this._userBeatCallback(p_data); } this.emit('beatMessage', p_data.message) - } } } diff --git a/services/Directory.ts b/services/Directory.ts index 6ab6e85..a26b249 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,7 +1,7 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, ServicePorts, MessageId, Tokens, DeviceId, deviceTypes } from '../types'; +import { ServiceMessage, MessageId, Tokens, DeviceId, deviceTypes } from '../types'; import { sleep } from '../utils/sleep'; import { Socket } from 'net'; import { strict as assert } from 'assert'; @@ -13,10 +13,9 @@ import { TimeSynchronization } from './TimeSync'; export interface DirectoryData { deviceId: string; - servicePorts: ServicePorts; } -export class DirectoryHandler extends ServiceHandler { +export class DirectoryHandler extends ServiceHandler { public name: string = "Directory" public setupService(service: Service) { @@ -25,14 +24,10 @@ export class DirectoryHandler extends ServiceHandler { } export class Directory extends Service { - public name: string = 'Directory'; - public timeAlive: number; - public servicePorts: ServicePorts; + public readonly name = 'Directory'; - protected readonly isBufferedService = false; - - async init() {} + protected timeAlive: number; protected parseServiceData( messageId: number, @@ -47,7 +42,6 @@ export class Directory extends Service { protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { let deviceId: string = ''; - let servicePorts: ServicePorts = {}; while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); @@ -66,14 +60,11 @@ export class Directory extends Service { if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { this.sendTimeStampReply(token, socket); } - break; case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); const port = ctx.readUInt16(); console.warn('received ', service, port); - servicePorts[service] = port; - this.servicePorts[service] = port; break; case MessageId.ServicesRequest: ctx.readRemaining(); // @@ -85,7 +76,6 @@ export class Directory extends Service { } const directoryMessage: DirectoryData = { deviceId: deviceId, - servicePorts: servicePorts, }; const directoryData = { id: 69, @@ -100,72 +90,57 @@ export class Directory extends Service { assert(directoryMsg); } - private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { - + private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { const ctx = new WriteContext(); - ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - if (!this.parent.devices.hasDevice(deviceId.string)) { + if (!this.parent.devices.hasDevice(deviceId)) { await sleep(250); } let services: InstanceType[] = [] + for (const serviceName of Object.keys(this.parent.services)) { - //for (const serviceName of this.parent.serviceList) { const device = this.parent.devices.device(deviceId.string); - if (device && !!deviceTypes[device.info?.software?.name]) { - switch (serviceName) { - case 'FileTransfer': { - //const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId); - const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); - services.push(fileTransfer); - break; - } - case 'StateMap': { - const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); - services.push(stateMap); - break; - } - case 'BeatInfo': { - //const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId); - const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); - services.push(beatInfo); - break; - } - case 'TimeSynchronization': { - const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); - services.push(timeSync); - break; + if (device && !!deviceTypes[device.info?.software?.name]) { + switch (serviceName) { + case 'FileTransfer': { + const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); + services.push(fileTransfer); + break; + } + case 'StateMap': { + const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); + services.push(stateMap); + break; + } + case 'BeatInfo': { + const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); + services.push(beatInfo); + break; + } + case 'TimeSynchronization': { + const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); + services.push(timeSync); + break; + } + default: + break; } - default: - break; } - } - } - //this.parent.services[deviceId.string] = new Map(); - //this.parent.sockets[deviceId.string] = new Map(); - for (const service of services) { - - //this.parent.services[deviceId.string].set(service.name, service); - ctx.writeUInt32(MessageId.ServicesAnnouncement); ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); - } const msg = ctx.getBuffer(); - await socket.write(msg); Logger.silly(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); - } private async sendTimeStampReply(token: Uint8Array, socket: Socket) { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 87d098e..8c0eecf 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -9,7 +9,6 @@ import type { ServiceMessage, Source, DeviceId } from '../types'; import { Socket } from 'net'; - const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; @@ -41,9 +40,7 @@ export declare interface FileTransfer { } export class FileTransferHandler extends ServiceHandler { - public name: string = "FileTransfer" - - + public readonly name = "FileTransfer" public setupService(service: Service, deviceId: DeviceId) { const fileTransfer = service as FileTransfer; @@ -55,20 +52,16 @@ export class FileTransferHandler extends ServiceHandler { fileTransfer.on('dbNewSource', (source: Source) => { this.emit('dbNewSource', source); }); - - } } export class FileTransfer extends Service { - private receivedFile: WriteContext = null; public name: string = "FileTransfer"; + private receivedFile: WriteContext = null; private _isAvailable: boolean = true; private txId: number = 1; - async init() {} - // TODO need better txId to handle consurrent transfers public get txid() { return this.txId; @@ -203,11 +196,7 @@ export class FileTransfer extends Service { case MessageId.Unknown0: { //sizeLeft() of 6 means its not an offline analyzer - //TODO actually parse these messages - //if (p_ctx.sizeLeft() >= 5) { - //Logger.debug(`requesting sources from `, deviceId.string); this.requestSources(socket); - //} return { id: messageId, @@ -242,9 +231,7 @@ export class FileTransfer extends Service { protected messageHandler(p_data: ServiceMessage): void { this.emit('fileMessage', p_data); - if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { - //assert(this.receivedFile.sizeLeft() >= p_data.message.size); this.receivedFile.write(p_data.message.data); } if (p_data && p_data.id === MessageId.RequestSources) { @@ -351,7 +338,7 @@ export class FileTransfer extends Service { } this.emit('dbNewSource', thisSource); - this.parent.setSource(thisSource); + this.parent.sources.setSource(thisSource); result.push(thisSource); this.parent.databases.downloadDb(thisSource); diff --git a/services/Service.ts b/services/Service.ts index 34fd2f6..aaa46c2 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -79,21 +79,21 @@ export abstract class ServiceHandler extends EventEmitter { export abstract class Service extends EventEmitter { public readonly name: string = "Service"; + public readonly device: Device; public deviceId: DeviceId = null; - //public type: T; - protected _deviceId: DeviceId = null; - public device: Device; + public server: Server = null; + public serverInfo: AddressInfo; + public serverStatus: boolean = false; + public socket: Socket = null; + //TODO figure out removing this second DeviceId + protected _deviceId: DeviceId = null; + protected isBufferedService: boolean = true; protected parent: InstanceType; protected _handler: ServiceHandler = null; - public server: Server = null; - public serverInfo: AddressInfo; - public serverStatus: boolean = false; - public socket: Socket = null; - protected timeout: NodeJS.Timer; private messageBuffer: Buffer = null; @@ -101,7 +101,6 @@ export abstract class Service extends EventEmitter { constructor(p_parent:InstanceType, serviceHandler: InstanceType , deviceId?: DeviceId) { super(); this.parent = p_parent; - //this.type = Service; this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; this.device = (deviceId ? this.parent.devices.device(deviceId) : null); @@ -163,8 +162,7 @@ export abstract class Service extends EventEmitter { private async dataHandler(p_data: Buffer, socket: Socket) { - - //append queue to current data + // Concantenate messageBuffer with current data let buffer: Buffer = null; if ( this.messageBuffer && this.messageBuffer.length > 0) { buffer = Buffer.concat([this.messageBuffer, p_data]); @@ -279,8 +277,8 @@ export abstract class Service extends EventEmitter { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); await server.close(); - let serverName = serviceName; - serverName += deviceId.string; + + const serverName = `${serviceName}${deviceId.string}`; parent.deleteServer(serverName); await handler.deleteDevice(deviceId); @@ -292,11 +290,6 @@ export abstract class Service extends EventEmitter { assert(!service.hasDevice(deviceId)); } - // TODO: Cannot use abstract because of async; is there another way to get this? - protected async init() { - assert.fail('Implement this'); - } - protected abstract parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; protected abstract parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage; diff --git a/services/StateMap.ts b/services/StateMap.ts index 2c84d68..0a6514f 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -46,7 +46,7 @@ export interface StateData { } export class StateMapHandler extends ServiceHandler { - public name: string = 'StateMap' + public readonly name = 'StateMap'; public deviceTrackRegister: Map = new Map(); public setupService(service: Service, deviceId: DeviceId) { @@ -56,7 +56,6 @@ export class StateMapHandler extends ServiceHandler { const listener = (data: ServiceMessage) => { if (data && data.message && data.message.json) { - // console.log(data.message.name,">>", data.message.json); this.emit('stateMessage', data); } }; @@ -66,32 +65,27 @@ export class StateMapHandler extends ServiceHandler { stateMap.on('newDevice', ( service: InstanceType) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) this.emit('newDevice', service); - //stateMap.subscribe(); assert(service); }) } } export class StateMap extends Service { - public name: string = "StateMap"; - public handler: StateMapHandler; - - async init() { - } + public readonly name = "StateMap"; + public readonly handler: StateMapHandler; constructor(p_parent:InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(p_parent, serviceHandler, deviceId) this.handler = this._handler as StateMapHandler } + public async subscribe() { - const socket = this.socket; while (!this.parent.discovery.hasConnectionInfo(this.deviceId)) { await sleep(200); } Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); - const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); switch (thisPeer?.device?.type) { @@ -103,15 +97,12 @@ export class StateMap extends Service { for (let i=0; i< thisPeer.device.decks; i++) { playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } - - //const handler = this._handler as Services.StateMapHandler for (let state of playerDeckStateValues) { const stateValue = `${this.deviceId.string},/${state.split('/').slice(1,3).join("/")}` const newValue = `{${this.deviceId}},${state.split('/').slice(2,3).shift().substring(4,5)}` this.handler.deviceTrackRegister.set(stateValue, newValue); await this.subscribeState(state, 0, socket); } - break; } case "CONTROLLER": { @@ -122,11 +113,9 @@ export class StateMap extends Service { for (let i=0; i< thisPeer.device.decks; i++) { playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; } - for (let state of playerDeckStateValues) { await this.subscribeState(state, 0, socket); } - break; } case "MIXER": { @@ -144,7 +133,6 @@ export class StateMap extends Service { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) sleep(500) assert(socket); - this.emit('newDevice', this) return } @@ -169,11 +157,9 @@ export class StateMap extends Service { deviceId: this.deviceId, socket: socket, message: { - name: name, - + name: name, service: this, json: json, - }, }; } catch(err) { @@ -195,12 +181,10 @@ export class StateMap extends Service { }, }; } - default: break; } assert.fail(`Unhandled type ${type}`); - return null; } // private deckMessageAdapter(data: ServiceMessage): ServiceMessage { @@ -227,17 +211,14 @@ export class StateMap extends Service { this.handler.deviceTrackRegister.set(keyString, valueString); } - protected messageHandler(p_data: ServiceMessage): void { //TODO do we need to emit intervals? - if (p_data?.message?.name.substring(0,p_data?.message?.name?.length-1) == "/Mixer/ChannelAssignment") { this.mixerAssignmentAdapter(p_data); } if (p_data?.message?.interval) { - //console.warn(p_data.deviceId.string, p_data.socket.localPort, p_data.message.interval, p_data.message.name) - //this.emit('stateMessage', this.deckMessageAdapter(p_data)); + } else { //this.emit('stateMessage', this.deckMessageAdapter(p_data)); this.emit('stateMessage', p_data); diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 1f6bd62..798c8bc 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -4,7 +4,6 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; import * as Services from '../services'; -//import { Logger } from '../LogEmitter'; import { ServiceMessage, Tokens, DeviceId } from '../types'; import { Logger } from '../LogEmitter'; import { Socket } from 'net'; @@ -30,20 +29,18 @@ export class TimeSynchronizationHandler extends ServiceHandler { Logger.debug(`New TimeSync Device ${service.deviceId.string}`) //this.emit('newDevice', service); _service.sendTimeSyncRequest(); - }) - + }) } } export class TimeSynchronization extends Service { - public name:string = "TimeSynchronization" + public readonly name = "TimeSynchronization" protected isBufferedService: boolean = false; private localTime: bigint; private remoteTime: bigint; private avgTimeArray: bigint[] = []; //private queryTimer: NodeJS.Timer; - public async sendTimeSyncRequest() { const ctx = new WriteContext(); @@ -72,18 +69,15 @@ export class TimeSynchronization extends Service { } private getTimeStamp(): bigint { - //const timestamp = Math.floor(performance.now() * 1000000); //Date.now(); return (BigInt(Math.floor(performance.now()))) } private sendTimeSyncQuery(localTime: bigint, remoteTime: bigint) { this.localTime = localTime; - //this.currrentTime = currentTime; const buffMsg = this.timeSyncMsgHelper(1,[this.localTime]); const ctx = new WriteContext() ctx.write(buffMsg) - //Logger.debug(buffMsg); this.remoteTime = remoteTime; this.write(ctx, this.socket); }; @@ -96,15 +90,9 @@ export class TimeSynchronization extends Service { // }; protected parseData(p_ctx: ReadContext): ServiceMessage { - const timestamp = this.getTimeStamp() - //console.log(performance.now()) - - //console.log(p_ctx.readRemainingAsNewBuffer()) - //p_ctx.rewind(); + const timestamp = this.getTimeStamp(); const size = p_ctx.readUInt32(); - - // console.log(timestamp, size) - + if (size === 0) { const token = p_ctx.read(16); const deviceId = new DeviceId(token) @@ -117,7 +105,6 @@ export class TimeSynchronization extends Service { while (p_ctx.sizeLeft()) { msgs.push(p_ctx.readUInt64()) }; - //console.log(this.deviceId.string, size,id,msgs) return { id: id, deviceId: this.deviceId, @@ -131,7 +118,6 @@ export class TimeSynchronization extends Service { } private timeAvg(time: bigint) { - //const timeInt = Number(time); if (this.avgTimeArray.length > 100) { this.avgTimeArray.shift(); this.avgTimeArray.push(time); @@ -140,45 +126,26 @@ export class TimeSynchronization extends Service { console.log(`${this.deviceId.string} Average time ${Number(avg)}`) } else { this.avgTimeArray.push(time); - //console.log(this.avgTimeArray.length) } } protected messageHandler(msg: ServiceMessage): void { - //console.log(msg.message) - if (!msg?.message) { return } - if (msg?.deviceId && msg?.deviceId.string != "4be14112-5ead-4848-a07d-b37ca8a7220e") { - // return - } - - // if (!this._hasReplied) { - //this.sendTimeSyncReply(msg.message.msgs.shift(), msg.message.timestamp) - // this._hasReplied = true; - // } - - //console.log(performance.now()) - switch (msg.id) { case 1: - //console.log(msg.deviceId.string, msg.message.msgs[0]) - - //this.remoteTime = msg.message.msgs.shift(); this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); - break; case 2: - console.log(msg.message) - const localClock = msg.message.timestamp - msg.message.msgs[0] + console.log(msg.message) + const localClock = msg.message.timestamp - msg.message.msgs[0] const remoteClock = msg.message.msgs[1] - this.remoteTime - console.log(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) this.timeAvg(remoteClock) - break; - + default: + break; } } diff --git a/types/index.ts b/types/index.ts index f0e0306..db14fb0 100644 --- a/types/index.ts +++ b/types/index.ts @@ -55,7 +55,7 @@ export interface ServicePorts { export interface ServiceMessage { id: number; message: T; - socket: Socket; + socket: Socket; //TODO replace with service deviceId: DeviceId; } From cbcaf8c1589678a792e06989504435c044983827 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 22 Mar 2023 15:47:00 -0400 Subject: [PATCH 069/146] Add Status Class --- Databases/Sources.ts | 3 +- StageLinq/index.ts | 7 ++- cli/index.ts | 55 ++++++++++++++++++++--- {types => devices}/DeviceId.ts | 0 {types => devices}/Devices.ts | 3 +- devices/index.ts | 2 + network/Discovery.ts | 3 +- services/BeatInfo.ts | 3 +- services/Directory.ts | 3 +- services/FileTransfer.ts | 3 +- services/Service.ts | 3 +- services/StateMap.ts | 3 +- services/TimeSync.ts | 11 ++--- {devices => status}/Player.ts | 9 ++-- {devices => status}/PlayerMessageQueue.ts | 0 status/Status.ts | 40 +++++++++++++++++ types/index.ts | 5 +-- types/player.ts | 3 +- 18 files changed, 127 insertions(+), 29 deletions(-) rename {types => devices}/DeviceId.ts (100%) rename {types => devices}/Devices.ts (97%) create mode 100644 devices/index.ts rename {devices => status}/Player.ts (96%) rename {devices => status}/PlayerMessageQueue.ts (100%) create mode 100644 status/Status.ts diff --git a/Databases/Sources.ts b/Databases/Sources.ts index da6313b..32a7c93 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -1,6 +1,7 @@ import { EventEmitter } from 'events'; //import * as Services from '../services'; -import { Source, DeviceId} from '../types'; +import { Source} from '../types'; +import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; export declare interface Sources { diff --git a/StageLinq/index.ts b/StageLinq/index.ts index b73bc4c..4a31024 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,9 +1,11 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, Devices, DeviceId, ConnectionInfo, ServiceMessage, Source} from '../types'; +import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage, Source} from '../types'; +import {Devices, DeviceId} from '../devices' import { Databases, Sources } from '../Databases'; import * as Services from '../services'; +import { Status } from '../status/Status'; import { Server } from 'net'; import { assert } from 'console'; @@ -44,6 +46,8 @@ export class StageLinq extends EventEmitter { public readonly beatInfo: InstanceType = null; public readonly timeSync: InstanceType = null; + public readonly status: Status = null; + private directory: InstanceType = null; private _databases: Databases; private _sources: Sources; @@ -54,6 +58,7 @@ export class StageLinq extends EventEmitter { this.options = options || DEFAULT_OPTIONS; this._databases = new Databases(this); this._sources = new Sources(this); + this.status = new Status(this); //TODO make this into factory function? for (let service of this.options.services) { diff --git a/cli/index.ts b/cli/index.ts index a58e478..31aa84e 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,4 +1,5 @@ -import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source, DeviceId} from '../types'; +import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source } from '../types'; +import { DeviceId } from '../devices' import * as Services from '../services' import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; @@ -76,7 +77,7 @@ async function main() { ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, - //ServiceList.TimeSynchronization, + ServiceList.TimeSynchronization, ], } @@ -97,16 +98,19 @@ async function main() { console.log(...args); args.push("\n"); }); - // stageLinq.logger.on('debug', (...args: any) => { - // console.debug(...args); - // args.push("\n"); - // }); + stageLinq.logger.on('debug', (...args: any) => { + console.debug(...args); + args.push("\n"); + }); //Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); // }); + //stageLinq.status.on() + + stageLinq.devices.on('newDevice', (device) =>{ console.log(`DEVICES New Device ${device.deviceId.string}`) }); @@ -119,7 +123,7 @@ async function main() { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { if (data.message.json) { - console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); + //console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); if (data.message.json.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') const sourceName = split.shift(); @@ -134,8 +138,45 @@ async function main() { stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { console.log(`Subscribing to States on ${service.deviceId.string}`); service.subscribe(); + stageLinq.status.addPlayer({ + stateMap: service, + address: service.socket.remoteAddress, + port: service.socket.remotePort, + deviceId: service.deviceId, + }) }); + stageLinq.status.on('trackLoaded', async (status) => { + console.log(`STATUS Track Loaded ${status.deviceId.string}`); + console.dir(status); + + // if (stageLinq.options.downloadDbSources && downloadFlag) { + // getTrackInfo(stageLinq, status); + // } + + // // Example of how to download the actual track from the media. + + // if (downloadFlag) { + // const filename = [status.title,'.mp3'].join(''); + // while (!stageLinq.hasSource(status.dbSourceName)) { + // await sleep(250); + // } + // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); + // } + + }); + stageLinq.status.on('nowPlaying', async (status) => { + console.log(`STATUS Now Playing ${status.deviceId.string}`); + console.dir(status); + + }); + + stageLinq.status.on('stateChanged', async (status) => { + console.log(`STATUS State Changed ${status.deviceId.string}`); + console.dir(status); + + }); + } if (stageLinq.fileTransfer) { diff --git a/types/DeviceId.ts b/devices/DeviceId.ts similarity index 100% rename from types/DeviceId.ts rename to devices/DeviceId.ts diff --git a/types/Devices.ts b/devices/Devices.ts similarity index 97% rename from types/Devices.ts rename to devices/Devices.ts index fa96f97..d561c07 100644 --- a/types/Devices.ts +++ b/devices/Devices.ts @@ -1,6 +1,7 @@ import { EventEmitter } from 'events'; import * as Services from '../services'; -import { ConnectionInfo, DeviceId } from '../types'; +import { ConnectionInfo } from '../types'; +import { DeviceId} from '../devices' export declare interface Devices { diff --git a/devices/index.ts b/devices/index.ts new file mode 100644 index 0000000..ee67d61 --- /dev/null +++ b/devices/index.ts @@ -0,0 +1,2 @@ +export * from './DeviceId'; +export * from './Devices'; \ No newline at end of file diff --git a/network/Discovery.ts b/network/Discovery.ts index 2649620..ce06001 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,5 @@ -import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, DeviceId, deviceIdFromBuff, deviceTypes, } from '../types'; +import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, deviceTypes, } from '../types'; +import { DeviceId, deviceIdFromBuff } from '../devices' import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 9c5d317..f6295c0 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -3,7 +3,8 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; import { Logger } from '../LogEmitter'; -import type { ServiceMessage, DeviceId } from '../types'; +import type { ServiceMessage } from '../types'; +import { DeviceId } from '../devices' import { Socket } from 'net'; type beatCallback = (n: ServiceMessage) => void; diff --git a/services/Directory.ts b/services/Directory.ts index a26b249..99ef83d 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,7 +1,8 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, MessageId, Tokens, DeviceId, deviceTypes } from '../types'; +import { ServiceMessage, MessageId, Tokens, deviceTypes } from '../types'; +import { DeviceId } from '../devices' import { sleep } from '../utils/sleep'; import { Socket } from 'net'; import { strict as assert } from 'assert'; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 8c0eecf..90bdeb9 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -5,7 +5,8 @@ import { Service, ServiceHandler } from './Service'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; -import type { ServiceMessage, Source, DeviceId } from '../types'; +import type { ServiceMessage, Source } from '../types'; +import { DeviceId } from '../devices' import { Socket } from 'net'; diff --git a/services/Service.ts b/services/Service.ts index aaa46c2..bf6797b 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,6 +1,7 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT, DeviceId, Device } from '../types'; +import { MessageId, MESSAGE_TIMEOUT } from '../types'; +import { DeviceId, Device } from '../devices' import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; diff --git a/services/StateMap.ts b/services/StateMap.ts index 0a6514f..9ddd765 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -2,7 +2,8 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, DeviceId, MessageId } from '../types'; +import { ServiceMessage, MessageId } from '../types'; +import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 798c8bc..a403d43 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -4,7 +4,8 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; import * as Services from '../services'; -import { ServiceMessage, Tokens, DeviceId } from '../types'; +import { ServiceMessage, Tokens } from '../types'; +import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; import { Socket } from 'net'; const { performance } = require('perf_hooks'); @@ -122,8 +123,8 @@ export class TimeSynchronization extends Service { this.avgTimeArray.shift(); this.avgTimeArray.push(time); const sum = this.avgTimeArray.reduce((a, b) => a + b, 0n); - const avg = (sum / BigInt(this.avgTimeArray.length)) || 0; - console.log(`${this.deviceId.string} Average time ${Number(avg)}`) + const avg = (sum / BigInt(this.avgTimeArray.length)) || 0n; + Logger.silly(`${this.deviceId.string} Average time ${avg}`) } else { this.avgTimeArray.push(time); } @@ -138,10 +139,10 @@ export class TimeSynchronization extends Service { this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); break; case 2: - console.log(msg.message) + Logger.silly(msg.message) const localClock = msg.message.timestamp - msg.message.msgs[0] const remoteClock = msg.message.msgs[1] - this.remoteTime - console.log(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) + Logger.silly(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) this.timeAvg(remoteClock) break; default: diff --git a/devices/Player.ts b/status/Player.ts similarity index 96% rename from devices/Player.ts rename to status/Player.ts index ac8094f..05fdb92 100644 --- a/devices/Player.ts +++ b/status/Player.ts @@ -1,5 +1,6 @@ import { EventEmitter } from 'events'; -import { DeviceId, PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; +import { PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; +import { DeviceId } from '../devices' import { PlayerMessageQueue } from './PlayerMessageQueue'; import { StateData, StateMap } from '../services'; import { Logger } from '../LogEmitter'; @@ -12,7 +13,7 @@ export declare interface Player { ////////////////////////////////////////////////////////////////////////////// -interface PlayerOptions { +export interface PlayerOptions { stateMap: StateMap; address: string, port: number; @@ -181,7 +182,7 @@ export class Player extends EventEmitter { port: this.port, masterTempo: this.masterTempo, masterStatus: this.masterStatus, - deviceId: `net://${this.deviceId.string}`, + deviceId: this.deviceId, ...result }; @@ -191,7 +192,7 @@ export class Player extends EventEmitter { if (currentState.trackNetworkPath && currentState.trackNetworkPath.startsWith('net:')) { const pathParts = currentState.trackNetworkPath.split('net://')[1].split('/', 2); currentState.dbSourceName = pathParts[1];//`net://${pathParts[0]}/${pathParts[1]}`; - currentState.deviceId = pathParts[0];//`net://${pathParts[0]}`; + currentState.deviceId = new DeviceId(pathParts[0]);//`net://${pathParts[0]}`; } else if (!currentState.source || /Unknown/.test(currentState.source)) { // Tracks from streaming sources won't be in the database. currentState.dbSourceName = ''; diff --git a/devices/PlayerMessageQueue.ts b/status/PlayerMessageQueue.ts similarity index 100% rename from devices/PlayerMessageQueue.ts rename to status/PlayerMessageQueue.ts diff --git a/status/Status.ts b/status/Status.ts new file mode 100644 index 0000000..e58707c --- /dev/null +++ b/status/Status.ts @@ -0,0 +1,40 @@ +import EventEmitter = require("events"); +import { StageLinq } from '../StageLinq'; +import { Player, PlayerOptions } from '../status/Player'; +import { PlayerStatus } from '../types'; +import { DeviceId} from '../devices' + + +export declare interface Status { + on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; + on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; + on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; + } + +export interface StatusData extends PlayerStatus { + deviceId: DeviceId +} + +export class Status extends EventEmitter { + readonly parent: InstanceType; + private _players: Map = new Map(); + + constructor(parent: InstanceType) { + super(); + this.parent = parent; + } + + addPlayer(options: PlayerOptions) { + const player = new Player(options) + this._players.set(options.deviceId.string, player); + player.on("nowPlaying", (status) =>{ + this.emit("nowPlaying", status); + }) + player.on("stateChanged", (status) =>{ + this.emit("stateChanged", status); + }) + player.on("trackLoaded", (status) =>{ + this.emit("trackLoaded", status); + }) + } +} \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index db14fb0..e18e541 100644 --- a/types/index.ts +++ b/types/index.ts @@ -2,15 +2,14 @@ import { Socket } from 'net'; import { DbConnection } from '../Databases'; import { DiscoveryMessageOptions } from '../network'; import * as Services from '../services'; -import { DeviceId } from './DeviceId'; +import { DeviceId } from '../devices/DeviceId'; export * from './common'; export * from './player'; export * from './tokens'; export * from './models'; -export * from './DeviceId'; -export * from './Devices'; + export interface DiscoveryMessage { token: Uint8Array; diff --git a/types/player.ts b/types/player.ts index 7ccb99f..88529a8 100644 --- a/types/player.ts +++ b/types/player.ts @@ -1,10 +1,11 @@ +import { DeviceId } from "../devices/DeviceId"; export interface PlayerStatus { address: string; artist: string; currentBpm: number deck: string; - deviceId: string; + deviceId: DeviceId; externalMixerVolume: number; fileLocation: string; hasTrackData: boolean; From 1958a34479964abd972bb5e95899e5c15841c108 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 22 Mar 2023 23:06:59 -0400 Subject: [PATCH 070/146] cleanup --- Databases/Sources.ts | 22 +++++--- StageLinq/index.ts | 19 +------ cli/index.ts | 118 +++++++++++++++++++-------------------- devices/DeviceId.ts | 48 ---------------- devices/Devices.ts | 2 - network/Discovery.ts | 8 +-- services/BeatInfo.ts | 32 +++++------ services/FileTransfer.ts | 4 +- services/Service.ts | 3 - services/StateMap.ts | 19 ------- services/TimeSync.ts | 9 +-- 11 files changed, 96 insertions(+), 188 deletions(-) diff --git a/Databases/Sources.ts b/Databases/Sources.ts index 32a7c93..005b280 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -1,12 +1,11 @@ import { EventEmitter } from 'events'; -//import * as Services from '../services'; import { Source} from '../types'; import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; +import { Logger } from '../LogEmitter'; export declare interface Sources { - //on(event: 'newSource', listener: (device: Device) => void): this; - //on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; + on(event: 'newSource', listener: (source: Source) => void): this; } export class Sources extends EventEmitter { @@ -37,9 +36,18 @@ export class Sources extends EventEmitter { getSources(): Source[] { return [...this._sources.values()] } - -// getSourcesArray() { -// return this._sources.entries() -// } + + async downloadFile(source: Source, path: string): Promise { + const service = source.service; + await service.isAvailable(); + + try { + const file = await service.getFile(path,service.socket); + return file; + } catch (err) { + Logger.error(err); + throw new Error(err); + } + } } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 4a31024..dc67850 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,13 +1,13 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage, Source} from '../types'; +import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage} from '../types'; import {Devices, DeviceId} from '../devices' import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Status } from '../status/Status'; import { Server } from 'net'; -import { assert } from 'console'; + const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, @@ -147,18 +147,5 @@ export class StageLinq extends EventEmitter { } } - async downloadFile(source: Source, path: string): Promise { - - const service = source.service; - assert(service); - await service.isAvailable(); - - try { - const file = await service.getFile(path,service.socket); - return file; - } catch (err) { - Logger.error(err); - throw new Error(err); - } - } + } \ No newline at end of file diff --git a/cli/index.ts b/cli/index.ts index 31aa84e..d922c51 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -32,10 +32,8 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: } try { const _source = stageLinq.sources.getSource(sourceName, deviceId); - //const dbPath = stageLinq.databases.getDbPath(status.dbSourceName) const connection = _source.database.connection; const result = await connection.getTrackInfo(trackName); - //connection.close(); console.log('Database entry:', result); return result; } catch(e) { @@ -50,7 +48,7 @@ async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: } try { const _source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.downloadFile(_source, path); + const data = await stageLinq.sources.downloadFile(_source, path); if (dest && data) { const filePath = `${dest}/${path.split('/').pop()}` @@ -108,9 +106,6 @@ async function main() { // }); - //stageLinq.status.on() - - stageLinq.devices.on('newDevice', (device) =>{ console.log(`DEVICES New Device ${device.deviceId.string}`) }); @@ -119,20 +114,18 @@ async function main() { console.log(`DEVICES New ${service.name} Service on ${device.deviceId.string}`) }); + if (stageLinq.stateMap) { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - if (data.message.json) { //console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); - if (data.message.json.string && data.message.name.split('/').pop() === "TrackNetworkPath") { + if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); - } - } }); stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { @@ -150,35 +143,34 @@ async function main() { console.log(`STATUS Track Loaded ${status.deviceId.string}`); console.dir(status); - // if (stageLinq.options.downloadDbSources && downloadFlag) { - // getTrackInfo(stageLinq, status); - // } + // if (stageLinq.options.downloadDbSources ) { + // getTrackInfo(stageLinq, status); + // } - // // Example of how to download the actual track from the media. + // Example of how to download the actual track from the media. - // if (downloadFlag) { - // const filename = [status.title,'.mp3'].join(''); - // while (!stageLinq.hasSource(status.dbSourceName)) { - // await sleep(250); - // } - // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); - // } - + // // if (downloadFlag) { + // const filename = [status.title,'.mp3'].join(''); + // while (!stageLinq.sources.hasSource(status.dbSourceName, status.deviceId)) { + // await sleep(250); + // } + // //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); + // await downloadFile(stageLinq, filename, status.deviceId, path, Path.resolve(os.tmpdir())); + // //} + }); stageLinq.status.on('nowPlaying', async (status) => { console.log(`STATUS Now Playing ${status.deviceId.string}`); console.dir(status); - }); stageLinq.status.on('stateChanged', async (status) => { console.log(`STATUS State Changed ${status.deviceId.string}`); console.dir(status); - }); - } + if (stageLinq.fileTransfer) { stageLinq.fileTransfer.on('fileTransferProgress', (file, txid, progress) => { @@ -197,46 +189,48 @@ async function main() { } + if (stageLinq.beatInfo) { - stageLinq.beatInfo.on('newBeatInfoDevice', (beatInfo: Services.BeatInfo) => { - - // User callback function. - // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: ServiceMessage, ) { - let deckBeatString = "" - for (let i=0; i { - // if (bd.message) { - // beatCallback(bd); - // } - // }); - }) - + // User Options + const beatOptions = { + // Resolution for triggering callback + // 0 = every message WARNING, it's a lot! + // 1 = every beat + // 4 = every 4 beats + // .25 = every 1/4 beat + everyNBeats: 1, + } + // User callback function. + // Will be triggered everytime a player's beat counter crosses the resolution threshold + function beatCallback(bd: ServiceMessage, ) { + let deckBeatString = "" + for (let i=0; i { + + //// callback is optional, BeatInfo messages can be consumed by: + // - user callback + // - event messages + // - TODO reading the register + const useBeatInfoCallBack = false; + + if (useBeatInfoCallBack) { + beatInfo.startBeatInfo(beatOptions, beatCallback); + } else { + beatInfo.startBeatInfo(beatOptions); + stageLinq.beatInfo.on('beatMsg', (bd) => { + if (bd.message) { + beatCallback(bd); + } + }); + } + }) } diff --git a/devices/DeviceId.ts b/devices/DeviceId.ts index 52ddee5..d6975e0 100644 --- a/devices/DeviceId.ts +++ b/devices/DeviceId.ts @@ -1,9 +1,3 @@ -//import { ConnectionInfo } from "./index"; - -// export interface DiscoveryDevice extends ConnectionInfo { -// deviceId: DeviceId; -// } - class InvalidDeviceIdError extends Error { constructor(m?: string) { @@ -57,7 +51,6 @@ export class DeviceId { .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) .splice(1) .join('-') as string; - //return toStr(deviceId) as string } throw new Error(`Hell froze over: deviceId is not a string or Uint8Array`); @@ -76,44 +69,3 @@ export class DeviceId { export function deviceIdFromBuff(token: Uint8Array): string { return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i.exec(Buffer.from(token).toString('hex')).splice(1).join('-'); } - -/* -Saving incase this is a better way to type DeviceIds -type OptionalRecord = Record | undefined - -type Uuid = string & { __uuidBrand: T } - -type Product = { - id: Uuid - name: string -} - -type ProductId = Product['id'] - -function uuid(value: string) { - return value as Uuid -} - -function productId(value: string) { - return uuid(value) -} - -function funcWithProductIdArg(productId: ProductId) { - // do something - return productId -} - -//const concreteProductId = productId('123e4567-e89b-12d3-a456-426614174000') - -// compiles - -//funcWithProductIdArg(concreteProductId) - -// Argument of type 'string' is not assignable to parameter of type 'ProductId'. -// Type 'string' is not assignable to type '{ __uuidBrand: Product; }'.(2345) -// -// * @ts-expect-error Not a ProductId. - -//funcWithProductIdArg('123e4567-e89b-12d3-a456-426614174000') - -*/ diff --git a/devices/Devices.ts b/devices/Devices.ts index d561c07..8c0acee 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -89,6 +89,4 @@ export class Device extends EventEmitter { deleteService(serviceName: string) { this.services.delete(serviceName) } - - } \ No newline at end of file diff --git a/network/Discovery.ts b/network/Discovery.ts index ce06001..1e0ab59 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -16,7 +16,7 @@ export interface DiscoveryMessageOptions { name: string; version: string; source: string; - token: Uint8Array; //TODO make this DeviceId? + token: Uint8Array; port?: number }; @@ -39,7 +39,6 @@ export class Discovery { constructor(_parent: InstanceType) { this.parent = _parent; - } public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { @@ -98,11 +97,9 @@ export class Discovery { } const ips = this.findBroadcastIPs() - const address = ips.filter(ip => { return ip.contains(this.address) === true }); - this.broadcastAddress = address.shift().broadcastAddress const msg = this.writeDiscoveryMessage(discoveryMessage) @@ -115,8 +112,7 @@ export class Discovery { assert(this.announceTimer); clearInterval(this.announceTimer); this.announceTimer = null; - - let discoveryMessage = this.createDiscoveryMessage(Action.Logout, this.options); + const discoveryMessage = this.createDiscoveryMessage(Action.Logout, this.options); const msg = this.writeDiscoveryMessage(discoveryMessage) await this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index f6295c0..7fa3878 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -105,22 +105,22 @@ export class BeatInfo extends Service { } protected messageHandler(p_data: ServiceMessage): void { - if (p_data && p_data.message) { - function resCheck(res: number, prevBeat: number, currentBeat: number ): boolean { - if (res === 0) { - return true - } - return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) - || ( Math.floor(prevBeat/res) - Math.floor(currentBeat/res) >= 1) - } - + + function resCheck(res: number, prevBeat: number, currentBeat: number ): boolean { + if (res === 0) { + return true + } + return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) + || ( Math.floor(prevBeat/res) - Math.floor(currentBeat/res) >= 1) + } + + if (p_data && p_data.message) { if (!this._currentBeatData) { - this._currentBeatData = p_data.message - if (this._userBeatCallback) { - this._userBeatCallback(p_data); - + this._currentBeatData = p_data.message; + this.emit('beatMessage', p_data); + if (this._userBeatCallback) { + this._userBeatCallback(p_data); } - this.emit('beatMessage', p_data) } let hasUpdated = false; @@ -136,10 +136,10 @@ export class BeatInfo extends Service { if (hasUpdated) { this._currentBeatData = p_data.message; - if (this._userBeatCallback) { + this.emit('beatMessage', p_data.message); + if (this._userBeatCallback) { this._userBeatCallback(p_data); } - this.emit('beatMessage', p_data.message) } } } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 90bdeb9..01abcb5 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -286,8 +286,8 @@ export class FileTransfer extends Service { bytesDownloaded: bytesDownloaded, percentComplete: percentComplete }) - //Logger.info(`sizeleft ${this.receivedFile.sizeLeft()} total ${txinfo.size} total ${total}`); - //Logger.info(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); + Logger.silly(`sizeleft ${this.receivedFile.sizeLeft()} total ${txinfo.size} total ${total}`); + Logger.silly(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } Logger.info(`Download complete.`); diff --git a/services/Service.ts b/services/Service.ts index bf6797b..1f0b913 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -93,8 +93,6 @@ export abstract class Service extends EventEmitter { protected isBufferedService: boolean = true; protected parent: InstanceType; protected _handler: ServiceHandler = null; - - protected timeout: NodeJS.Timer; private messageBuffer: Buffer = null; @@ -118,7 +116,6 @@ export abstract class Service extends EventEmitter { if (this.name !== "Directory") { const handler = this._handler as ServiceHandler; - handler.emit('connection', this.name, this.deviceId) if (this.deviceId) { handler.addDevice(this.deviceId, this) diff --git a/services/StateMap.ts b/services/StateMap.ts index 9ddd765..1b31963 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -188,24 +188,6 @@ export class StateMap extends Service { assert.fail(`Unhandled type ${type}`); } - // private deckMessageAdapter(data: ServiceMessage): ServiceMessage { - // const handler = this._handler as Services.StateMapHandler - // const deckHandlerMsgs = handler.deviceTrackRegister.entries(); - // let returnMsg: ServiceMessage = {...data} - - // for (let [oldValue, newValue] of deckHandlerMsgs) { - // const oldValueArr = oldValue.split(',') - // //const testString = `${this.deviceId.string}${data?.message?.name.substring(0,oldValue.length)}` - // //console.warn(testString, oldValue) - // if (oldValueArr[0] == this.deviceId.string && data?.message?.name.substring(0,oldValueArr[1].length) == oldValueArr[1]) { - // //if (testString == oldValue) { - // returnMsg.message.name = `${newValue},${data.message.name.substring(oldValueArr[1].length, data.message.name.length)}` - // } - // } - - // return returnMsg - // } - private mixerAssignmentAdapter(data: ServiceMessage) { const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; @@ -221,7 +203,6 @@ export class StateMap extends Service { if (p_data?.message?.interval) { } else { - //this.emit('stateMessage', this.deckMessageAdapter(p_data)); this.emit('stateMessage', p_data); } diff --git a/services/TimeSync.ts b/services/TimeSync.ts index a403d43..3798ed8 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -16,9 +16,6 @@ export interface TimeSyncData { timestamp: bigint, } -// export declare interface TimeSync { -// //on(event: 'message', listener: (message: TimeSyncData) => void): this; -// } export class TimeSynchronizationHandler extends ServiceHandler { public name: string = 'TimeSync' @@ -28,7 +25,6 @@ export class TimeSynchronizationHandler extends ServiceHandler { service.on('newDevice', ( _service: InstanceType) => { Logger.debug(`New TimeSync Device ${service.deviceId.string}`) - //this.emit('newDevice', service); _service.sendTimeSyncRequest(); }) } @@ -36,12 +32,11 @@ export class TimeSynchronizationHandler extends ServiceHandler { export class TimeSynchronization extends Service { public readonly name = "TimeSynchronization" - protected isBufferedService: boolean = false; + protected readonly isBufferedService: boolean = false; private localTime: bigint; private remoteTime: bigint; private avgTimeArray: bigint[] = []; - //private queryTimer: NodeJS.Timer; - + public async sendTimeSyncRequest() { const ctx = new WriteContext(); From 537d18236711423244a485058082a502481fbf5b Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 22 Mar 2023 23:23:58 -0400 Subject: [PATCH 071/146] Prettification --- Databases/Databases.ts | 18 ++--- Databases/DbConnection.ts | 12 +-- Databases/Sources.ts | 30 +++---- StageLinq/index.ts | 34 ++++---- cli/index.ts | 162 +++++++++++++++++++------------------- devices/Devices.ts | 38 ++++----- network/Discovery.ts | 92 +++++++++++----------- services/BeatInfo.ts | 98 +++++++++++------------ services/Directory.ts | 58 +++++++------- services/FileTransfer.ts | 22 +++--- services/Service.ts | 82 +++++++++---------- services/StateMap.ts | 63 ++++++++------- services/TimeSync.ts | 72 ++++++++--------- status/Player.ts | 32 ++++---- status/Status.ts | 14 ++-- utils/ReadContext.ts | 8 +- utils/WriteContext.ts | 2 +- 17 files changed, 418 insertions(+), 419 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index b0e643d..160da2b 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -11,7 +11,7 @@ import { FileTransferProgress } from '../services'; export declare interface Databases { on(event: 'dbDownloaded', listener: (source: Source) => void): this; on(event: 'dbDownloading', listener: (sourceName: string, dbPath: string) => void): this; - on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; + on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; } export class Databases extends EventEmitter { @@ -25,11 +25,11 @@ export class Databases extends EventEmitter { /** * Download databases from this network source. */ - + async downloadDb(source: Source) { - + Logger.debug(`downloadDb request for ${source.name}`); - + //const source = this.parent.getSource(sourceName); //let thisTxid: number = 0 @@ -39,13 +39,13 @@ export class Databases extends EventEmitter { Logger.info(`Reading database ${source.deviceId.string}/${source.name}`); //this.emit('dbDownloading', source.name, dbPath); - + source.database.local = { path: dbPath, }; source.database.connection = new DbConnection(dbPath) - // Save database to a file + // Save database to a file //thisTxid = source.service.txid; const file = await source.service.getFile(source.database.location, source.service.socket); Logger.info(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); @@ -56,12 +56,12 @@ export class Databases extends EventEmitter { this.parent.sources.setSource(source); Logger.info(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); - - } + + } // getDbPath(dbSourceName?: string) { // const source = this.parent.sources.getSource(dbSourceName); - + // if (!source.database.size) // throw new Error(`No data sources have been downloaded`); diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 944008b..01c1e61 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -29,14 +29,14 @@ export class DbConnection { async inflate(data: Buffer): Promise { - return new Promise((resolve, reject) =>{ + return new Promise((resolve, reject) => { Inflate(data.slice(4), (err, buffer) => { if (err) { reject(err); } else { resolve(buffer); } - }); + }); }); } @@ -55,12 +55,12 @@ export class DbConnection { //if (/streaming:\/\//.test(trackPath)) { // result = this.querySource('SELECT * FROM Track WHERE uri = (?) LIMIT 1', trackPath); //} else { - result = this.querySource('SELECT * FROM Track WHERE path = (?) LIMIT 1', trackPath); + result = this.querySource('SELECT * FROM Track WHERE path = (?) LIMIT 1', trackPath); //} if (!result) throw new Error(`Could not find track: ${trackPath} in database.`); - result[0].trackData = await this.inflate(result[0].trackData); - result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); - result[0].beatData = await this.inflate(result[0].beatData); + result[0].trackData = await this.inflate(result[0].trackData); + result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); + result[0].beatData = await this.inflate(result[0].beatData); return result[0]; } diff --git a/Databases/Sources.ts b/Databases/Sources.ts index 005b280..4012be4 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -1,21 +1,21 @@ import { EventEmitter } from 'events'; -import { Source} from '../types'; +import { Source } from '../types'; import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; export declare interface Sources { - on(event: 'newSource', listener: (source: Source) => void): this; + on(event: 'newSource', listener: (source: Source) => void): this; } export class Sources extends EventEmitter { - private _sources: Map = new Map(); - public readonly parent: InstanceType; + private _sources: Map = new Map(); + public readonly parent: InstanceType; - constructor(parent: InstanceType) { - super(); - this.parent = parent; - } + constructor(parent: InstanceType) { + super(); + this.parent = parent; + } hasSource(sourceName: string, deviceId: DeviceId): boolean { return this._sources.has(`${sourceName}${deviceId.string}`); @@ -24,30 +24,30 @@ export class Sources extends EventEmitter { getSource(sourceName: string, deviceId: DeviceId): Source { return this._sources.get(`${sourceName}${deviceId.string}`); } - + setSource(source: Source) { this._sources.set(`${source.name}${source.deviceId.string}`, source); } - + getSourceList(): string[] { return [...this._sources.keys()] - } + } getSources(): Source[] { return [...this._sources.values()] } - + async downloadFile(source: Source, path: string): Promise { const service = source.service; await service.isAvailable(); try { - const file = await service.getFile(path,service.socket); + const file = await service.getFile(path, service.socket); return file; } catch (err) { Logger.error(err); throw new Error(err); } - } -} + } +} diff --git a/StageLinq/index.ts b/StageLinq/index.ts index dc67850..4211d7c 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,11 +1,11 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage} from '../types'; -import {Devices, DeviceId} from '../devices' +import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage } from '../types'; +import { Devices, DeviceId } from '../devices' import { Databases, Sources } from '../Databases'; import * as Services from '../services'; -import { Status } from '../status/Status'; +import { Status } from '../status/Status'; import { Server } from 'net'; @@ -20,10 +20,10 @@ export interface ServiceHandlers { } export declare interface StageLinq { - + on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; - on(event: 'stateMessage', listener: ( message: ServiceMessage) => void): this; + on(event: 'stateMessage', listener: (message: ServiceMessage) => void): this; on(event: 'ready', listener: () => void): this; on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; on(event: 'fileProgress', listener: (path: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; @@ -36,11 +36,11 @@ export class StageLinq extends EventEmitter { public options: StageLinqOptions; public services: ServiceHandlers = {}; - + public readonly devices = new Devices(); public readonly logger: Logger = Logger.instance; public readonly discovery: Discovery = new Discovery(this); - + public readonly stateMap: InstanceType = null; public readonly fileTransfer: InstanceType = null; public readonly beatInfo: InstanceType = null; @@ -52,16 +52,16 @@ export class StageLinq extends EventEmitter { private _databases: Databases; private _sources: Sources; private servers: Map = new Map(); - + constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; this._databases = new Databases(this); this._sources = new Sources(this); this.status = new Status(this); - + //TODO make this into factory function? - for (let service of this.options.services) { + for (let service of this.options.services) { switch (service) { case "StateMap": { const stateMap = new Services.StateMapHandler(this, service); @@ -88,7 +88,7 @@ export class StageLinq extends EventEmitter { break; } default: - break; + break; } } } @@ -102,7 +102,7 @@ export class StageLinq extends EventEmitter { return this._sources } - addServer(serverName: string , server: Server) { + addServer(serverName: string, server: Server) { this.servers.set(serverName, server); } @@ -120,14 +120,14 @@ export class StageLinq extends EventEmitter { async connect() { // Initialize Discovery agent await this.discovery.init(this.options.actingAs); - + //Directory is required const directory = new Services.DirectoryHandler(this, Services.Directory.name) this.services[Services.Directory.name] = directory; this.directory = await directory.startServiceListener(Services.Directory, this); - + // Announce myself with Directory port - await this.discovery.announce(this.directory.serverInfo.port); + await this.discovery.announce(this.directory.serverInfo.port); } /** @@ -140,12 +140,12 @@ export class StageLinq extends EventEmitter { for (let [serviceName, server] of servers) { Logger.debug(`Closing ${serviceName} server port ${server.address()}`) server.close; - } + } await this.discovery.unannounce(); } catch (e) { throw new Error(e); } } - + } \ No newline at end of file diff --git a/cli/index.ts b/cli/index.ts index d922c51..0d81d3d 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -18,8 +18,8 @@ function progressBar(size: number, bytes: number, total: number): string { let progressArrary = new Array(size); progressArrary.fill(' '); if (progress) { - - for (let i=0; i { console.error(...args); @@ -106,82 +106,82 @@ async function main() { // }); - stageLinq.devices.on('newDevice', (device) =>{ + stageLinq.devices.on('newDevice', (device) => { console.log(`DEVICES New Device ${device.deviceId.string}`) }); - stageLinq.devices.on('newService', (device, service) =>{ + stageLinq.devices.on('newService', (device, service) => { console.log(`DEVICES New ${service.name} Service on ${device.deviceId.string}`) }); if (stageLinq.stateMap) { - - stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - //console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); - if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { - const split = data.message.json.string.substring(43,data.message.json.string.length).split('/') - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); - downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); - } - }); - - stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { + + stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { + //console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); + if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { + const split = data.message.json.string.substring(43, data.message.json.string.length).split('/') + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); + downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); + } + }); + + stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { console.log(`Subscribing to States on ${service.deviceId.string}`); service.subscribe(); stageLinq.status.addPlayer({ - stateMap: service, - address: service.socket.remoteAddress, - port: service.socket.remotePort, - deviceId: service.deviceId, + stateMap: service, + address: service.socket.remoteAddress, + port: service.socket.remotePort, + deviceId: service.deviceId, }) - }); + }); + + stageLinq.status.on('trackLoaded', async (status) => { + console.log(`STATUS Track Loaded ${status.deviceId.string}`); + console.dir(status); - stageLinq.status.on('trackLoaded', async (status) => { - console.log(`STATUS Track Loaded ${status.deviceId.string}`); - console.dir(status); - // if (stageLinq.options.downloadDbSources ) { // getTrackInfo(stageLinq, status); // } - + // Example of how to download the actual track from the media. - - // // if (downloadFlag) { - // const filename = [status.title,'.mp3'].join(''); - // while (!stageLinq.sources.hasSource(status.dbSourceName, status.deviceId)) { - // await sleep(250); - // } - // //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); - // await downloadFile(stageLinq, filename, status.deviceId, path, Path.resolve(os.tmpdir())); - // //} - - }); - stageLinq.status.on('nowPlaying', async (status) => { - console.log(`STATUS Now Playing ${status.deviceId.string}`); - console.dir(status); - }); - - stageLinq.status.on('stateChanged', async (status) => { - console.log(`STATUS State Changed ${status.deviceId.string}`); - console.dir(status); - }); + + // // if (downloadFlag) { + // const filename = [status.title,'.mp3'].join(''); + // while (!stageLinq.sources.hasSource(status.dbSourceName, status.deviceId)) { + // await sleep(250); + // } + // //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); + // await downloadFile(stageLinq, filename, status.deviceId, path, Path.resolve(os.tmpdir())); + // //} + + }); + stageLinq.status.on('nowPlaying', async (status) => { + console.log(`STATUS Now Playing ${status.deviceId.string}`); + console.dir(status); + }); + + stageLinq.status.on('stateChanged', async (status) => { + console.log(`STATUS State Changed ${status.deviceId.string}`); + console.dir(status); + }); } - + if (stageLinq.fileTransfer) { - + stageLinq.fileTransfer.on('fileTransferProgress', (file, txid, progress) => { - console.debug(`{${txid}} Reading ${file}: ${progressBar(10,progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); + console.debug(`{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); }); stageLinq.fileTransfer.on('dbNewSource', (_source: Source) => { console.log(`New Source Available (${_source.name})`); source.set(_source.name, _source) }); - + stageLinq.databases.on('dbDownloaded', (_source: Source) => { console.log(`New Downloaded Database (${_source.name})`); source.set(_source.name, _source); @@ -199,41 +199,41 @@ async function main() { // 1 = every beat // 4 = every 4 beats // .25 = every 1/4 beat - everyNBeats: 1, + everyNBeats: 1, } // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: ServiceMessage, ) { + function beatCallback(bd: ServiceMessage,) { let deckBeatString = "" - for (let i=0; i { - - //// callback is optional, BeatInfo messages can be consumed by: - // - user callback - // - event messages - // - TODO reading the register - const useBeatInfoCallBack = false; - - if (useBeatInfoCallBack) { - beatInfo.startBeatInfo(beatOptions, beatCallback); - } else { - beatInfo.startBeatInfo(beatOptions); - stageLinq.beatInfo.on('beatMsg', (bd) => { - if (bd.message) { - beatCallback(bd); - } - }); - } + stageLinq.beatInfo.on('newBeatInfoDevice', (beatInfo: Services.BeatInfo) => { + + //// callback is optional, BeatInfo messages can be consumed by: + // - user callback + // - event messages + // - TODO reading the register + const useBeatInfoCallBack = false; + + if (useBeatInfoCallBack) { + beatInfo.startBeatInfo(beatOptions, beatCallback); + } else { + beatInfo.startBeatInfo(beatOptions); + stageLinq.beatInfo.on('beatMsg', (bd) => { + if (bd.message) { + beatCallback(bd); + } + }); + } }) } - + ///////////////////////////////////////////////////////////////////////// // CLI diff --git a/devices/Devices.ts b/devices/Devices.ts index 8c0acee..d04847c 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -1,13 +1,13 @@ import { EventEmitter } from 'events'; import * as Services from '../services'; import { ConnectionInfo } from '../types'; -import { DeviceId} from '../devices' +import { DeviceId } from '../devices' export declare interface Devices { - on(event: 'newDevice', listener: (device: Device) => void): this; - on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; - } + on(event: 'newDevice', listener: (device: Device) => void): this; + on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; +} export class Devices extends EventEmitter { private _devices: Map = new Map(); @@ -25,41 +25,41 @@ export class Devices extends EventEmitter { device(deviceId: string | Uint8Array | DeviceId): Device { if (typeof deviceId == "string") { - return this._devices.get(deviceId) + return this._devices.get(deviceId) } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId return this._devices.get(_deviceId.string) - } + } if (typeof deviceId == "object") { const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string return this._devices.get(deviceString); } } - + hasDevice(deviceId: Uint8Array | string | DeviceId) { if (typeof deviceId == "string") { return this._devices.has(deviceId) - } - if (deviceId instanceof DeviceId) { + } + if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId return this._devices.has(_deviceId.string) - } - if (typeof deviceId == "object"){ + } + if (typeof deviceId == "object") { return this._devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string) + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string) } } - addService(deviceId: DeviceId, service: InstanceType ) { + addService(deviceId: DeviceId, service: InstanceType) { const device = this.device(deviceId.string) - device.addService(service) + device.addService(service) } deleteService(deviceId: DeviceId, serviceName: string) { diff --git a/network/Discovery.ts b/network/Discovery.ts index 1e0ab59..f7c1fef 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,4 @@ -import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, deviceTypes, } from '../types'; +import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, deviceTypes, } from '../types'; import { DeviceId, deviceIdFromBuff } from '../devices' import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; @@ -16,7 +16,7 @@ export interface DiscoveryMessageOptions { name: string; version: string; source: string; - token: Uint8Array; + token: Uint8Array; port?: number }; @@ -25,18 +25,18 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export class Discovery { public parent: InstanceType; - + private socket: Socket; private address: IpAddress; - private broadcastAddress: IpAddress; + private broadcastAddress: IpAddress; private options: DiscoveryMessageOptions = null; - private peers: Map = new Map(); + private peers: Map = new Map(); private deviceId: DeviceId = null - + private announceTimer: NodeJS.Timer; private hasLooped: boolean = false; - + constructor(_parent: InstanceType) { this.parent = _parent; } @@ -44,7 +44,7 @@ export class Discovery { public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { return this.peers.get(deviceId.string); } - + public async setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { this.peers.set(deviceId.string, connectionInfo); } @@ -61,14 +61,14 @@ export class Discovery { return [...this.peers.values()] } - async init(options:DiscoveryMessageOptions) { + async init(options: DiscoveryMessageOptions) { this.options = options; this.deviceId = new DeviceId(options.token) - await this.listenForDevices( (connectionInfo: ConnectionInfo) => { - + await this.listenForDevices((connectionInfo: ConnectionInfo) => { + if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - + const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) @@ -78,20 +78,20 @@ export class Discovery { if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.device(connectionInfo.token).info.port !== connectionInfo.port) { const deviceId = new DeviceId(connectionInfo.token) - + this.peers.set(deviceId.string, connectionInfo); this.parent.devices.device(deviceId.string).info = connectionInfo; Logger.debug(`Updated port for From ${deviceId.string}`) - } + } }); } - + async announce(port: number) { assert(this.socket); this.socket.setBroadcast(true); - - const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); - + + const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); + while (!this.hasLooped) { await sleep(250); } @@ -102,8 +102,8 @@ export class Discovery { }); this.broadcastAddress = address.shift().broadcastAddress const msg = this.writeDiscoveryMessage(discoveryMessage) - - this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress ); + + this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); Logger.debug(`Broadcast Discovery Message ${this.deviceId.string} ${discoveryMessage.source}`); this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } @@ -117,14 +117,14 @@ export class Discovery { await this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); await this.socket.close(); - + Logger.debug("Broadcast Unannounce Message"); } - - + + //////////// PRIVATE METHODS /////////////// - private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress) { + private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress) { socket.send(msg, port, address); } @@ -132,7 +132,7 @@ export class Discovery { * Listen for new devices on the network and callback when a new one is found. * @param callback Callback when new device is discovered. */ - + private async listenForDevices(callback: DeviceDiscoveryCallback) { this.socket = UDPSocket.createSocket('udp4'); this.socket.on('message', (p_announcement: Uint8Array, p_remote: RemoteInfo) => { @@ -158,36 +158,36 @@ export class Discovery { } const connectionInfo: ConnectionInfo = { - token: p_ctx.read(16), - source: p_ctx.readNetworkStringUTF16(), - action: p_ctx.readNetworkStringUTF16(), - software: { - name: p_ctx.readNetworkStringUTF16(), - version: p_ctx.readNetworkStringUTF16(), - }, - port: p_ctx.readUInt16(), - address: p_address, + token: p_ctx.read(16), + source: p_ctx.readNetworkStringUTF16(), + action: p_ctx.readNetworkStringUTF16(), + software: { + name: p_ctx.readNetworkStringUTF16(), + version: p_ctx.readNetworkStringUTF16(), + }, + port: p_ctx.readUInt16(), + address: p_address, }; connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); if (deviceTypes[connectionInfo.software.name]) { connectionInfo.device = deviceTypes[connectionInfo.software.name]; - } - + } + assert(p_ctx.isEOF()); return connectionInfo; } - + private createDiscoveryMessage(action: string, discoveryMessageOptions: DiscoveryMessageOptions, port?: number): DiscoveryMessage { const msg: DiscoveryMessage = { - action: action, - port: port || 0, - software: { - name: discoveryMessageOptions.name, - version: discoveryMessageOptions.version - }, - source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token //TODO make this DeviceId + action: action, + port: port || 0, + software: { + name: discoveryMessageOptions.name, + version: discoveryMessageOptions.version + }, + source: discoveryMessageOptions.source, + token: discoveryMessageOptions.token //TODO make this DeviceId }; return msg; } @@ -216,9 +216,9 @@ export class Discovery { if (entry.family === 'IPv4' && entry.internal === false) { const info = subnet(entry.address, entry.netmask); ips.push(info); - } } } + } return ips; } } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 7fa3878..eccf61a 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -15,8 +15,8 @@ type BeatOptions = { interface deckBeatData { beat: number; - totalBeats: number; - BPM: number; + totalBeats: number; + BPM: number; samples?: number; } export interface BeatData { @@ -28,48 +28,48 @@ export interface BeatData { export declare interface BeatInfoHandler { on(event: 'newBeatInfoDevice', listener: (device: Service) => void): this; on(event: 'beatMsg', listener: (beatData: ServiceMessage, device: Service) => void): this; - } +} export class BeatInfoHandler extends ServiceHandler { public name: string = 'BeatInfo' - + public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); const beatInfo = service as BeatInfo; this.addDevice(deviceId, service); - - beatInfo.server.on("connection", () =>{ + + beatInfo.server.on("connection", () => { this.emit('newBeatInfoDevice', beatInfo) - }); + }); beatInfo.on('beatMessage', (message: ServiceMessage) => { this.emit('beatMsg', message, beatInfo) }) } - } +} export declare interface BeatInfo { - on(event: 'beatMessage', listener: (message: ServiceMessage) => void): this; - } + on(event: 'beatMessage', listener: (message: ServiceMessage) => void): this; +} export class BeatInfo extends Service { - public readonly name = "BeatInfo"; + public readonly name = "BeatInfo"; private _userBeatCallback: beatCallback = null; private _userBeatOptions: BeatOptions = null; - private _currentBeatData: BeatData = null; - + private _currentBeatData: BeatData = null; + public async startBeatInfo(options: BeatOptions, beatCB?: beatCallback,) { if (beatCB) { this._userBeatCallback = beatCB; } - this._userBeatOptions = options; - this.sendBeatInfoRequest(this.socket); + this._userBeatOptions = options; + this.sendBeatInfoRequest(this.socket); } private async sendBeatInfoRequest(socket: Socket) { const ctx = new WriteContext(); - ctx.write(new Uint8Array([0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0])) + ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0])) await this.write(ctx, socket); } @@ -79,15 +79,15 @@ export class BeatInfo extends Service { const clock = p_ctx.readUInt64(); const deckCount = p_ctx.readUInt32(); let deck: deckBeatData[] = []; - for (let i=0; i { } protected messageHandler(p_data: ServiceMessage): void { - - function resCheck(res: number, prevBeat: number, currentBeat: number ): boolean { + + function resCheck(res: number, prevBeat: number, currentBeat: number): boolean { if (res === 0) { return true - } - return ( Math.floor(currentBeat/res) - Math.floor(prevBeat/res) >= 1) - || ( Math.floor(prevBeat/res) - Math.floor(currentBeat/res) >= 1) + } + return (Math.floor(currentBeat / res) - Math.floor(prevBeat / res) >= 1) + || (Math.floor(prevBeat / res) - Math.floor(currentBeat / res) >= 1) } if (p_data && p_data.message) { - if (!this._currentBeatData) { - this._currentBeatData = p_data.message; - this.emit('beatMessage', p_data); + if (!this._currentBeatData) { + this._currentBeatData = p_data.message; + this.emit('beatMessage', p_data); if (this._userBeatCallback) { - this._userBeatCallback(p_data); + this._userBeatCallback(p_data); } - } - - let hasUpdated = false; - - for (let i = 0; i { + + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) return - } + } } \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 99ef83d..46c8ade 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -18,7 +18,7 @@ export interface DirectoryData { export class DirectoryHandler extends ServiceHandler { public name: string = "Directory" - + public setupService(service: Service) { Logger.debug(`Setting up ${service.name}`); } @@ -26,7 +26,7 @@ export class DirectoryHandler extends ServiceHandler { export class Directory extends Service { public readonly name = 'Directory'; - + protected readonly isBufferedService = false; protected timeAlive: number; @@ -47,7 +47,7 @@ export class Directory extends Service { const id = ctx.readUInt32(); const token = ctx.read(16); this.deviceId = new DeviceId(token); - + const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); switch (id) { @@ -91,44 +91,44 @@ export class Directory extends Service { assert(directoryMsg); } - private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { + private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); if (!this.parent.devices.hasDevice(deviceId)) { - await sleep(250); + await sleep(250); } let services: InstanceType[] = [] for (const serviceName of Object.keys(this.parent.services)) { - const device = this.parent.devices.device(deviceId.string); + const device = this.parent.devices.device(deviceId.string); if (device && !!deviceTypes[device.info?.software?.name]) { - switch (serviceName) { - case 'FileTransfer': { - const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); - services.push(fileTransfer); - break; - } - case 'StateMap': { - const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); - services.push(stateMap); - break; - } - case 'BeatInfo': { - const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); - services.push(beatInfo); - break; - } - case 'TimeSynchronization': { - const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); - services.push(timeSync); - break; - } - default: - break; + switch (serviceName) { + case 'FileTransfer': { + const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); + services.push(fileTransfer); + break; + } + case 'StateMap': { + const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); + services.push(stateMap); + break; } + case 'BeatInfo': { + const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); + services.push(beatInfo); + break; + } + case 'TimeSynchronization': { + const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); + services.push(timeSync); + break; + } + default: + break; } + } } for (const service of services) { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 01abcb5..0786630 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -58,7 +58,7 @@ export class FileTransferHandler extends ServiceHandler { export class FileTransfer extends Service { public name: string = "FileTransfer"; - + private receivedFile: WriteContext = null; private _isAvailable: boolean = true; private txId: number = 1; @@ -67,9 +67,9 @@ export class FileTransfer extends Service { public get txid() { return this.txId; } - - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) return @@ -85,12 +85,12 @@ export class FileTransfer extends Service { const txId = p_ctx.readUInt32(); const messageId: MessageId = p_ctx.readUInt32(); - + switch (messageId) { case MessageId.RequestSources: { assert(p_ctx.readUInt32() === 0x0) assert(p_ctx.isEOF()); - + return { id: MessageId.RequestSources, deviceId: this.deviceId, @@ -181,7 +181,7 @@ export class FileTransfer extends Service { const chunksize = p_ctx.readUInt32(); assert(chunksize === p_ctx.sizeLeft()); assert(p_ctx.sizeLeft() <= CHUNK_SIZE); - + return { id: messageId, deviceId: this.deviceId, @@ -208,7 +208,7 @@ export class FileTransfer extends Service { } case MessageId.DeviceShutdown: { - // This message seems to be sent from connected devices when shutdown is started + // This message seems to be sent from connected devices when shutdown is started if (p_ctx.sizeLeft() > 0) { const msg = p_ctx.readRemainingAsNewBuffer().toString('hex'); Logger.debug(msg) @@ -280,7 +280,7 @@ export class FileTransfer extends Service { while (this.receivedFile.isEOF() === false) { const bytesDownloaded = total - this.receivedFile.sizeLeft(); const percentComplete = (bytesDownloaded / total) * 100; - this.emit('fileTransferProgress', p_location.split('/').pop(), this.txId,{ + this.emit('fileTransferProgress', p_location.split('/').pop(), this.txId, { sizeLeft: this.receivedFile.sizeLeft(), total: txinfo.size, bytesDownloaded: bytesDownloaded, @@ -300,7 +300,7 @@ export class FileTransfer extends Service { Logger.error(msg); throw new Error(msg); } - + Logger.debug(`Signaling transfer complete.`); await this.signalTransferComplete(socket); this.txId++ @@ -336,7 +336,7 @@ export class FileTransfer extends Service { device: this.deviceId.string, } }, - + } this.emit('dbNewSource', thisSource); this.parent.sources.setSource(thisSource); @@ -351,7 +351,7 @@ export class FileTransfer extends Service { } - + /////////////////////////////////////////////////////////////////////////// diff --git a/services/Service.ts b/services/Service.ts index 1f0b913..b69e999 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -5,7 +5,7 @@ import { DeviceId, Device } from '../devices' import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; -import {Server, Socket, AddressInfo} from 'net'; +import { Server, Socket, AddressInfo } from 'net'; import * as net from 'net'; import type { ServiceMessage } from '../types'; import { StageLinq } from '../StageLinq'; @@ -22,9 +22,9 @@ export abstract class ServiceHandler extends EventEmitter { public name: string; protected parent: InstanceType; private _devices: Map> = new Map(); - - constructor(p_parent:InstanceType, serviceName: string) { + + constructor(p_parent: InstanceType, serviceName: string) { super(); this.parent = p_parent; this.name = serviceName; @@ -35,7 +35,7 @@ export abstract class ServiceHandler extends EventEmitter { return this._devices.has(deviceId.string) } - getDevice(deviceId: DeviceId): Service { + getDevice(deviceId: DeviceId): Service { return this._devices.get(deviceId.string); } @@ -52,9 +52,9 @@ export abstract class ServiceHandler extends EventEmitter { } async startServiceListener>(ctor: { - new (_parent: InstanceType, _serviceHandler?: any, _deviceId?: DeviceId): T; - }, parent?: InstanceType, deviceId?: DeviceId): Promise { - + new(_parent: InstanceType, _serviceHandler?: any, _deviceId?: DeviceId): T; + }, parent?: InstanceType, deviceId?: DeviceId): Promise { + const service = new ctor(parent, this, deviceId); await service.listen(); if (deviceId) { @@ -89,31 +89,31 @@ export abstract class Service extends EventEmitter { //TODO figure out removing this second DeviceId protected _deviceId: DeviceId = null; - + protected isBufferedService: boolean = true; protected parent: InstanceType; protected _handler: ServiceHandler = null; protected timeout: NodeJS.Timer; private messageBuffer: Buffer = null; - - constructor(p_parent:InstanceType, serviceHandler: InstanceType , deviceId?: DeviceId) { + + constructor(p_parent: InstanceType, serviceHandler: InstanceType, deviceId?: DeviceId) { super(); this.parent = p_parent; this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; this.device = (deviceId ? this.parent.devices.device(deviceId) : null); } - + async createServer(): Promise { return await new Promise((resolve, reject) => { - - const server = net.createServer( (socket) => { - + + const server = net.createServer((socket) => { + Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) clearTimeout(this.timeout); this.socket = socket; - + if (this.name !== "Directory") { const handler = this._handler as ServiceHandler; handler.emit('connection', this.name, this.deviceId) @@ -125,7 +125,7 @@ export abstract class Service extends EventEmitter { socket.on('error', (err) => { reject(err); }); - + socket.on('data', async p_data => { await this.dataHandler(p_data, socket) }); @@ -135,7 +135,7 @@ export abstract class Service extends EventEmitter { this.serverInfo = server.address() as net.AddressInfo; this.server = server; Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); - if (this.deviceId){ + if (this.deviceId) { Logger.silly(`started timer for ${this.name} for ${this.deviceId}`) this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent, this._handler); }; @@ -148,21 +148,21 @@ export abstract class Service extends EventEmitter { const server = await this.createServer() return server.address() as AddressInfo; } - + closeServer() { assert(this.server); try { this.server.close(); } catch (e) { Logger.error('Error closing server', e); - } + } } private async dataHandler(p_data: Buffer, socket: Socket) { // Concantenate messageBuffer with current data let buffer: Buffer = null; - if ( this.messageBuffer && this.messageBuffer.length > 0) { + if (this.messageBuffer && this.messageBuffer.length > 0) { buffer = Buffer.concat([this.messageBuffer, p_data]); } else { buffer = p_data; @@ -173,42 +173,42 @@ export abstract class Service extends EventEmitter { const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); - + // Notes on isBufferedService // some simple services (Directory, TimeSync, others..) // might receive data the is hard to parse with the buffer. // if isBufferedService is false, we send this data immediately to parse. if (!this.isBufferedService) { - const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(),false), socket); + const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(), false), socket); this.messageHandler(parsedData); }; - + // Check if device has announced itself to this service yet // Basically, we only want to handle first msg sent to non-directory services - if (!this._deviceId && ctx.sizeLeft() >= 20) { - + if (!this._deviceId && ctx.sizeLeft() >= 20) { + const messageId = ctx.readUInt32(); this._deviceId = new DeviceId(ctx.read(16)); - + //peak at network string length then rewind and read string const stringLength = ctx.readUInt32(); ctx.seek(-4); - (assert (stringLength <= ctx.sizeLeft())); + (assert(stringLength <= ctx.sizeLeft())); const serviceName = ctx.readNetworkStringUTF16(); - + //make sure reading port won't overrun buffer - (assert (ctx.sizeLeft() >= 2)); + (assert(ctx.sizeLeft() >= 2)); ctx.readUInt16(); //read port, though we don't need it - + Logger.silent(`${MessageId[messageId]} to ${serviceName} from ${this.deviceId.string}`); if (this.device) { this.device.parent.emit('newService', this.device, this) } const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); this.messageHandler(parsedData); - } - + } + try { while (ctx.isEOF() === false) { if (ctx.sizeLeft() < 4) { @@ -217,17 +217,17 @@ export abstract class Service extends EventEmitter { } const length = ctx.readUInt32(); - if ( length <= ctx.sizeLeft()) { - + if (length <= ctx.sizeLeft()) { + const message = ctx.read(length); if (!message) { Logger.warn(message) } // Use slice to get an actual copy of the message instead of working on the shared underlying ArrayBuffer const data = message.buffer.slice(message.byteOffset, message.byteOffset + length); - const parsedData = this.parseData(new ReadContext(data,false), socket); + const parsedData = this.parseData(new ReadContext(data, false), socket); this.messageHandler(parsedData); - + } else { ctx.seek(-4); // Rewind 4 bytes to include the length again this.messageBuffer = ctx.readRemainingAsNewBuffer(); @@ -273,22 +273,22 @@ export abstract class Service extends EventEmitter { // callback for timeout timer protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); - + await server.close(); - + const serverName = `${serviceName}${deviceId.string}`; parent.deleteServer(serverName); - + await handler.deleteDevice(deviceId); assert(!handler.hasDevice(deviceId)); - + const service = parent.services[serviceName] parent.devices.deleteService(deviceId, serviceName); await service.deleteDevice(deviceId); assert(!service.hasDevice(deviceId)); } - protected abstract parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; + protected abstract parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; protected abstract parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage; diff --git a/services/StateMap.ts b/services/StateMap.ts index 1b31963..57bc6b9 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -30,12 +30,12 @@ function stateReducer(obj: any, prefix: string): string[] { const playerStateValues = stateReducer(stagelinqConfig.player, '/'); const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); -const controllerStateValues = [...playerStateValues, ...mixerStateValues]; +const controllerStateValues = [...playerStateValues, ...mixerStateValues]; -export type StateMapDevice = InstanceType +export type StateMapDevice = InstanceType export interface StateData { - service: InstanceType + service: InstanceType name?: string; json?: { type: number; @@ -63,9 +63,9 @@ export class StateMapHandler extends ServiceHandler { stateMap.addListener('stateMessage', listener) - stateMap.on('newDevice', ( service: InstanceType) => { + stateMap.on('newDevice', (service: InstanceType) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) - this.emit('newDevice', service); + this.emit('newDevice', service); assert(service); }) } @@ -75,7 +75,7 @@ export class StateMap extends Service { public readonly name = "StateMap"; public readonly handler: StateMapHandler; - constructor(p_parent:InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { + constructor(p_parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(p_parent, serviceHandler, deviceId) this.handler = this._handler as StateMapHandler } @@ -95,12 +95,12 @@ export class StateMap extends Service { await this.subscribeState(state, 0, socket); } let playerDeckStateValues: string[] = []; - for (let i=0; i< thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; - } + for (let i = 0; i < thisPeer.device.decks; i++) { + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; + } for (let state of playerDeckStateValues) { - const stateValue = `${this.deviceId.string},/${state.split('/').slice(1,3).join("/")}` - const newValue = `{${this.deviceId}},${state.split('/').slice(2,3).shift().substring(4,5)}` + const stateValue = `${this.deviceId.string},/${state.split('/').slice(1, 3).join("/")}` + const newValue = `{${this.deviceId}},${state.split('/').slice(2, 3).shift().substring(4, 5)}` this.handler.deviceTrackRegister.set(stateValue, newValue); await this.subscribeState(state, 0, socket); } @@ -111,9 +111,9 @@ export class StateMap extends Service { await this.subscribeState(state, 0, socket); } let playerDeckStateValues: string[] = []; - for (let i=0; i< thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i+1}/`)]; - } + for (let i = 0; i < thisPeer.device.decks; i++) { + playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; + } for (let state of playerDeckStateValues) { await this.subscribeState(state, 0, socket); } @@ -125,12 +125,12 @@ export class StateMap extends Service { } break; } - default: - break; + default: + break; } } - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) sleep(500) assert(socket); @@ -158,12 +158,12 @@ export class StateMap extends Service { deviceId: this.deviceId, socket: socket, message: { - name: name, + name: name, service: this, json: json, }, }; - } catch(err) { + } catch (err) { Logger.error(this.name, jsonString, err); } } @@ -182,41 +182,40 @@ export class StateMap extends Service { }, }; } - default: - break; + default: + break; } assert.fail(`Unhandled type ${type}`); } private mixerAssignmentAdapter(data: ServiceMessage) { - const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length-1,data.message.name.length)}faderPosition` + const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length - 1, data.message.name.length)}faderPosition` const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; this.handler.deviceTrackRegister.set(keyString, valueString); } protected messageHandler(p_data: ServiceMessage): void { //TODO do we need to emit intervals? - if (p_data?.message?.name.substring(0,p_data?.message?.name?.length-1) == "/Mixer/ChannelAssignment") { + if (p_data?.message?.name.substring(0, p_data?.message?.name?.length - 1) == "/Mixer/ChannelAssignment") { this.mixerAssignmentAdapter(p_data); } - + if (p_data?.message?.interval) { - + } else { this.emit('stateMessage', p_data); } - if (p_data && p_data.message.json) { + if (p_data && p_data.message.json) { Logger.silly( - `${p_data.deviceId.string} ${p_data.message.name} => ${ - p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval - }` - ); + `${p_data.deviceId.string} ${p_data.message.name} => ${p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval + }` + ); } } private async subscribeState(p_state: string, p_interval: number, socket: Socket) { - + const getMessage = function (): Buffer { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); @@ -227,7 +226,7 @@ export class StateMap extends Service { }; const message = getMessage(); - + const ctx = new WriteContext(); ctx.writeUInt32(message.length); ctx.write(message) diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 3798ed8..a7e1c9f 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -12,7 +12,7 @@ const { performance } = require('perf_hooks'); export interface TimeSyncData { - msgs: bigint[], + msgs: bigint[], timestamp: bigint, } @@ -22,42 +22,42 @@ export class TimeSynchronizationHandler extends ServiceHandler { public setupService(service: TimeSynchronization, deviceId: DeviceId) { console.log(`Setting up ${service.name} for ${deviceId.string}`); - - service.on('newDevice', ( _service: InstanceType) => { + + service.on('newDevice', (_service: InstanceType) => { Logger.debug(`New TimeSync Device ${service.deviceId.string}`) _service.sendTimeSyncRequest(); - }) + }) } } export class TimeSynchronization extends Service { - public readonly name = "TimeSynchronization" + public readonly name = "TimeSynchronization" protected readonly isBufferedService: boolean = false; private localTime: bigint; private remoteTime: bigint; private avgTimeArray: bigint[] = []; - public async sendTimeSyncRequest() { - const ctx = new WriteContext(); - ctx.write(new Uint8Array([0x0,0x0,0x0,0x0])); + public async sendTimeSyncRequest() { + const ctx = new WriteContext(); + ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x0])); ctx.write(Tokens.Listen); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); - await this.write(ctx, this.socket); - } + await this.write(ctx, this.socket); + } private timeSyncMsgHelper(msgId: number, msgs: bigint[]): Buffer { const getMessage = function (): Buffer { const ctx = new WriteContext(); - ctx.writeUInt32(msgId); + ctx.writeUInt32(msgId); while (msgs.length) { ctx.writeUInt64(msgs.shift()) } return ctx.getBuffer() } const message = getMessage(); - + const ctx = new WriteContext(); ctx.writeUInt32(message.length); ctx.write(message); @@ -71,12 +71,12 @@ export class TimeSynchronization extends Service { private sendTimeSyncQuery(localTime: bigint, remoteTime: bigint) { this.localTime = localTime; - const buffMsg = this.timeSyncMsgHelper(1,[this.localTime]); + const buffMsg = this.timeSyncMsgHelper(1, [this.localTime]); const ctx = new WriteContext() ctx.write(buffMsg) this.remoteTime = remoteTime; this.write(ctx, this.socket); - }; + }; // private async sendTimeSyncReply(interval: bigint, timeReceived: bigint): Promise { // const buffMsg = this.timeSyncMsgHelper(2,[interval,timeReceived]); @@ -85,10 +85,10 @@ export class TimeSynchronization extends Service { // await this.write(ctx, this.socket); // }; - protected parseData(p_ctx: ReadContext): ServiceMessage { - const timestamp = this.getTimeStamp(); + protected parseData(p_ctx: ReadContext): ServiceMessage { + const timestamp = this.getTimeStamp(); const size = p_ctx.readUInt32(); - + if (size === 0) { const token = p_ctx.read(16); const deviceId = new DeviceId(token) @@ -97,7 +97,7 @@ export class TimeSynchronization extends Service { console.log(deviceId.string, svcName, svcPort) } else { const id = p_ctx.readUInt32(); - const msgs: bigint[] = [] + const msgs: bigint[] = [] while (p_ctx.sizeLeft()) { msgs.push(p_ctx.readUInt64()) }; @@ -108,10 +108,10 @@ export class TimeSynchronization extends Service { message: { msgs: msgs, timestamp: timestamp, - } + } } } - } + } private timeAvg(time: bigint) { if (this.avgTimeArray.length > 100) { @@ -123,33 +123,33 @@ export class TimeSynchronization extends Service { } else { this.avgTimeArray.push(time); } - } + } - protected messageHandler(msg: ServiceMessage): void { + protected messageHandler(msg: ServiceMessage): void { if (!msg?.message) { return } switch (msg.id) { case 1: - this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); - break; + this.sendTimeSyncQuery(msg.message.timestamp, msg.message.msgs.shift()); + break; case 2: - Logger.silly(msg.message) - const localClock = msg.message.timestamp - msg.message.msgs[0] - const remoteClock = msg.message.msgs[1] - this.remoteTime - Logger.silly(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) + Logger.silly(msg.message) + const localClock = msg.message.timestamp - msg.message.msgs[0] + const remoteClock = msg.message.msgs[1] - this.remoteTime + Logger.silly(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) this.timeAvg(remoteClock) - break; + break; default: - break; - } + break; + } } - protected parseServiceData(messageId:number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - assert((socket)); - Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { + assert((socket)); + Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) this.emit('newDevice', this) - return - } + return + } } diff --git a/status/Player.ts b/status/Player.ts index 05fdb92..34a937e 100644 --- a/status/Player.ts +++ b/status/Player.ts @@ -51,7 +51,7 @@ export class Player extends EventEmitter { private masterStatus: boolean; // If this device has the matser tempo private decks: Map = new Map(); private lastTrackNetworkPath: Map = new Map(); - private queue: {[layer: string]: PlayerMessageQueue} = {}; + private queue: { [layer: string]: PlayerMessageQueue } = {}; private deviceId: DeviceId; public readonly ready: boolean = false; @@ -93,7 +93,7 @@ export class Player extends EventEmitter { const json = message.json as any; //check if message is for this Player - if(data.deviceId.string !== this.deviceId.string) return; + if (data.deviceId.string !== this.deviceId.string) return; if (/Client\/Preferences\/Player$/.test(name)) { this.player = parseInt(json.string); @@ -112,27 +112,27 @@ export class Player extends EventEmitter { const deck = (/PlayerJogColor[A-D]$/.test(name)) ? split[3].replace('PlayerJogColor', '') - : (/Engine\/Deck\d\//.test(name)) ? this.deckNumberToLayer(split[2]) - : null; + : (/Engine\/Deck\d\//.test(name)) ? this.deckNumberToLayer(split[2]) + : null; const cueData = - (/PlayState$/.test(name)) ? { playState: json.state } - : (/Track\/TrackNetworkPath$/.test(name)) ? { + (/PlayState$/.test(name)) ? { playState: json.state } + : (/Track\/TrackNetworkPath$/.test(name)) ? { trackNetworkPath: json.string, source: this.getSourceAndTrackPath(json.string).source, trackPath: this.getSourceAndTrackPath(json.string).trackPath, trackPathAbsolute: this.getSourceAndTrackPath(json.string).trackPathAbsolute } - : (/Track\/SongLoaded$/.test(name)) ? { songLoaded: json.state } - : (/Track\/SongName$/.test(name)) ? { title: json.string } - : (/Track\/ArtistName$/.test(name)) ? { artist: json.string } - : (/Track\/TrackData$/.test(name)) ? { hasTrackData: json.state } - : (/Track\/TrackName$/.test(name)) ? { fileLocation: json.string } - : (/CurrentBPM$/.test(name)) ? { currentBpm: json.value } - : (/ExternalMixerVolume$/.test(name)) ? { externalMixerVolume: json.value } - : (/Play$/.test(name)) ? { play: json.state } - : (/PlayerJogColor[A-D]$/.test(name)) ? { jogColor: json.color } - : null; + : (/Track\/SongLoaded$/.test(name)) ? { songLoaded: json.state } + : (/Track\/SongName$/.test(name)) ? { title: json.string } + : (/Track\/ArtistName$/.test(name)) ? { artist: json.string } + : (/Track\/TrackData$/.test(name)) ? { hasTrackData: json.state } + : (/Track\/TrackName$/.test(name)) ? { fileLocation: json.string } + : (/CurrentBPM$/.test(name)) ? { currentBpm: json.value } + : (/ExternalMixerVolume$/.test(name)) ? { externalMixerVolume: json.value } + : (/Play$/.test(name)) ? { play: json.state } + : (/PlayerJogColor[A-D]$/.test(name)) ? { jogColor: json.color } + : null; if (cueData) { this.queue[deck].push({ layer: deck, ...cueData }); diff --git a/status/Status.ts b/status/Status.ts index e58707c..8242391 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,15 +1,15 @@ import EventEmitter = require("events"); import { StageLinq } from '../StageLinq'; -import { Player, PlayerOptions } from '../status/Player'; -import { PlayerStatus } from '../types'; -import { DeviceId} from '../devices' +import { Player, PlayerOptions } from '../status/Player'; +import { PlayerStatus } from '../types'; +import { DeviceId } from '../devices' export declare interface Status { on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; - } +} export interface StatusData extends PlayerStatus { deviceId: DeviceId @@ -27,13 +27,13 @@ export class Status extends EventEmitter { addPlayer(options: PlayerOptions) { const player = new Player(options) this._players.set(options.deviceId.string, player); - player.on("nowPlaying", (status) =>{ + player.on("nowPlaying", (status) => { this.emit("nowPlaying", status); }) - player.on("stateChanged", (status) =>{ + player.on("stateChanged", (status) => { this.emit("stateChanged", status); }) - player.on("trackLoaded", (status) =>{ + player.on("trackLoaded", (status) => { this.emit("trackLoaded", status); }) } diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index 917655d..12481e1 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -33,17 +33,17 @@ export class ReadContext extends Context { const newArrayBuffer = view.buffer.slice(view.byteOffset, view.byteOffset + view.length); return Buffer.from(newArrayBuffer); } - + readRemainingAsNewArrayBuffer(): ArrayBuffer { const view = this.readRemaining(); const newArrayBuffer = view.buffer.slice(view.byteOffset, view.byteOffset + view.length); return newArrayBuffer; } - + readRemainingAsNewCtx(): ReadContext { - + const newArrayBuffer = this.buffer.slice(this.pos, this.pos + this.sizeLeft()); - return new ReadContext(newArrayBuffer,false); + return new ReadContext(newArrayBuffer, false); } getString(p_bytes: number): string { diff --git a/utils/WriteContext.ts b/utils/WriteContext.ts index eac797e..8f3360d 100644 --- a/utils/WriteContext.ts +++ b/utils/WriteContext.ts @@ -88,7 +88,7 @@ export class WriteContext extends Context { this.pos += 4; return 4; } - + writeInt32(p_value: number): number { this.checkSize(4); new DataView(this.buffer).setInt32(this.pos, p_value, this.littleEndian); From 136f5e7b041374d6ecce67839db4e7c509440bd4 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 22 Mar 2023 23:40:56 -0400 Subject: [PATCH 072/146] remove legacy modules --- network-path-prototype.patch | 181 ----------------------------------- services/Service.ts | 15 +-- utils/hex.ts | 62 ------------ utils/index.ts | 3 +- utils/tcp.ts | 66 ------------- 5 files changed, 6 insertions(+), 321 deletions(-) delete mode 100644 network-path-prototype.patch delete mode 100644 utils/hex.ts delete mode 100644 utils/tcp.ts diff --git a/network-path-prototype.patch b/network-path-prototype.patch deleted file mode 100644 index 2d47b7c..0000000 --- a/network-path-prototype.patch +++ /dev/null @@ -1,181 +0,0 @@ -diff --git a/Databases/Databases.ts b/Databases/Databases.ts -index 10e0cba..4248e1e 100644 ---- a/Databases/Databases.ts -+++ b/Databases/Databases.ts -@@ -25,7 +25,11 @@ export class Databases extends EventEmitter { - const sources = await service.getSources(); - const output: string[] = []; - for (const source of sources) { -- const dbConnectionName = `${connectionInfo.address}_${connectionInfo.port}_${source.name}`; -+ const deviceId = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i -+ .exec(Buffer.from(connectionInfo.token).toString('hex')).splice(1).join('-'); -+ -+ const dbConnectionName = `net://${deviceId}/${source.name}`; -+ Logger.debug(`DB network path: net://${deviceId}/${source.name}`) - if (this.sources.has(dbConnectionName)) { - Logger.debug(`Already seen ${source} on ${connectionInfo.address}:${connectionInfo.port}`); - } else { -diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts -index 24ebd3a..6294024 100644 ---- a/Databases/DbConnection.ts -+++ b/Databases/DbConnection.ts -@@ -20,7 +20,7 @@ export class DbConnection { - * @returns - */ - querySource(query: string, ...params: any[]): T[] { -- console.debug(`Querying ${this.dbPath}: `); -+ console.debug(`Querying ${this.dbPath}: ${query}`); - const result = this.db.prepare(query); - return result.all(params); - } -@@ -32,7 +32,7 @@ export class DbConnection { - * @returns - */ - getTrackInfo(trackPath: string) { -- return this.querySource(`SELECT * FROM Track WHERE path = '${trackPath}'`); -+ return this.querySource(`SELECT * FROM Track WHERE path = ?`, trackPath); - } - - close() { -diff --git a/cli/index.ts b/cli/index.ts -index 8f532ca..5649037 100644 ---- a/cli/index.ts -+++ b/cli/index.ts -@@ -96,7 +96,7 @@ require('console-stamp')(console, { - // Example of how to download the actual track from the media. - try { - const tempfile = path.resolve(os.tmpdir(), 'media'); -- const data = await stageLinq.devices.downloadFile(status.address, status.trackPathAbsolute); -+ const data = await stageLinq.devices.downloadFile(status.deviceId, status.trackPathAbsolute); - if (data) { - fs.writeFileSync(tempfile, Buffer.from(data)); - console.log(`Downloaded ${status.trackPathAbsolute} to ${tempfile}`); -diff --git a/devices/Player.ts b/devices/Player.ts -index 64f0db0..c6193ca 100644 ---- a/devices/Player.ts -+++ b/devices/Player.ts -@@ -13,8 +13,9 @@ export declare interface Player { - - interface PlayerOptions { - stateMap: StateMap; -- address: string, -+ address: string; - port: number; -+ deviceId: string; - } - - interface SourceAndTrackPath { -@@ -48,6 +49,7 @@ export class Player extends EventEmitter { - private masterStatus: boolean; // If this device has the matser tempo - private decks: Map = new Map(); - private queue: {[layer: string]: PlayerMessageQueue} = {}; -+ private deviceId: string; - - /** - * Initialize a player device. -@@ -60,6 +62,8 @@ export class Player extends EventEmitter { - options.stateMap.on('message', this.messageHandler.bind(this)); - this.address = options.address; - this.port = options.port; -+ this.deviceId = options.deviceId; -+ - this.queue = { - A: new PlayerMessageQueue('A').onDataReady(this.handleUpdate.bind(this)), - B: new PlayerMessageQueue('B').onDataReady(this.handleUpdate.bind(this)), -@@ -150,22 +154,27 @@ export class Player extends EventEmitter { - port: this.port, - masterTempo: this.masterTempo, - masterStatus: this.masterStatus, -+ deviceId: `net://${this.deviceId}`, - ...result - }; - - // We're casting here because we originally built it up piecemeal. - const currentState = output as PlayerStatus; - -- if (/Unknown/.test(currentState.source)) { -+ if (currentState.trackNetworkPath && currentState.trackNetworkPath.startsWith('net:')) { -+ const pathParts = currentState.trackNetworkPath.split('net://')[1].split('/', 2) -+ currentState.dbSourceName = `net://${pathParts[0]}/${pathParts[1]}`; -+ currentState.deviceId = `net://${pathParts[0]}`; -+ } else if (!currentState.source || /Unknown/.test(currentState.source)) { - // Tracks from streaming sources won't be in the database. - currentState.dbSourceName = ''; - } else { -- currentState.dbSourceName = currentState.source -- ? `${this.address}_${this.port}_${currentState.source}` : ''; -+ currentState.dbSourceName = `net://${this.deviceId}/${currentState.source}`; - } - - // If a song is loaded and we have a location emit the trackLoaded event. -- if (songLoadedSignalPresent && currentState.trackNetworkPath) -+ // -+ if (/* songLoadedSignalPresent && */ currentState.trackNetworkPath) - this.emit('trackLoaded', currentState); - - // If the song is actually playing emit the nowPlaying event. -diff --git a/network/StageLinqDevices.ts b/network/StageLinqDevices.ts -index 949619a..6bdce8b 100644 ---- a/network/StageLinqDevices.ts -+++ b/network/StageLinqDevices.ts -@@ -106,8 +106,8 @@ export class StageLinqDevices extends EventEmitter { - return this._databases; - } - -- async downloadFile(ipAddress: string, path: string) { -- const device = this.devices.get(ipAddress); -+ async downloadFile(deviceId: string, path: string) { -+ const device = this.devices.get(deviceId); - const file = await device.fileTransferService.getFile(path); - return file; - } -@@ -123,10 +123,12 @@ export class StageLinqDevices extends EventEmitter { - const networkDevice = new NetworkDevice(connectionInfo); - await networkDevice.connect(); - -+ const deviceId = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i -+ .exec(Buffer.from(connectionInfo.token).toString('hex')).splice(1).join('-'); - Logger.info(`Successfully connected to ${this.deviceId(connectionInfo)}`); - const fileTransfer = await networkDevice.connectToService(FileTransfer); - -- this.devices.set(connectionInfo.address, { -+ this.devices.set(`net://${deviceId}`, { - networkDevice: networkDevice, - fileTransferService: fileTransfer - }); -@@ -146,7 +148,8 @@ export class StageLinqDevices extends EventEmitter { - const player = new Player({ - stateMap: stateMap, - address: connectionInfo.address, -- port: connectionInfo.port -+ port: connectionInfo.port, -+ deviceId - }); - - player.on('trackLoaded', (status) => { -diff --git a/types/player.ts b/types/player.ts -index f672c6d..188d36e 100644 ---- a/types/player.ts -+++ b/types/player.ts -@@ -1,6 +1,7 @@ - - export interface PlayerStatus { - address: string; -+ deviceId: string; - artist: string; - currentBpm: number - deck: string; -diff --git a/utils/getTempFilePath.ts b/utils/getTempFilePath.ts -index c0d8bca..d737fe5 100644 ---- a/utils/getTempFilePath.ts -+++ b/utils/getTempFilePath.ts -@@ -9,7 +9,8 @@ import * as path from 'path'; - * @returns Absolute path - */ - export function getTempFilePath(p_path: string) { -- const tmpPath = `/${os.tmpdir()}/localdb/${p_path}`; -+ const tmpPath = `/${os.tmpdir()}/localdb/${p_path}` -+ .replace('net://', ''); - let paths = tmpPath.split(/[/\\]/).filter((e) => e.length > 0); - const isFolder = p_path.endsWith('/') || p_path.endsWith('\\'); - let filename = ''; diff --git a/services/Service.ts b/services/Service.ts index b69e999..31fddee 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -57,20 +57,15 @@ export abstract class ServiceHandler extends EventEmitter { const service = new ctor(parent, this, deviceId); await service.listen(); - if (deviceId) { - this.parent.devices.addService(deviceId, service) - } - - this.setupService(service, deviceId) - + let serverName = `${ctor.name}`; - if (deviceId) { + this.parent.devices.addService(deviceId, service) serverName += deviceId.string; } - + this.setupService(service, deviceId) + this.parent.addServer(serverName, service.server); - return service; } @@ -145,7 +140,7 @@ export abstract class Service extends EventEmitter { } async listen(): Promise { - const server = await this.createServer() + const server = await this.createServer(); return server.address() as AddressInfo; } diff --git a/utils/hex.ts b/utils/hex.ts deleted file mode 100644 index c2bce50..0000000 --- a/utils/hex.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Based on https://www.npmjs.com/package/hex -const zero = function (n: number, max: number) { - let str = n.toString(16).toUpperCase(); - while (str.length < max) { - str = '0' + str; - } - return str; -}; - -export function hex(p_buffer: Uint8Array, p_columns: number = 16) { - const rows = Math.ceil(p_buffer.length / p_columns); - const last = p_buffer.length % p_columns || p_columns; - let offsetLength = p_buffer.length.toString(16).length; - if (offsetLength < 6) offsetLength = 6; - - let str = 'Offset'; - while (str.length < offsetLength) { - str += ' '; - } - - str = '\u001b[36m' + str + ' '; - - for (let i = 0; i < p_columns; i++) { - str += ' ' + zero(i, 2); - } - - str += '\u001b[0m'; - if (p_buffer.length) str += '\n'; - - let b = 0; - let lastBytes: number; - let lastSpaces: number; - let v: number; - - for (let i = 0; i < rows; i++) { - str += '\u001b[36m' + zero(b, offsetLength) + '\u001b[0m '; - lastBytes = i === rows - 1 ? last : p_columns; - lastSpaces = p_columns - lastBytes; - - for (let j = 0; j < lastBytes; j++) { - str += ' ' + zero(p_buffer[b], 2); - b++; - } - - for (let j = 0; j < lastSpaces; j++) { - str += ' '; - } - - b -= lastBytes; - str += ' '; - - for (let j = 0; j < lastBytes; j++) { - v = p_buffer[b]; - str += (v > 31 && v < 127) || v > 159 ? String.fromCharCode(v) : '.'; - b++; - } - - str += '\n'; - } - - process.stdout.write(str); -} diff --git a/utils/index.ts b/utils/index.ts index 2d77101..53b1559 100644 --- a/utils/index.ts +++ b/utils/index.ts @@ -1,6 +1,5 @@ export * from './Context'; export * from './getTempFilePath'; -export * from './hex'; export * from './ReadContext'; -export * from './sleep'; export * from './WriteContext'; +export * from './sleep'; diff --git a/utils/tcp.ts b/utils/tcp.ts deleted file mode 100644 index fa2a406..0000000 --- a/utils/tcp.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* -import { Socket as TCPSocket} from 'net'; -import * as net from 'net'; -import { PromiseSocket } from 'promise-socket'; -import { CONNECT_TIMEOUT } from '../types'; -import { Logger } from '../LogEmitter'; - -export type Connection = PromiseSocket; - -export async function connect(p_ip: string, p_port: number): Promise { - const socket = new TCPSocket(); - socket.setTimeout(CONNECT_TIMEOUT); - const promiseSocket = new PromiseSocket(socket); - await promiseSocket.connect(p_port, p_ip).catch((e) => { - throw new Error(`Failed to connect to '${p_ip}:${p_port}': ${e}`); - }); - Logger.debug(`TCP connection to '${p_ip}:${p_port}' local port: ${promiseSocket.socket.localPort}`); - return promiseSocket; -} -*/ - -/* - export async function createServer(p_name: string): Promise { - return await new Promise((resolve, reject) => { - const server = new net.Server; - server.listen(); - server.on('error', err =>{ - reject(err) - }) - server.on('connection', socket =>{ - resolve(socket) - }) - }); - } -*/ -/* - export async function createServer(p_name: string): Promise { - return await new Promise((resolve, reject) => { - const server = new TCPServer(); - server.((socket) => { - socket.on('error', (err) => { - reject(err); - }); - socket.on('data', async data => { - //console.log(`Received data on ${serviceName}!!`) - const ctx = new ReadContext(data.buffer, false); - const id = ctx.readUInt32(); - //ctx.rewind(); - const buff = ctx.readRemaining(); - - console.log(serviceName, MessageId[id], buff) - //this.newMessageHandler(data, serviceName); - }); - - }).listen(0, '0.0.0.0', () => { - const { address, port } = server.address() as net.AddressInfo; - - this.subConnection[serviceName] = { - socket: server, - port: port - } - resolve(server); - }); - }); - } -*/ \ No newline at end of file From f7ef8130f1cb1a6adf0bc3441de5e197230aab84 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 23 Mar 2023 00:52:13 -0400 Subject: [PATCH 073/146] Add typedoc --- .gitignore | 1 + package-lock.json | 190 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 3 files changed, 192 insertions(+) diff --git a/.gitignore b/.gitignore index 9827b2b..ca91068 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /localdb /dist +/docs .clinic/ # Logs diff --git a/package-lock.json b/package-lock.json index 0548df5..6377aab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@types/minimist": "^1.2.2", "@types/node": "^16.4.0", "prettier": "^2.5.1", + "typedoc": "^0.23.28", "typescript": "^4.6.2" } }, @@ -92,6 +93,12 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -120,6 +127,12 @@ "readable-stream": "^2.0.6" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -180,6 +193,15 @@ "node": ">= 6" } }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -448,6 +470,12 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -459,6 +487,24 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -470,6 +516,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", + "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -719,6 +780,18 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "node_modules/shiki": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", + "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -905,6 +978,27 @@ "node": "*" } }, + "node_modules/typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, "node_modules/typescript": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", @@ -923,6 +1017,18 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -1004,6 +1110,12 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1026,6 +1138,12 @@ "readable-stream": "^2.0.6" } }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1070,6 +1188,15 @@ } } }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1259,6 +1386,12 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1267,11 +1400,32 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, "mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" }, + "minimatch": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", + "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -1464,6 +1618,18 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "shiki": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", + "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "dev": true, + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -1589,6 +1755,18 @@ "safe-buffer": "^5.0.1" } }, + "typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "requires": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + } + }, "typescript": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", @@ -1600,6 +1778,18 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", diff --git a/package.json b/package.json index 19120c8..fa8bfd7 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@types/minimist": "^1.2.2", "@types/node": "^16.4.0", "prettier": "^2.5.1", + "typedoc": "^0.23.28", "typescript": "^4.6.2" } } From 0d4bcb5558ee40646a4c68989286ba60d524169f Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 23 Mar 2023 00:52:50 -0400 Subject: [PATCH 074/146] removed redundant serivces[] calls --- Databases/Databases.ts | 10 +--------- Databases/Sources.ts | 20 ++++++++++++++++---- StageLinq/index.ts | 19 ++++--------------- cli/index.ts | 3 +++ network/Discovery.ts | 11 +++++++---- services/Service.ts | 2 +- 6 files changed, 32 insertions(+), 33 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 160da2b..279b3bc 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -29,16 +29,8 @@ export class Databases extends EventEmitter { async downloadDb(source: Source) { Logger.debug(`downloadDb request for ${source.name}`); - - //const source = this.parent.getSource(sourceName); - - //let thisTxid: number = 0 - const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); - - Logger.info(`Reading database ${source.deviceId.string}/${source.name}`); - //this.emit('dbDownloading', source.name, dbPath); - + Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); source.database.local = { path: dbPath, diff --git a/Databases/Sources.ts b/Databases/Sources.ts index 4012be4..c1b140b 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -17,22 +17,34 @@ export class Sources extends EventEmitter { this.parent = parent; } + /** + * + * @param {string} sourceName - Name of source in EngineOS, eg: 'DJ STICK (USB 1)' + * @param {DeviceId} deviceId - DeviceID instance + * @returns boolean + */ hasSource(sourceName: string, deviceId: DeviceId): boolean { return this._sources.has(`${sourceName}${deviceId.string}`); } + /** + * + * @param sourceName Name of source in EngineOS, eg: 'DJ STICK (USB 1)' + * @param deviceId DeviceID instance + * @returns Source + */ getSource(sourceName: string, deviceId: DeviceId): Source { return this._sources.get(`${sourceName}${deviceId.string}`); } + /** + * Add a new Source + * @param source + */ setSource(source: Source) { this._sources.set(`${source.name}${source.deviceId.string}`, source); } - getSourceList(): string[] { - return [...this._sources.keys()] - } - getSources(): Source[] { return [...this._sources.values()] } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 4211d7c..9cb4b56 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -64,27 +64,19 @@ export class StageLinq extends EventEmitter { for (let service of this.options.services) { switch (service) { case "StateMap": { - const stateMap = new Services.StateMapHandler(this, service); - this.services[service] = stateMap - this.stateMap = stateMap + this.stateMap = new Services.StateMapHandler(this, service); break; } case "FileTransfer": { - const fileTransfer = new Services.FileTransferHandler(this, service); - this.services[service] = fileTransfer; - this.fileTransfer = fileTransfer; + this.fileTransfer = new Services.FileTransferHandler(this, service); break; } case "BeatInfo": { - const beatInfo = new Services.BeatInfoHandler(this, service); - this.services[service] = beatInfo; - this.beatInfo = beatInfo; + this.beatInfo = new Services.BeatInfoHandler(this, service); break; } case "TimeSynchronization": { - const timeSync = new Services.TimeSynchronizationHandler(this, service); - this.services[service] = timeSync; - this.timeSync = timeSync; + this.timeSync = new Services.TimeSynchronizationHandler(this, service); break; } default: @@ -123,7 +115,6 @@ export class StageLinq extends EventEmitter { //Directory is required const directory = new Services.DirectoryHandler(this, Services.Directory.name) - this.services[Services.Directory.name] = directory; this.directory = await directory.startServiceListener(Services.Directory, this); // Announce myself with Directory port @@ -146,6 +137,4 @@ export class StageLinq extends EventEmitter { throw new Error(e); } } - - } \ No newline at end of file diff --git a/cli/index.ts b/cli/index.ts index 0d81d3d..f674961 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -180,11 +180,14 @@ async function main() { stageLinq.fileTransfer.on('dbNewSource', (_source: Source) => { console.log(`New Source Available (${_source.name})`); source.set(_source.name, _source) + }); stageLinq.databases.on('dbDownloaded', (_source: Source) => { console.log(`New Downloaded Database (${_source.name})`); source.set(_source.name, _source); + const sources = stageLinq.sources.getSources(); + console.dir(sources); }); } diff --git a/network/Discovery.ts b/network/Discovery.ts index f7c1fef..300e739 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -3,9 +3,8 @@ import { DeviceId, deviceIdFromBuff } from '../devices' import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; -import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; -import { sleep, WriteContext } from '../utils'; +import { sleep, WriteContext, ReadContext } from '../utils'; import { networkInterfaces } from 'os'; import { subnet, SubnetInfo } from 'ip'; import { Logger } from '../LogEmitter'; @@ -37,8 +36,12 @@ export class Discovery { private announceTimer: NodeJS.Timer; private hasLooped: boolean = false; - constructor(_parent: InstanceType) { - this.parent = _parent; + /** + * @constructor + * @param parent StageLinq Instance + */ + constructor(parent: InstanceType) { + this.parent = parent; } public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { diff --git a/services/Service.ts b/services/Service.ts index 31fddee..75cd5b9 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -69,7 +69,7 @@ export abstract class ServiceHandler extends EventEmitter { return service; } - protected abstract setupService(service: InstanceType, deviceId?: DeviceId): void; + protected abstract setupService(service: any, deviceId?: DeviceId): void; } From ddadada6b0b3c7951ecf39b43b35d1affafa3197 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 27 Mar 2023 16:15:32 -0400 Subject: [PATCH 075/146] Small syntax change for inflate --- Databases/DbConnection.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 01c1e61..74e6cd2 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -1,7 +1,7 @@ import Database = require('better-sqlite3'); import { Track } from '../types'; import { Logger } from '../LogEmitter'; -import { inflate as Inflate } from 'zlib' +import { inflate } from 'zlib' export class DbConnection { @@ -28,9 +28,9 @@ export class DbConnection { } - async inflate(data: Buffer): Promise { + async zInflate(data: Buffer): Promise { return new Promise((resolve, reject) => { - Inflate(data.slice(4), (err, buffer) => { + inflate(data.slice(4), (err, buffer) => { if (err) { reject(err); } else { @@ -58,9 +58,9 @@ export class DbConnection { result = this.querySource('SELECT * FROM Track WHERE path = (?) LIMIT 1', trackPath); //} if (!result) throw new Error(`Could not find track: ${trackPath} in database.`); - result[0].trackData = await this.inflate(result[0].trackData); - result[0].overviewWaveFormData = await this.inflate(result[0].overviewWaveFormData); - result[0].beatData = await this.inflate(result[0].beatData); + result[0].trackData = await this.zInflate(result[0].trackData); + result[0].overviewWaveFormData = await this.zInflate(result[0].overviewWaveFormData); + result[0].beatData = await this.zInflate(result[0].beatData); return result[0]; } From 7c38c604ab619d5d60c011a0ba773f26ce9b6c59 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 27 Mar 2023 16:16:06 -0400 Subject: [PATCH 076/146] Add Beatinfo Register --- services/BeatInfo.ts | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index eccf61a..4607bc1 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -6,6 +6,7 @@ import { Logger } from '../LogEmitter'; import type { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; +import { StageLinq } from '../StageLinq'; type beatCallback = (n: ServiceMessage) => void; @@ -19,6 +20,7 @@ interface deckBeatData { BPM: number; samples?: number; } + export interface BeatData { clock: bigint; deckCount: number; @@ -31,7 +33,16 @@ export declare interface BeatInfoHandler { } export class BeatInfoHandler extends ServiceHandler { - public name: string = 'BeatInfo' + public name: string = 'BeatInfo'; + private _beatregister: Map = new Map(); + + getBeatData(deviceId?: DeviceId): BeatData[] { + return (deviceId? [this._beatregister.get(deviceId.string)] : [...this._beatregister.values()]) + } + + setBeatData(deviceId: DeviceId, data: BeatData) { + this._beatregister.set(deviceId.string, data); + } public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); @@ -53,11 +64,23 @@ export declare interface BeatInfo { export class BeatInfo extends Service { public readonly name = "BeatInfo"; + public readonly handler: BeatInfoHandler; private _userBeatCallback: beatCallback = null; private _userBeatOptions: BeatOptions = null; - private _currentBeatData: BeatData = null; + private _currentBeatData: ServiceMessage = null; + #isBufferedService: boolean = true; + + constructor(p_parent: InstanceType, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { + super(p_parent, serviceHandler, deviceId) + this.handler = this._handler as BeatInfoHandler + } + + getBeatData(): ServiceMessage { + return this._currentBeatData; + } + public async startBeatInfo(options: BeatOptions, beatCB?: beatCallback,) { if (beatCB) { @@ -116,7 +139,8 @@ export class BeatInfo extends Service { if (p_data && p_data.message) { if (!this._currentBeatData) { - this._currentBeatData = p_data.message; + this._currentBeatData = p_data; + this.handler.setBeatData(this.deviceId, p_data.message); this.emit('beatMessage', p_data); if (this._userBeatCallback) { this._userBeatCallback(p_data); @@ -128,19 +152,21 @@ export class BeatInfo extends Service { for (let i = 0; i < p_data.message.deckCount; i++) { if (resCheck( this._userBeatOptions.everyNBeats, - this._currentBeatData.deck[i].beat, + this._currentBeatData.message.deck[i].beat, p_data.message.deck[i].beat)) { hasUpdated = true; } } if (hasUpdated) { - this._currentBeatData = p_data.message; - this.emit('beatMessage', p_data.message); + + this.emit('beatMessage', p_data); if (this._userBeatCallback) { this._userBeatCallback(p_data); } } + this._currentBeatData = p_data; + this.handler.setBeatData(this.deviceId, p_data.message); } } From f9d498b28941f4db1359e5bda92b185fe3ff99a8 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 28 Mar 2023 22:27:18 -0400 Subject: [PATCH 077/146] Small Disc Fixes --- StageLinq/index.ts | 2 + cli/index.ts | 85 +++++--- devices/Devices.ts | 2 +- network/Discovery.ts | 9 +- services/Directory.ts | 23 ++- services/Service.ts | 22 +- services/StateMap.ts | 184 +++++++++++++++-- status/Player.ts | 2 +- types/common.ts | 455 +++++++++++++++++++++--------------------- utils/ReadContext.ts | 12 ++ 10 files changed, 497 insertions(+), 299 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 9cb4b56..d7f96d7 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -7,6 +7,7 @@ import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Status } from '../status/Status'; import { Server } from 'net'; +import { sleep } from '../utils/sleep'; const DEFAULT_OPTIONS: StageLinqOptions = { @@ -118,6 +119,7 @@ export class StageLinq extends EventEmitter { this.directory = await directory.startServiceListener(Services.Directory, this); // Announce myself with Directory port + //await sleep(1000); await this.discovery.announce(this.directory.serverInfo.port); } diff --git a/cli/index.ts b/cli/index.ts index f674961..849455a 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -34,7 +34,7 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: const _source = stageLinq.sources.getSource(sourceName, deviceId); const connection = _source.database.connection; const result = await connection.getTrackInfo(trackName); - console.log('Database entry:', result); + //console.log('Database entry:', result); return result; } catch (e) { console.error(e); @@ -73,9 +73,9 @@ async function main() { actingAs: ActingAsDevice.NowPlaying, services: [ ServiceList.StateMap, - ServiceList.BeatInfo, - ServiceList.FileTransfer, - ServiceList.TimeSynchronization, + // ServiceList.BeatInfo, + // ServiceList.FileTransfer, + //ServiceList.TimeSynchronization, ], } @@ -118,30 +118,34 @@ async function main() { if (stageLinq.stateMap) { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - //console.debug(`${data.message.name} => ${JSON.stringify(data.message.json)}`); + console.debug(`${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43, data.message.json.string.length).split('/') const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); - downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); + if (stageLinq.fileTransfer) { + const path = `/${sourceName}/${split.join('/')}` + //await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); + downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); + } + } }); stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { console.log(`Subscribing to States on ${service.deviceId.string}`); service.subscribe(); - stageLinq.status.addPlayer({ - stateMap: service, - address: service.socket.remoteAddress, - port: service.socket.remotePort, - deviceId: service.deviceId, - }) + // stageLinq.status.addPlayer({ + // stateMap: service, + // address: service.socket.remoteAddress, + // port: service.socket.remotePort, + // deviceId: service.deviceId, + // }) }); + stageLinq.status.on('trackLoaded', async (status) => { console.log(`STATUS Track Loaded ${status.deviceId.string}`); - console.dir(status); + //console.dir(status); // if (stageLinq.options.downloadDbSources ) { // getTrackInfo(stageLinq, status); @@ -161,12 +165,12 @@ async function main() { }); stageLinq.status.on('nowPlaying', async (status) => { console.log(`STATUS Now Playing ${status.deviceId.string}`); - console.dir(status); + //console.dir(status); }); stageLinq.status.on('stateChanged', async (status) => { console.log(`STATUS State Changed ${status.deviceId.string}`); - console.dir(status); + //console.dir(status); }); } @@ -186,8 +190,8 @@ async function main() { stageLinq.databases.on('dbDownloaded', (_source: Source) => { console.log(`New Downloaded Database (${_source.name})`); source.set(_source.name, _source); - const sources = stageLinq.sources.getSources(); - console.dir(sources); + //const sources = stageLinq.sources.getSources(); + //console.dir(sources); }); } @@ -208,24 +212,33 @@ async function main() { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold function beatCallback(bd: ServiceMessage,) { - let deckBeatString = "" - for (let i = 0; i < bd.message.deckCount; i++) { - deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` - } - console.log(`BEATINFO ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); + let deckBeatString = "" + for (let i = 0; i < bd.message.deckCount; i++) { + deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` + } + console.log(`BEATINFO ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); } - stageLinq.beatInfo.on('newBeatInfoDevice', (beatInfo: Services.BeatInfo) => { - //// callback is optional, BeatInfo messages can be consumed by: // - user callback // - event messages - // - TODO reading the register - const useBeatInfoCallBack = false; + // - reading the register + const beatMethod = { + useCallback: false, + useEvent: true, + useRegister: false, + }; + + + stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: Services.BeatInfo) => { + console.log(`BEATINFO New Device ${beatInfo.deviceId.string}`) - if (useBeatInfoCallBack) { + + if (beatMethod.useCallback) { beatInfo.startBeatInfo(beatOptions, beatCallback); - } else { + } + + if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); stageLinq.beatInfo.on('beatMsg', (bd) => { if (bd.message) { @@ -233,6 +246,18 @@ async function main() { } }); } + + if (beatMethod.useRegister) { + beatInfo.startBeatInfo(beatOptions); + + function beatFunc(beatInfo: Services.BeatInfo) { + const beatData = beatInfo.getBeatData(); + if (beatData) beatCallback(beatData); + } + + setTimeout(beatFunc, 4000, beatInfo) + } + }) } diff --git a/devices/Devices.ts b/devices/Devices.ts index d04847c..a6ead77 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -16,7 +16,7 @@ export class Devices extends EventEmitter { return [...this._devices.entries()] } - addDevice(info: ConnectionInfo): Device { + async addDevice(info: ConnectionInfo): Promise { const device = new Device(info, this); this._devices.set(device.deviceId.string, device) this.emit('newDevice', device) diff --git a/network/Discovery.ts b/network/Discovery.ts index 300e739..6ecb8fd 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -68,11 +68,14 @@ export class Discovery { this.options = options; this.deviceId = new DeviceId(options.token) - await this.listenForDevices((connectionInfo: ConnectionInfo) => { + + + + await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - const device = this.parent.devices.addDevice(connectionInfo); + const device = await this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) } else { @@ -96,7 +99,7 @@ export class Discovery { const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); while (!this.hasLooped) { - await sleep(250); + await sleep(500); } const ips = this.findBroadcastIPs() diff --git a/services/Directory.ts b/services/Directory.ts index 46c8ade..8309ad6 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -43,11 +43,12 @@ export class Directory extends Service { protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { let deviceId: string = ''; - while (ctx.isEOF() === false) { + //while (ctx.isEOF() === false) { const id = ctx.readUInt32(); const token = ctx.read(16); this.deviceId = new DeviceId(token); + //console.log(`${this.name} for ${this.deviceId.string} ${this.parent.discovery.hasConnectionInfo(this.deviceId)}`) const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); switch (id) { @@ -55,9 +56,9 @@ export class Directory extends Service { ctx.seek(16); const timeAlive = ctx.readUInt64(); this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); - if (ctx.isEOF() === false) { - ctx.readRemaining(); - } + // if (ctx.isEOF() === false) { + // ctx.readRemaining(); + // } if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { this.sendTimeStampReply(token, socket); } @@ -68,13 +69,14 @@ export class Directory extends Service { console.warn('received ', service, port); break; case MessageId.ServicesRequest: - ctx.readRemaining(); // + //ctx.readRemaining(); // this.sendServiceAnnouncement(this.deviceId, socket); break; default: assert.fail(`NetworkDevice Unhandled message id '${id}'`); } - } + //} + const directoryMessage: DirectoryData = { deviceId: deviceId, }; @@ -96,7 +98,8 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); if (!this.parent.devices.hasDevice(deviceId)) { - await sleep(250); + await sleep(1000); + console.log(`${this.deviceId} awaiting parent.devices`) } let services: InstanceType[] = [] @@ -128,7 +131,9 @@ export class Directory extends Service { default: break; } - } + } //else { + // services.push(this); + // } } for (const service of services) { @@ -136,7 +141,7 @@ export class Directory extends Service { ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); + //Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); } const msg = ctx.getBuffer(); diff --git a/services/Service.ts b/services/Service.ts index 75cd5b9..324967a 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -153,6 +153,23 @@ export abstract class Service extends EventEmitter { } } + private async subMessageTest(buff: Buffer): Promise { + try { + const msg = buff.readInt32BE(); + const deviceId = buff.slice(4); + //console.warn(msg, deviceId); + if (msg === 0 && deviceId.length === 16) { + //console.warn('true'); + return true + + } else { + return false + } + } catch { + return false + } + } + private async dataHandler(p_data: Buffer, socket: Socket) { // Concantenate messageBuffer with current data @@ -180,7 +197,10 @@ export abstract class Service extends EventEmitter { // Check if device has announced itself to this service yet // Basically, we only want to handle first msg sent to non-directory services - if (!this._deviceId && ctx.sizeLeft() >= 20) { + + + if (await this.subMessageTest(ctx.peek(20))) { + //if (!this._deviceId && ctx.sizeLeft() >= 20) { const messageId = ctx.readUInt32(); this._deviceId = new DeviceId(ctx.read(16)); diff --git a/services/StateMap.ts b/services/StateMap.ts index 57bc6b9..dd239de 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -2,7 +2,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, MessageId } from '../types'; +import { ServiceMessage, MessageId, StageLinqValueObj } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; @@ -17,6 +17,18 @@ export type Mixer = typeof stagelinqConfig.mixer; const MAGIC_MARKER = 'smaa'; // TODO: Is this thing really an interval? + +enum Action { + request = 0x000007d2, + response = 0x00000000, +} + +enum Result { + accept = 0x00000000, + reject = 0xffffffff, + inquire = 0x00000064 +} + const MAGIC_MARKER_INTERVAL = 0x000007d2; const MAGIC_MARKER_JSON = 0x00000000; @@ -28,10 +40,15 @@ function stateReducer(obj: any, prefix: string): string[] { return retArr.flat() } -const playerStateValues = stateReducer(stagelinqConfig.player, '/'); -const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); +// const playerStateValues = stateReducer(stagelinqConfig.player, '/'); +// const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); +// const controllerStateValues = [...playerStateValues, ...mixerStateValues]; + +const playerStateValues = Object.values(StageLinqValueObj.player); +const mixerStateValues = Object.values(StageLinqValueObj.mixer); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; + export type StateMapDevice = InstanceType export interface StateData { @@ -71,9 +88,22 @@ export class StateMapHandler extends ServiceHandler { } } +// interface reducer { +// buffer: Buffer, +// obj: T; +// } + +// class cStateData implements StateData { +// service: +// } + +// function readReducer(buffer: Buffer, obj: , struct: ) + export class StateMap extends Service { public readonly name = "StateMap"; public readonly handler: StateMapHandler; + //#stateValues: Map = new Map(); + #hasReceivedState: boolean = false; constructor(p_parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(p_parent, serviceHandler, deviceId) @@ -89,10 +119,43 @@ export class StateMap extends Service { Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); + + // const states = [ + // '/Engine/Deck1/CurrentBPM', + // '/Engine/Deck2/CurrentBPM', + // '/Engine/Deck3/CurrentBPM', + // '/Engine/Deck4/CurrentBPM', + // '/Mixer/NumberOfChannels', + // '/Mixer/ChannelAssignment1', + // '/Mixer/ChannelAssignment2', + // '/Mixer/ChannelAssignment3', + // '/Mixer/ChannelAssignment4', + // '/Mixer/CH1faderPosition' + // ] + + // for (const [key, value] of Object.entries(StageLinqValueObj)) { + // this.#stateValues.set(value, key); + // console.log(`${key}: ${value}`); + // } + + + + // this.#subscribeStates(Object.values(StageLinqValueObj),100, socket) + + // for (let value of Object.values(StageLinqValueObj)) { + // console.log(value) + // await this.subscribeState(value, 0, socket); + // await sleep(250) + // } + + let stateValueArray: string[] = []; + switch (thisPeer?.device?.type) { case "PLAYER": { for (let state of playerStateValues) { - await this.subscribeState(state, 0, socket); + //await this.subscribeState(state, 0, socket); + + stateValueArray.push(state); } let playerDeckStateValues: string[] = []; for (let i = 0; i < thisPeer.device.decks; i++) { @@ -102,32 +165,42 @@ export class StateMap extends Service { const stateValue = `${this.deviceId.string},/${state.split('/').slice(1, 3).join("/")}` const newValue = `{${this.deviceId}},${state.split('/').slice(2, 3).shift().substring(4, 5)}` this.handler.deviceTrackRegister.set(stateValue, newValue); - await this.subscribeState(state, 0, socket); + //await this.subscribeState(state, 0, socket); + stateValueArray.push(state); } break; } + case "CONTROLLER": { for (let state of controllerStateValues) { - await this.subscribeState(state, 0, socket); + //await this.subscribeState(state, 0, socket); + //this.#stateValues.set + stateValueArray.push(state); } let playerDeckStateValues: string[] = []; for (let i = 0; i < thisPeer.device.decks; i++) { playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; } for (let state of playerDeckStateValues) { - await this.subscribeState(state, 0, socket); + //await this.subscribeState(state, 0, socket); + stateValueArray.push(state); } break; } case "MIXER": { + await sleep(1000); for (let state of mixerStateValues) { await this.subscribeState(state, 0, socket); + //stateValueArray.push(state); } break; } default: break; } + if (stateValueArray.length) { + this.#subscribeStates(stateValueArray,0, socket) + } } protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { @@ -140,11 +213,27 @@ export class StateMap extends Service { protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { assert(this.deviceId); + //const buffer = p_ctx.readRemainingAsNewBuffer(); //new DataView(p_ctx.readRemainingAsNewArrayBuffer()); + + //buffer.byteLength + + //const marker = p_ctx.getString(4); + //const action = p_ctx.read(4) + // const message = p_ctx.read() + // const response = p_ctx.read(4); + // p_ctx.rewind(); + // p_ctx.seek(12); + + // console.warn(`${action} ${response} ${message}`) + const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { Logger.error(assert(marker !== MAGIC_MARKER)); } assert(marker === MAGIC_MARKER); + + + const type = p_ctx.readUInt32(); switch (type) { case MAGIC_MARKER_JSON: { @@ -171,6 +260,9 @@ export class StateMap extends Service { case MAGIC_MARKER_INTERVAL: { const name = p_ctx.readNetworkStringUTF16(); const interval = p_ctx.readInt32(); + p_ctx.seek(-4); + + //console.warn(`${this.deviceId.string} name: ${name} interval: ${interval} last4bytes ${Buffer.from(p_ctx.read(4)).toString('hex')} sizeLeft: ${p_ctx.sizeLeft()}`) return { id: MAGIC_MARKER_INTERVAL, socket: socket, @@ -188,32 +280,56 @@ export class StateMap extends Service { assert.fail(`Unhandled type ${type}`); } - private mixerAssignmentAdapter(data: ServiceMessage) { - const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length - 1, data.message.name.length)}faderPosition` - const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; - this.handler.deviceTrackRegister.set(keyString, valueString); - } + // private mixerAssignmentAdapter(data: ServiceMessage) { + // const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length - 1, data.message.name.length)}faderPosition` + // const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; + // this.handler.deviceTrackRegister.set(keyString, valueString); + // } protected messageHandler(p_data: ServiceMessage): void { //TODO do we need to emit intervals? - if (p_data?.message?.name.substring(0, p_data?.message?.name?.length - 1) == "/Mixer/ChannelAssignment") { - this.mixerAssignmentAdapter(p_data); - } + // if (p_data?.message?.name.substring(0, p_data?.message?.name?.length - 1) == "/Mixer/ChannelAssignment") { + // this.mixerAssignmentAdapter(p_data); + // } if (p_data?.message?.interval) { - - } else { + this.sendStateResponse(p_data.message.name, p_data.socket); + } + if (p_data?.message) { + //this.#stateValues.set(p_data.message.name, "") this.emit('stateMessage', p_data); } - if (p_data && p_data.message.json) { - Logger.silly( + if (p_data && p_data.message.json && !this.#hasReceivedState) { + Logger.silent( `${p_data.deviceId.string} ${p_data.message.name} => ${p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval - }` - ); + }`); + //console.warn(`Received State ${this.deviceId}`); + this.#hasReceivedState = true; } } + + private async sendStateResponse(p_state: string, socket: Socket) { + + const getMessage = function (): Buffer { + const ctx = new WriteContext(); + ctx.writeFixedSizedString(MAGIC_MARKER); + ctx.writeUInt32(Action.response); + ctx.writeNetworkStringUTF16(p_state); + ctx.writeUInt32(Result.reject); + return ctx.getBuffer(); + }; + + const message = getMessage(); + + const ctx = new WriteContext(); + ctx.writeUInt32(message.length); + ctx.write(message) + const buffer = ctx.getBuffer(); + await socket.write(buffer); + } + private async subscribeState(p_state: string, p_interval: number, socket: Socket) { const getMessage = function (): Buffer { @@ -233,4 +349,30 @@ export class StateMap extends Service { const buffer = ctx.getBuffer(); await socket.write(buffer); } + + async #subscribeStates(p_states: string[], p_interval: number, socket: Socket) { + + const getMessage = function (states: string[]): Buffer { + const ctx = new WriteContext(); + for (let state of states) { + ctx.writeFixedSizedString(MAGIC_MARKER); + ctx.writeUInt32(MAGIC_MARKER_INTERVAL); + ctx.writeNetworkStringUTF16(state); + ctx.writeUInt32(p_interval); + } + + return ctx.getBuffer(); + }; + + + + + const message = getMessage(p_states); + + const ctx = new WriteContext(); + ctx.writeUInt32(message.length); + ctx.write(message) + const buffer = ctx.getBuffer(); + await socket.write(buffer); + } } \ No newline at end of file diff --git a/status/Player.ts b/status/Player.ts index 34a937e..8cf4eba 100644 --- a/status/Player.ts +++ b/status/Player.ts @@ -144,7 +144,7 @@ export class Player extends EventEmitter { * @param data */ private handleUpdate(data: PlayerLayerState) { - Logger.debug(`data: ${JSON.stringify(data, null, 2)}`); + Logger.silly(`data: ${JSON.stringify(data, null, 2)}`); const layer = data.layer; diff --git a/types/common.ts b/types/common.ts index c033bdf..fa78e64 100644 --- a/types/common.ts +++ b/types/common.ts @@ -259,238 +259,227 @@ export enum StageLinqValue { } export const StageLinqValueObj = { - ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', - ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', - ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - - - ClientPreferencesLayerA: '/Client/Preferences/LayerA', - ClientPreferencesLayerB: '/Client/Preferences/LayerB', - ClientPreferencesPlayer: '/Client/Preferences/Player', - ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', - ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', - - ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', - ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', - ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', - ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', - ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', - ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', - ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', - ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', - ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', - ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', - ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', - ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', - - ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', - - - - GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', - GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', - - MixerCH1faderPosition: '/Mixer/CH1faderPosition', - MixerCH2faderPosition: '/Mixer/CH2faderPosition', - MixerCH3faderPosition: '/Mixer/CH3faderPosition', - MixerCH4faderPosition: '/Mixer/CH4faderPosition', - MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', - MixerNumberOfChannels: '/Mixer/NumberOfChannels', - MixerChannelAssignment1: '/Mixer/ChannelAssignment1', - MixerChannelAssignment2: '/Mixer/ChannelAssignment2', - MixerChannelAssignment3: '/Mixer/ChannelAssignment3', - MixerChannelAssignment4: '/Mixer/ChannelAssignment4', - - - //ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', - //ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', - - - EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', - EngineMasterMasterTempo: '/Engine/Master/MasterTempo', - - EngineDeckCount: '/Engine/DeckCount', - - EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', - EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', - EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', - EngineDeck1PadsView: '/Engine/Deck1/Pads/View', - EngineDeck1Play: '/Engine/Deck1/Play', - EngineDeck1PlayState: '/Engine/Deck1/PlayState', - EngineDeck1PlayStatePath: '/Engine/Deck1/PlayStatePath', - EngineDeck1Speed: '/Engine/Deck1/Speed', - EngineDeck1SpeedNeutral: '/Engine/Deck1/SpeedNeutral', - EngineDeck1SpeedOffsetDown: '/Engine/Deck1/SpeedOffsetDown', - EngineDeck1SpeedOffsetUp: '/Engine/Deck1/SpeedOffsetUp', - EngineDeck1SpeedRange: '/Engine/Deck1/SpeedRange', - EngineDeck1SpeedState: '/Engine/Deck1/SpeedState', - EngineDeck1SyncMode: '/Engine/Deck1/SyncMode', - EngineDeck1TrackArtistName: '/Engine/Deck1/Track/ArtistName', - EngineDeck1TrackBleep: '/Engine/Deck1/Track/Bleep', - EngineDeck1TrackCuePosition: '/Engine/Deck1/Track/CuePosition', - EngineDeck1TrackCurrentBPM: '/Engine/Deck1/Track/CurrentBPM', - EngineDeck1TrackCurrentKeyIndex: '/Engine/Deck1/Track/CurrentKeyIndex', - EngineDeck1TrackCurrentLoopInPosition: '/Engine/Deck1/Track/CurrentLoopInPosition', - EngineDeck1TrackCurrentLoopOutPosition: '/Engine/Deck1/Track/CurrentLoopOutPosition', - EngineDeck1TrackCurrentLoopSizeInBeats: '/Engine/Deck1/Track/CurrentLoopSizeInBeats', - EngineDeck1TrackKeyLock: '/Engine/Deck1/Track/KeyLock', - EngineDeck1TrackLoopEnableState: '/Engine/Deck1/Track/LoopEnableState', - EngineDeck1TrackLoopQuickLoop1: '/Engine/Deck1/Track/Loop/QuickLoop1', - EngineDeck1TrackLoopQuickLoop2: '/Engine/Deck1/Track/Loop/QuickLoop2', - EngineDeck1TrackLoopQuickLoop3: '/Engine/Deck1/Track/Loop/QuickLoop3', - EngineDeck1TrackLoopQuickLoop4: '/Engine/Deck1/Track/Loop/QuickLoop4', - EngineDeck1TrackLoopQuickLoop5: '/Engine/Deck1/Track/Loop/QuickLoop5', - EngineDeck1TrackLoopQuickLoop6: '/Engine/Deck1/Track/Loop/QuickLoop6', - EngineDeck1TrackLoopQuickLoop7: '/Engine/Deck1/Track/Loop/QuickLoop7', - EngineDeck1TrackLoopQuickLoop8: '/Engine/Deck1/Track/Loop/QuickLoop8', - EngineDeck1TrackPlayPauseLEDState: '/Engine/Deck1/Track/PlayPauseLEDState', - EngineDeck1TrackSampleRate: '/Engine/Deck1/Track/SampleRate', - EngineDeck1TrackSongAnalyzed: '/Engine/Deck1/Track/SongAnalyzed', - EngineDeck1TrackSongLoaded: '/Engine/Deck1/Track/SongLoaded', - EngineDeck1TrackSongName: '/Engine/Deck1/Track/SongName', - EngineDeck1TrackSoundSwitchGUID: '/Engine/Deck1/Track/SoundSwitchGuid', - EngineDeck1TrackTrackBytes: '/Engine/Deck1/Track/TrackBytes', - EngineDeck1TrackTrackData: '/Engine/Deck1/Track/TrackData', - EngineDeck1TrackTrackLength: '/Engine/Deck1/Track/TrackLength', - EngineDeck1TrackTrackName: '/Engine/Deck1/Track/TrackName', - EngineDeck1TrackTrackNetworkPath: '/Engine/Deck1/Track/TrackNetworkPath', - EngineDeck1TrackTrackURI: '/Engine/Deck1/Track/TrackUri', - EngineDeck1TrackTrackWasPlayed: '/Engine/Deck1/Track/TrackWasPlayed', - EngineDeck2CurrentBPM: '/Engine/Deck2/CurrentBPM', - EngineDeck2ExternalMixerVolume: '/Engine/Deck2/ExternalMixerVolume', - EngineDeck2ExternalScratchWheelTouch: '/Engine/Deck2/ExternalScratchWheelTouch', - EngineDeck2PadsView: '/Engine/Deck2/Pads/View', - EngineDeck2Play: '/Engine/Deck2/Play', - EngineDeck2PlayState: '/Engine/Deck2/PlayState', - EngineDeck2PlayStatePath: '/Engine/Deck2/PlayStatePath', - EngineDeck2Speed: '/Engine/Deck2/Speed', - EngineDeck2SpeedNeutral: '/Engine/Deck2/SpeedNeutral', - EngineDeck2SpeedOffsetDown: '/Engine/Deck2/SpeedOffsetDown', - EngineDeck2SpeedOffsetUp: '/Engine/Deck2/SpeedOffsetUp', - EngineDeck2SpeedRange: '/Engine/Deck2/SpeedRange', - EngineDeck2SpeedState: '/Engine/Deck2/SpeedState', - EngineDeck2SyncMode: '/Engine/Deck2/SyncMode', - EngineDeck2TrackArtistName: '/Engine/Deck2/Track/ArtistName', - EngineDeck2TrackBleep: '/Engine/Deck2/Track/Bleep', - EngineDeck2TrackCuePosition: '/Engine/Deck2/Track/CuePosition', - EngineDeck2TrackCurrentBPM: '/Engine/Deck2/Track/CurrentBPM', - EngineDeck2TrackCurrentKeyIndex: '/Engine/Deck2/Track/CurrentKeyIndex', - EngineDeck2TrackCurrentLoopInPosition: '/Engine/Deck2/Track/CurrentLoopInPosition', - EngineDeck2TrackCurrentLoopOutPosition: '/Engine/Deck2/Track/CurrentLoopOutPosition', - EngineDeck2TrackCurrentLoopSizeInBeats: '/Engine/Deck2/Track/CurrentLoopSizeInBeats', - EngineDeck2TrackKeyLock: '/Engine/Deck2/Track/KeyLock', - EngineDeck2TrackLoopEnableState: '/Engine/Deck2/Track/LoopEnableState', - EngineDeck2TrackLoopQuickLoop1: '/Engine/Deck2/Track/Loop/QuickLoop1', - EngineDeck2TrackLoopQuickLoop2: '/Engine/Deck2/Track/Loop/QuickLoop2', - EngineDeck2TrackLoopQuickLoop3: '/Engine/Deck2/Track/Loop/QuickLoop3', - EngineDeck2TrackLoopQuickLoop4: '/Engine/Deck2/Track/Loop/QuickLoop4', - EngineDeck2TrackLoopQuickLoop5: '/Engine/Deck2/Track/Loop/QuickLoop5', - EngineDeck2TrackLoopQuickLoop6: '/Engine/Deck2/Track/Loop/QuickLoop6', - EngineDeck2TrackLoopQuickLoop7: '/Engine/Deck2/Track/Loop/QuickLoop7', - EngineDeck2TrackLoopQuickLoop8: '/Engine/Deck2/Track/Loop/QuickLoop8', - EngineDeck2TrackPlayPauseLEDState: '/Engine/Deck2/Track/PlayPauseLEDState', - EngineDeck2TrackSampleRate: '/Engine/Deck2/Track/SampleRate', - EngineDeck2TrackSongAnalyzed: '/Engine/Deck2/Track/SongAnalyzed', - EngineDeck2TrackSongLoaded: '/Engine/Deck2/Track/SongLoaded', - EngineDeck2TrackSongName: '/Engine/Deck2/Track/SongName', - EngineDeck2TrackSoundSwitchGUID: '/Engine/Deck2/Track/SoundSwitchGuid', - EngineDeck2TrackTrackBytes: '/Engine/Deck2/Track/TrackBytes', - EngineDeck2TrackTrackData: '/Engine/Deck2/Track/TrackData', - EngineDeck2TrackTrackLength: '/Engine/Deck2/Track/TrackLength', - EngineDeck2TrackTrackName: '/Engine/Deck2/Track/TrackName', - EngineDeck2TrackTrackNetworkPath: '/Engine/Deck2/Track/TrackNetworkPath', - EngineDeck2TrackTrackURI: '/Engine/Deck2/Track/TrackUri', - EngineDeck2TrackTrackWasPlayed: '/Engine/Deck2/Track/TrackWasPlayed', - EngineDeck3CurrentBPM: '/Engine/Deck3/CurrentBPM', - EngineDeck3ExternalMixerVolume: '/Engine/Deck3/ExternalMixerVolume', - EngineDeck3ExternalScratchWheelTouch: '/Engine/Deck3/ExternalScratchWheelTouch', - EngineDeck3PadsView: '/Engine/Deck3/Pads/View', - EngineDeck3Play: '/Engine/Deck3/Play', - EngineDeck3PlayState: '/Engine/Deck3/PlayState', - EngineDeck3PlayStatePath: '/Engine/Deck3/PlayStatePath', - EngineDeck3Speed: '/Engine/Deck3/Speed', - EngineDeck3SpeedNeutral: '/Engine/Deck3/SpeedNeutral', - EngineDeck3SpeedOffsetDown: '/Engine/Deck3/SpeedOffsetDown', - EngineDeck3SpeedOffsetUp: '/Engine/Deck3/SpeedOffsetUp', - EngineDeck3SpeedRange: '/Engine/Deck3/SpeedRange', - EngineDeck3SpeedState: '/Engine/Deck3/SpeedState', - EngineDeck3SyncMode: '/Engine/Deck3/SyncMode', - EngineDeck3TrackArtistName: '/Engine/Deck3/Track/ArtistName', - EngineDeck3TrackBleep: '/Engine/Deck3/Track/Bleep', - EngineDeck3TrackCuePosition: '/Engine/Deck3/Track/CuePosition', - EngineDeck3TrackCurrentBPM: '/Engine/Deck3/Track/CurrentBPM', - EngineDeck3TrackCurrentKeyIndex: '/Engine/Deck3/Track/CurrentKeyIndex', - EngineDeck3TrackCurrentLoopInPosition: '/Engine/Deck3/Track/CurrentLoopInPosition', - EngineDeck3TrackCurrentLoopOutPosition: '/Engine/Deck3/Track/CurrentLoopOutPosition', - EngineDeck3TrackCurrentLoopSizeInBeats: '/Engine/Deck3/Track/CurrentLoopSizeInBeats', - EngineDeck3TrackKeyLock: '/Engine/Deck3/Track/KeyLock', - EngineDeck3TrackLoopEnableState: '/Engine/Deck3/Track/LoopEnableState', - EngineDeck3TrackLoopQuickLoop1: '/Engine/Deck3/Track/Loop/QuickLoop1', - EngineDeck3TrackLoopQuickLoop2: '/Engine/Deck3/Track/Loop/QuickLoop2', - EngineDeck3TrackLoopQuickLoop3: '/Engine/Deck3/Track/Loop/QuickLoop3', - EngineDeck3TrackLoopQuickLoop4: '/Engine/Deck3/Track/Loop/QuickLoop4', - EngineDeck3TrackLoopQuickLoop5: '/Engine/Deck3/Track/Loop/QuickLoop5', - EngineDeck3TrackLoopQuickLoop6: '/Engine/Deck3/Track/Loop/QuickLoop6', - EngineDeck3TrackLoopQuickLoop7: '/Engine/Deck3/Track/Loop/QuickLoop7', - EngineDeck3TrackLoopQuickLoop8: '/Engine/Deck3/Track/Loop/QuickLoop8', - EngineDeck3TrackPlayPauseLEDState: '/Engine/Deck3/Track/PlayPauseLEDState', - EngineDeck3TrackSampleRate: '/Engine/Deck3/Track/SampleRate', - EngineDeck3TrackSongAnalyzed: '/Engine/Deck3/Track/SongAnalyzed', - EngineDeck3TrackSongLoaded: '/Engine/Deck3/Track/SongLoaded', - EngineDeck3TrackSongName: '/Engine/Deck3/Track/SongName', - EngineDeck3TrackSoundSwitchGUID: '/Engine/Deck3/Track/SoundSwitchGuid', - EngineDeck3TrackTrackBytes: '/Engine/Deck3/Track/TrackBytes', - EngineDeck3TrackTrackData: '/Engine/Deck3/Track/TrackData', - EngineDeck3TrackTrackLength: '/Engine/Deck3/Track/TrackLength', - EngineDeck3TrackTrackName: '/Engine/Deck3/Track/TrackName', - EngineDeck3TrackTrackNetworkPath: '/Engine/Deck3/Track/TrackNetworkPath', - EngineDeck3TrackTrackURI: '/Engine/Deck3/Track/TrackUri', - EngineDeck3TrackTrackWasPlayed: '/Engine/Deck3/Track/TrackWasPlayed', - EngineDeck4CurrentBPM: '/Engine/Deck4/CurrentBPM', - EngineDeck4ExternalMixerVolume: '/Engine/Deck4/ExternalMixerVolume', - EngineDeck4ExternalScratchWheelTouch: '/Engine/Deck4/ExternalScratchWheelTouch', - EngineDeck4PadsView: '/Engine/Deck4/Pads/View', - EngineDeck4Play: '/Engine/Deck4/Play', - EngineDeck4PlayState: '/Engine/Deck4/PlayState', - EngineDeck4PlayStatePath: '/Engine/Deck4/PlayStatePath', - EngineDeck4Speed: '/Engine/Deck4/Speed', - EngineDeck4SpeedNeutral: '/Engine/Deck4/SpeedNeutral', - EngineDeck4SpeedOffsetDown: '/Engine/Deck4/SpeedOffsetDown', - EngineDeck4SpeedOffsetUp: '/Engine/Deck4/SpeedOffsetUp', - EngineDeck4SpeedRange: '/Engine/Deck4/SpeedRange', - EngineDeck4SpeedState: '/Engine/Deck4/SpeedState', - EngineDeck4SyncMode: '/Engine/Deck4/SyncMode', - EngineDeck4TrackArtistName: '/Engine/Deck4/Track/ArtistName', - EngineDeck4TrackBleep: '/Engine/Deck4/Track/Bleep', - EngineDeck4TrackCuePosition: '/Engine/Deck4/Track/CuePosition', - EngineDeck4TrackCurrentBPM: '/Engine/Deck4/Track/CurrentBPM', - EngineDeck4TrackCurrentKeyIndex: '/Engine/Deck4/Track/CurrentKeyIndex', - EngineDeck4TrackCurrentLoopInPosition: '/Engine/Deck4/Track/CurrentLoopInPosition', - EngineDeck4TrackCurrentLoopOutPosition: '/Engine/Deck4/Track/CurrentLoopOutPosition', - EngineDeck4TrackCurrentLoopSizeInBeats: '/Engine/Deck4/Track/CurrentLoopSizeInBeats', - EngineDeck4TrackKeyLock: '/Engine/Deck4/Track/KeyLock', - EngineDeck4TrackLoopEnableState: '/Engine/Deck4/Track/LoopEnableState', - EngineDeck4TrackLoopQuickLoop1: '/Engine/Deck4/Track/Loop/QuickLoop1', - EngineDeck4TrackLoopQuickLoop2: '/Engine/Deck4/Track/Loop/QuickLoop2', - EngineDeck4TrackLoopQuickLoop3: '/Engine/Deck4/Track/Loop/QuickLoop3', - EngineDeck4TrackLoopQuickLoop4: '/Engine/Deck4/Track/Loop/QuickLoop4', - EngineDeck4TrackLoopQuickLoop5: '/Engine/Deck4/Track/Loop/QuickLoop5', - EngineDeck4TrackLoopQuickLoop6: '/Engine/Deck4/Track/Loop/QuickLoop6', - EngineDeck4TrackLoopQuickLoop7: '/Engine/Deck4/Track/Loop/QuickLoop7', - EngineDeck4TrackLoopQuickLoop8: '/Engine/Deck4/Track/Loop/QuickLoop8', - EngineDeck4TrackPlayPauseLEDState: '/Engine/Deck4/Track/PlayPauseLEDState', - EngineDeck4TrackSampleRate: '/Engine/Deck4/Track/SampleRate', - EngineDeck4TrackSongAnalyzed: '/Engine/Deck4/Track/SongAnalyzed', - EngineDeck4TrackSongLoaded: '/Engine/Deck4/Track/SongLoaded', - EngineDeck4TrackSongName: '/Engine/Deck4/Track/SongName', - EngineDeck4TrackSoundSwitchGUID: '/Engine/Deck4/Track/SoundSwitchGuid', - EngineDeck4TrackTrackBytes: '/Engine/Deck4/Track/TrackBytes', - EngineDeck4TrackTrackData: '/Engine/Deck4/Track/TrackData', - EngineDeck4TrackTrackLength: '/Engine/Deck4/Track/TrackLength', - EngineDeck4TrackTrackName: '/Engine/Deck4/Track/TrackName', - EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', - EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', - EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', - + player: { + // ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', + // ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', + // ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', + // ClientPreferencesLayerA: '/Client/Preferences/LayerA', + // ClientPreferencesLayerB: '/Client/Preferences/LayerB', + // ClientPreferencesPlayer: '/Client/Preferences/Player', + // ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', + // ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', + // ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', + // ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', + // ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', + // ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', + // ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', + // ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', + // ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', + // ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', + // ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', + // ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', + // ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', + // ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', + // ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', + EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', + EngineMasterMasterTempo: '/Engine/Master/MasterTempo', + EngineDeckCount: '/Engine/DeckCount', + EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', + EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', + EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', + EngineDeck1PadsView: '/Engine/Deck1/Pads/View', + EngineDeck1Play: '/Engine/Deck1/Play', + EngineDeck1PlayState: '/Engine/Deck1/PlayState', + EngineDeck1PlayStatePath: '/Engine/Deck1/PlayStatePath', + EngineDeck1Speed: '/Engine/Deck1/Speed', + EngineDeck1SpeedNeutral: '/Engine/Deck1/SpeedNeutral', + EngineDeck1SpeedOffsetDown: '/Engine/Deck1/SpeedOffsetDown', + EngineDeck1SpeedOffsetUp: '/Engine/Deck1/SpeedOffsetUp', + EngineDeck1SpeedRange: '/Engine/Deck1/SpeedRange', + EngineDeck1SpeedState: '/Engine/Deck1/SpeedState', + EngineDeck1SyncMode: '/Engine/Deck1/SyncMode', + EngineDeck1TrackArtistName: '/Engine/Deck1/Track/ArtistName', + EngineDeck1TrackBleep: '/Engine/Deck1/Track/Bleep', + EngineDeck1TrackCuePosition: '/Engine/Deck1/Track/CuePosition', + EngineDeck1TrackCurrentBPM: '/Engine/Deck1/Track/CurrentBPM', + EngineDeck1TrackCurrentKeyIndex: '/Engine/Deck1/Track/CurrentKeyIndex', + EngineDeck1TrackCurrentLoopInPosition: '/Engine/Deck1/Track/CurrentLoopInPosition', + EngineDeck1TrackCurrentLoopOutPosition: '/Engine/Deck1/Track/CurrentLoopOutPosition', + EngineDeck1TrackCurrentLoopSizeInBeats: '/Engine/Deck1/Track/CurrentLoopSizeInBeats', + EngineDeck1TrackKeyLock: '/Engine/Deck1/Track/KeyLock', + EngineDeck1TrackLoopEnableState: '/Engine/Deck1/Track/LoopEnableState', + EngineDeck1TrackLoopQuickLoop1: '/Engine/Deck1/Track/Loop/QuickLoop1', + EngineDeck1TrackLoopQuickLoop2: '/Engine/Deck1/Track/Loop/QuickLoop2', + EngineDeck1TrackLoopQuickLoop3: '/Engine/Deck1/Track/Loop/QuickLoop3', + EngineDeck1TrackLoopQuickLoop4: '/Engine/Deck1/Track/Loop/QuickLoop4', + EngineDeck1TrackLoopQuickLoop5: '/Engine/Deck1/Track/Loop/QuickLoop5', + EngineDeck1TrackLoopQuickLoop6: '/Engine/Deck1/Track/Loop/QuickLoop6', + EngineDeck1TrackLoopQuickLoop7: '/Engine/Deck1/Track/Loop/QuickLoop7', + EngineDeck1TrackLoopQuickLoop8: '/Engine/Deck1/Track/Loop/QuickLoop8', + EngineDeck1TrackPlayPauseLEDState: '/Engine/Deck1/Track/PlayPauseLEDState', + EngineDeck1TrackSampleRate: '/Engine/Deck1/Track/SampleRate', + EngineDeck1TrackSongAnalyzed: '/Engine/Deck1/Track/SongAnalyzed', + EngineDeck1TrackSongLoaded: '/Engine/Deck1/Track/SongLoaded', + EngineDeck1TrackSongName: '/Engine/Deck1/Track/SongName', + EngineDeck1TrackSoundSwitchGUID: '/Engine/Deck1/Track/SoundSwitchGuid', + EngineDeck1TrackTrackBytes: '/Engine/Deck1/Track/TrackBytes', + EngineDeck1TrackTrackData: '/Engine/Deck1/Track/TrackData', + EngineDeck1TrackTrackLength: '/Engine/Deck1/Track/TrackLength', + EngineDeck1TrackTrackName: '/Engine/Deck1/Track/TrackName', + EngineDeck1TrackTrackNetworkPath: '/Engine/Deck1/Track/TrackNetworkPath', + EngineDeck1TrackTrackURI: '/Engine/Deck1/Track/TrackUri', + EngineDeck1TrackTrackWasPlayed: '/Engine/Deck1/Track/TrackWasPlayed', + EngineDeck2CurrentBPM: '/Engine/Deck2/CurrentBPM', + EngineDeck2ExternalMixerVolume: '/Engine/Deck2/ExternalMixerVolume', + EngineDeck2ExternalScratchWheelTouch: '/Engine/Deck2/ExternalScratchWheelTouch', + EngineDeck2PadsView: '/Engine/Deck2/Pads/View', + EngineDeck2Play: '/Engine/Deck2/Play', + EngineDeck2PlayState: '/Engine/Deck2/PlayState', + EngineDeck2PlayStatePath: '/Engine/Deck2/PlayStatePath', + EngineDeck2Speed: '/Engine/Deck2/Speed', + EngineDeck2SpeedNeutral: '/Engine/Deck2/SpeedNeutral', + EngineDeck2SpeedOffsetDown: '/Engine/Deck2/SpeedOffsetDown', + EngineDeck2SpeedOffsetUp: '/Engine/Deck2/SpeedOffsetUp', + EngineDeck2SpeedRange: '/Engine/Deck2/SpeedRange', + EngineDeck2SpeedState: '/Engine/Deck2/SpeedState', + EngineDeck2SyncMode: '/Engine/Deck2/SyncMode', + EngineDeck2TrackArtistName: '/Engine/Deck2/Track/ArtistName', + EngineDeck2TrackBleep: '/Engine/Deck2/Track/Bleep', + EngineDeck2TrackCuePosition: '/Engine/Deck2/Track/CuePosition', + EngineDeck2TrackCurrentBPM: '/Engine/Deck2/Track/CurrentBPM', + EngineDeck2TrackCurrentKeyIndex: '/Engine/Deck2/Track/CurrentKeyIndex', + EngineDeck2TrackCurrentLoopInPosition: '/Engine/Deck2/Track/CurrentLoopInPosition', + EngineDeck2TrackCurrentLoopOutPosition: '/Engine/Deck2/Track/CurrentLoopOutPosition', + EngineDeck2TrackCurrentLoopSizeInBeats: '/Engine/Deck2/Track/CurrentLoopSizeInBeats', + EngineDeck2TrackKeyLock: '/Engine/Deck2/Track/KeyLock', + EngineDeck2TrackLoopEnableState: '/Engine/Deck2/Track/LoopEnableState', + EngineDeck2TrackLoopQuickLoop1: '/Engine/Deck2/Track/Loop/QuickLoop1', + EngineDeck2TrackLoopQuickLoop2: '/Engine/Deck2/Track/Loop/QuickLoop2', + EngineDeck2TrackLoopQuickLoop3: '/Engine/Deck2/Track/Loop/QuickLoop3', + EngineDeck2TrackLoopQuickLoop4: '/Engine/Deck2/Track/Loop/QuickLoop4', + EngineDeck2TrackLoopQuickLoop5: '/Engine/Deck2/Track/Loop/QuickLoop5', + EngineDeck2TrackLoopQuickLoop6: '/Engine/Deck2/Track/Loop/QuickLoop6', + EngineDeck2TrackLoopQuickLoop7: '/Engine/Deck2/Track/Loop/QuickLoop7', + EngineDeck2TrackLoopQuickLoop8: '/Engine/Deck2/Track/Loop/QuickLoop8', + EngineDeck2TrackPlayPauseLEDState: '/Engine/Deck2/Track/PlayPauseLEDState', + EngineDeck2TrackSampleRate: '/Engine/Deck2/Track/SampleRate', + EngineDeck2TrackSongAnalyzed: '/Engine/Deck2/Track/SongAnalyzed', + EngineDeck2TrackSongLoaded: '/Engine/Deck2/Track/SongLoaded', + EngineDeck2TrackSongName: '/Engine/Deck2/Track/SongName', + EngineDeck2TrackSoundSwitchGUID: '/Engine/Deck2/Track/SoundSwitchGuid', + EngineDeck2TrackTrackBytes: '/Engine/Deck2/Track/TrackBytes', + EngineDeck2TrackTrackData: '/Engine/Deck2/Track/TrackData', + EngineDeck2TrackTrackLength: '/Engine/Deck2/Track/TrackLength', + EngineDeck2TrackTrackName: '/Engine/Deck2/Track/TrackName', + EngineDeck2TrackTrackNetworkPath: '/Engine/Deck2/Track/TrackNetworkPath', + EngineDeck2TrackTrackURI: '/Engine/Deck2/Track/TrackUri', + EngineDeck2TrackTrackWasPlayed: '/Engine/Deck2/Track/TrackWasPlayed', + EngineDeck3CurrentBPM: '/Engine/Deck3/CurrentBPM', + EngineDeck3ExternalMixerVolume: '/Engine/Deck3/ExternalMixerVolume', + EngineDeck3ExternalScratchWheelTouch: '/Engine/Deck3/ExternalScratchWheelTouch', + EngineDeck3PadsView: '/Engine/Deck3/Pads/View', + EngineDeck3Play: '/Engine/Deck3/Play', + EngineDeck3PlayState: '/Engine/Deck3/PlayState', + EngineDeck3PlayStatePath: '/Engine/Deck3/PlayStatePath', + EngineDeck3Speed: '/Engine/Deck3/Speed', + EngineDeck3SpeedNeutral: '/Engine/Deck3/SpeedNeutral', + EngineDeck3SpeedOffsetDown: '/Engine/Deck3/SpeedOffsetDown', + EngineDeck3SpeedOffsetUp: '/Engine/Deck3/SpeedOffsetUp', + EngineDeck3SpeedRange: '/Engine/Deck3/SpeedRange', + EngineDeck3SpeedState: '/Engine/Deck3/SpeedState', + EngineDeck3SyncMode: '/Engine/Deck3/SyncMode', + EngineDeck3TrackArtistName: '/Engine/Deck3/Track/ArtistName', + EngineDeck3TrackBleep: '/Engine/Deck3/Track/Bleep', + EngineDeck3TrackCuePosition: '/Engine/Deck3/Track/CuePosition', + EngineDeck3TrackCurrentBPM: '/Engine/Deck3/Track/CurrentBPM', + EngineDeck3TrackCurrentKeyIndex: '/Engine/Deck3/Track/CurrentKeyIndex', + EngineDeck3TrackCurrentLoopInPosition: '/Engine/Deck3/Track/CurrentLoopInPosition', + EngineDeck3TrackCurrentLoopOutPosition: '/Engine/Deck3/Track/CurrentLoopOutPosition', + EngineDeck3TrackCurrentLoopSizeInBeats: '/Engine/Deck3/Track/CurrentLoopSizeInBeats', + EngineDeck3TrackKeyLock: '/Engine/Deck3/Track/KeyLock', + EngineDeck3TrackLoopEnableState: '/Engine/Deck3/Track/LoopEnableState', + EngineDeck3TrackLoopQuickLoop1: '/Engine/Deck3/Track/Loop/QuickLoop1', + EngineDeck3TrackLoopQuickLoop2: '/Engine/Deck3/Track/Loop/QuickLoop2', + EngineDeck3TrackLoopQuickLoop3: '/Engine/Deck3/Track/Loop/QuickLoop3', + EngineDeck3TrackLoopQuickLoop4: '/Engine/Deck3/Track/Loop/QuickLoop4', + EngineDeck3TrackLoopQuickLoop5: '/Engine/Deck3/Track/Loop/QuickLoop5', + EngineDeck3TrackLoopQuickLoop6: '/Engine/Deck3/Track/Loop/QuickLoop6', + EngineDeck3TrackLoopQuickLoop7: '/Engine/Deck3/Track/Loop/QuickLoop7', + EngineDeck3TrackLoopQuickLoop8: '/Engine/Deck3/Track/Loop/QuickLoop8', + EngineDeck3TrackPlayPauseLEDState: '/Engine/Deck3/Track/PlayPauseLEDState', + EngineDeck3TrackSampleRate: '/Engine/Deck3/Track/SampleRate', + EngineDeck3TrackSongAnalyzed: '/Engine/Deck3/Track/SongAnalyzed', + EngineDeck3TrackSongLoaded: '/Engine/Deck3/Track/SongLoaded', + EngineDeck3TrackSongName: '/Engine/Deck3/Track/SongName', + EngineDeck3TrackSoundSwitchGUID: '/Engine/Deck3/Track/SoundSwitchGuid', + EngineDeck3TrackTrackBytes: '/Engine/Deck3/Track/TrackBytes', + EngineDeck3TrackTrackData: '/Engine/Deck3/Track/TrackData', + EngineDeck3TrackTrackLength: '/Engine/Deck3/Track/TrackLength', + EngineDeck3TrackTrackName: '/Engine/Deck3/Track/TrackName', + EngineDeck3TrackTrackNetworkPath: '/Engine/Deck3/Track/TrackNetworkPath', + EngineDeck3TrackTrackURI: '/Engine/Deck3/Track/TrackUri', + EngineDeck3TrackTrackWasPlayed: '/Engine/Deck3/Track/TrackWasPlayed', + EngineDeck4CurrentBPM: '/Engine/Deck4/CurrentBPM', + EngineDeck4ExternalMixerVolume: '/Engine/Deck4/ExternalMixerVolume', + EngineDeck4ExternalScratchWheelTouch: '/Engine/Deck4/ExternalScratchWheelTouch', + EngineDeck4PadsView: '/Engine/Deck4/Pads/View', + EngineDeck4Play: '/Engine/Deck4/Play', + EngineDeck4PlayState: '/Engine/Deck4/PlayState', + EngineDeck4PlayStatePath: '/Engine/Deck4/PlayStatePath', + EngineDeck4Speed: '/Engine/Deck4/Speed', + EngineDeck4SpeedNeutral: '/Engine/Deck4/SpeedNeutral', + EngineDeck4SpeedOffsetDown: '/Engine/Deck4/SpeedOffsetDown', + EngineDeck4SpeedOffsetUp: '/Engine/Deck4/SpeedOffsetUp', + EngineDeck4SpeedRange: '/Engine/Deck4/SpeedRange', + EngineDeck4SpeedState: '/Engine/Deck4/SpeedState', + EngineDeck4SyncMode: '/Engine/Deck4/SyncMode', + EngineDeck4TrackArtistName: '/Engine/Deck4/Track/ArtistName', + EngineDeck4TrackBleep: '/Engine/Deck4/Track/Bleep', + EngineDeck4TrackCuePosition: '/Engine/Deck4/Track/CuePosition', + EngineDeck4TrackCurrentBPM: '/Engine/Deck4/Track/CurrentBPM', + EngineDeck4TrackCurrentKeyIndex: '/Engine/Deck4/Track/CurrentKeyIndex', + EngineDeck4TrackCurrentLoopInPosition: '/Engine/Deck4/Track/CurrentLoopInPosition', + EngineDeck4TrackCurrentLoopOutPosition: '/Engine/Deck4/Track/CurrentLoopOutPosition', + EngineDeck4TrackCurrentLoopSizeInBeats: '/Engine/Deck4/Track/CurrentLoopSizeInBeats', + EngineDeck4TrackKeyLock: '/Engine/Deck4/Track/KeyLock', + EngineDeck4TrackLoopEnableState: '/Engine/Deck4/Track/LoopEnableState', + EngineDeck4TrackLoopQuickLoop1: '/Engine/Deck4/Track/Loop/QuickLoop1', + EngineDeck4TrackLoopQuickLoop2: '/Engine/Deck4/Track/Loop/QuickLoop2', + EngineDeck4TrackLoopQuickLoop3: '/Engine/Deck4/Track/Loop/QuickLoop3', + EngineDeck4TrackLoopQuickLoop4: '/Engine/Deck4/Track/Loop/QuickLoop4', + EngineDeck4TrackLoopQuickLoop5: '/Engine/Deck4/Track/Loop/QuickLoop5', + EngineDeck4TrackLoopQuickLoop6: '/Engine/Deck4/Track/Loop/QuickLoop6', + EngineDeck4TrackLoopQuickLoop7: '/Engine/Deck4/Track/Loop/QuickLoop7', + EngineDeck4TrackLoopQuickLoop8: '/Engine/Deck4/Track/Loop/QuickLoop8', + EngineDeck4TrackPlayPauseLEDState: '/Engine/Deck4/Track/PlayPauseLEDState', + EngineDeck4TrackSampleRate: '/Engine/Deck4/Track/SampleRate', + EngineDeck4TrackSongAnalyzed: '/Engine/Deck4/Track/SongAnalyzed', + EngineDeck4TrackSongLoaded: '/Engine/Deck4/Track/SongLoaded', + EngineDeck4TrackSongName: '/Engine/Deck4/Track/SongName', + EngineDeck4TrackSoundSwitchGUID: '/Engine/Deck4/Track/SoundSwitchGuid', + EngineDeck4TrackTrackBytes: '/Engine/Deck4/Track/TrackBytes', + EngineDeck4TrackTrackData: '/Engine/Deck4/Track/TrackData', + EngineDeck4TrackTrackLength: '/Engine/Deck4/Track/TrackLength', + EngineDeck4TrackTrackName: '/Engine/Deck4/Track/TrackName', + EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', + EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', + EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', + }, + mixer: { + MixerCH1faderPosition: '/Mixer/CH1faderPosition', + MixerCH2faderPosition: '/Mixer/CH2faderPosition', + MixerCH3faderPosition: '/Mixer/CH3faderPosition', + MixerCH4faderPosition: '/Mixer/CH4faderPosition', + MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', + MixerChannelAssignment1: '/Mixer/ChannelAssignment1', + MixerChannelAssignment2: '/Mixer/ChannelAssignment2', + MixerChannelAssignment3: '/Mixer/ChannelAssignment3', + MixerChannelAssignment4: '/Mixer/ChannelAssignment4', + MixerNumberOfChannels: '/Mixer/NumberOfChannels', + // GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + // GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', + // ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', + // ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', + }, } diff --git a/utils/ReadContext.ts b/utils/ReadContext.ts index 12481e1..d6f52fa 100644 --- a/utils/ReadContext.ts +++ b/utils/ReadContext.ts @@ -24,6 +24,18 @@ export class ReadContext extends Context { return view; } + peek(p_bytes: number): Buffer { + const bytesToRead = Math.min(this.sizeLeft(), p_bytes); + if (bytesToRead <= 0) { + return null; + } + + const view = new Uint8Array(this.buffer, this.pos, bytesToRead); // Buffer.from(this.buffer.slice(this.pos, this.pos + p_bytes)) + //this.pos += bytesToRead; + assert(view.byteLength === bytesToRead); + return Buffer.from(view) + } + readRemaining(): Uint8Array { return this.read(this.sizeLeft()); } From bfbddfb8227844569dce3b8f7853147b56230929 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 28 Mar 2023 22:28:23 -0400 Subject: [PATCH 078/146] uncomment --- StageLinq/index.ts | 2 +- cli/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index d7f96d7..2b842c6 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -7,7 +7,7 @@ import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Status } from '../status/Status'; import { Server } from 'net'; -import { sleep } from '../utils/sleep'; + const DEFAULT_OPTIONS: StageLinqOptions = { diff --git a/cli/index.ts b/cli/index.ts index 849455a..d290936 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -124,7 +124,7 @@ async function main() { const sourceName = split.shift(); if (stageLinq.fileTransfer) { const path = `/${sourceName}/${split.join('/')}` - //await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); + await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); } From 3f311e216f30291f7d580eaee173ce717465bda4 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 00:53:24 -0400 Subject: [PATCH 079/146] Tightening up timings --- cli/index.ts | 11 ++- devices/Devices.ts | 24 ++++++- network/Discovery.ts | 16 +++-- services/BeatInfo.ts | 2 +- services/Directory.ts | 78 +++++++++------------ services/Service.ts | 17 +---- services/StateMap.ts | 153 ++++++++++-------------------------------- 7 files changed, 114 insertions(+), 187 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index d290936..66fac5c 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -73,8 +73,8 @@ async function main() { actingAs: ActingAsDevice.NowPlaying, services: [ ServiceList.StateMap, - // ServiceList.BeatInfo, - // ServiceList.FileTransfer, + ServiceList.BeatInfo, + ServiceList.FileTransfer, //ServiceList.TimeSynchronization, ], } @@ -106,6 +106,11 @@ async function main() { // }); + stageLinq.discovery.on('newDiscoveryDevice', (info) => { + console.log(`DISCOVERY New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) + }); + + stageLinq.devices.on('newDevice', (device) => { console.log(`DEVICES New Device ${device.deviceId.string}`) }); @@ -118,7 +123,7 @@ async function main() { if (stageLinq.stateMap) { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - console.debug(`${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); + console.debug(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43, data.message.json.string.length).split('/') const sourceName = split.shift(); diff --git a/devices/Devices.ts b/devices/Devices.ts index a6ead77..00bd885 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -2,6 +2,7 @@ import { EventEmitter } from 'events'; import * as Services from '../services'; import { ConnectionInfo } from '../types'; import { DeviceId } from '../devices' +import { sleep } from '../utils'; export declare interface Devices { @@ -16,13 +17,34 @@ export class Devices extends EventEmitter { return [...this._devices.entries()] } - async addDevice(info: ConnectionInfo): Promise { + addDevice(info: ConnectionInfo): Device { const device = new Device(info, this); this._devices.set(device.deviceId.string, device) this.emit('newDevice', device) return device } + async getDevice(deviceId: string | Uint8Array | DeviceId): Promise { + while (!this.hasDevice(deviceId)) { + await sleep(150); + } + + if (typeof deviceId == "string") { + return this._devices.get(deviceId) + } + if (deviceId instanceof DeviceId) { + const _deviceId = deviceId as DeviceId + return this._devices.get(_deviceId.string) + } + if (typeof deviceId == "object") { + const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string + return this._devices.get(deviceString); + } + } + device(deviceId: string | Uint8Array | DeviceId): Device { if (typeof deviceId == "string") { return this._devices.get(deviceId) diff --git a/network/Discovery.ts b/network/Discovery.ts index 6ecb8fd..d4b4f3d 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -9,6 +9,7 @@ import { networkInterfaces } from 'os'; import { subnet, SubnetInfo } from 'ip'; import { Logger } from '../LogEmitter'; import { StageLinq } from '../StageLinq'; +import EventEmitter = require('events'); export interface DiscoveryMessageOptions { @@ -21,8 +22,12 @@ export interface DiscoveryMessageOptions { type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; +export declare interface Discovery { + on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; + //on(event: 'beatMsg', listener: (beatData: ServiceMessage, device: Service) => void): this; +} -export class Discovery { +export class Discovery extends EventEmitter { public parent: InstanceType; private socket: Socket; @@ -41,6 +46,7 @@ export class Discovery { * @param parent StageLinq Instance */ constructor(parent: InstanceType) { + super(); this.parent = parent; } @@ -68,16 +74,14 @@ export class Discovery { this.options = options; this.deviceId = new DeviceId(options.token) - - - await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - const device = await this.parent.devices.addDevice(connectionInfo); + const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); - Logger.debug(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) + Logger.silly(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) + this.emit('newDiscoveryDevice', connectionInfo); } else { this.hasLooped = true; } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 4607bc1..913da27 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -69,7 +69,7 @@ export class BeatInfo extends Service { private _userBeatCallback: beatCallback = null; private _userBeatOptions: BeatOptions = null; private _currentBeatData: ServiceMessage = null; - #isBufferedService: boolean = true; + isBufferedService: boolean = true; constructor(p_parent: InstanceType, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { super(p_parent, serviceHandler, deviceId) diff --git a/services/Directory.ts b/services/Directory.ts index 8309ad6..0a77dda 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -42,43 +42,37 @@ export class Directory extends Service { } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - let deviceId: string = ''; - //while (ctx.isEOF() === false) { - const id = ctx.readUInt32(); - const token = ctx.read(16); - this.deviceId = new DeviceId(token); - - //console.log(`${this.name} for ${this.deviceId.string} ${this.parent.discovery.hasConnectionInfo(this.deviceId)}`) - const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); - - switch (id) { - case MessageId.TimeStamp: - ctx.seek(16); - const timeAlive = ctx.readUInt64(); - this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); - // if (ctx.isEOF() === false) { - // ctx.readRemaining(); - // } - if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { - this.sendTimeStampReply(token, socket); - } - break; - case MessageId.ServicesAnnouncement: - const service = ctx.readNetworkStringUTF16(); - const port = ctx.readUInt16(); - console.warn('received ', service, port); - break; - case MessageId.ServicesRequest: - //ctx.readRemaining(); // - this.sendServiceAnnouncement(this.deviceId, socket); - break; - default: - assert.fail(`NetworkDevice Unhandled message id '${id}'`); - } - //} + + const id = ctx.readUInt32(); + const token = ctx.read(16); + this.deviceId = new DeviceId(token); + + const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); + + switch (id) { + case MessageId.TimeStamp: + ctx.seek(16); + const timeAlive = ctx.readUInt64(); + this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); + + if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { + this.sendTimeStampReply(token, socket); + } + break; + case MessageId.ServicesAnnouncement: + const service = ctx.readNetworkStringUTF16(); + const port = ctx.readUInt16(); + console.warn('received ', service, port); + break; + case MessageId.ServicesRequest: + this.sendServiceAnnouncement(this.deviceId, socket); + break; + default: + assert.fail(`NetworkDevice Unhandled message id '${id}'`); + } const directoryMessage: DirectoryData = { - deviceId: deviceId, + deviceId: this.deviceId.string }; const directoryData = { id: 69, @@ -97,15 +91,9 @@ export class Directory extends Service { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(Tokens.Listen); - if (!this.parent.devices.hasDevice(deviceId)) { - await sleep(1000); - console.log(`${this.deviceId} awaiting parent.devices`) - } - let services: InstanceType[] = [] - + const device = await this.parent.devices.getDevice(deviceId.string); for (const serviceName of Object.keys(this.parent.services)) { - const device = this.parent.devices.device(deviceId.string); if (device && !!deviceTypes[device.info?.software?.name]) { switch (serviceName) { case 'FileTransfer': { @@ -131,9 +119,7 @@ export class Directory extends Service { default: break; } - } //else { - // services.push(this); - // } + } } for (const service of services) { @@ -141,7 +127,7 @@ export class Directory extends Service { ctx.write(Tokens.Listen); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - //Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); + Logger.silly(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); } const msg = ctx.getBuffer(); diff --git a/services/Service.ts b/services/Service.ts index 324967a..75f84fd 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -141,7 +141,7 @@ export abstract class Service extends EventEmitter { async listen(): Promise { const server = await this.createServer(); - return server.address() as AddressInfo; + return server.address() as net.AddressInfo; } closeServer() { @@ -157,11 +157,8 @@ export abstract class Service extends EventEmitter { try { const msg = buff.readInt32BE(); const deviceId = buff.slice(4); - //console.warn(msg, deviceId); if (msg === 0 && deviceId.length === 16) { - //console.warn('true'); return true - } else { return false } @@ -185,22 +182,13 @@ export abstract class Service extends EventEmitter { const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); let ctx = new ReadContext(arrayBuffer, false); - - // Notes on isBufferedService - // some simple services (Directory, TimeSync, others..) - // might receive data the is hard to parse with the buffer. - // if isBufferedService is false, we send this data immediately to parse. if (!this.isBufferedService) { const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(), false), socket); this.messageHandler(parsedData); + }; - // Check if device has announced itself to this service yet - // Basically, we only want to handle first msg sent to non-directory services - - if (await this.subMessageTest(ctx.peek(20))) { - //if (!this._deviceId && ctx.sizeLeft() >= 20) { const messageId = ctx.readUInt32(); this._deviceId = new DeviceId(ctx.read(16)); @@ -222,6 +210,7 @@ export abstract class Service extends EventEmitter { } const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); this.messageHandler(parsedData); + } try { diff --git a/services/StateMap.ts b/services/StateMap.ts index dd239de..b61a222 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -32,13 +32,13 @@ enum Result { const MAGIC_MARKER_INTERVAL = 0x000007d2; const MAGIC_MARKER_JSON = 0x00000000; -function stateReducer(obj: any, prefix: string): string[] { - const entries = Object.entries(obj) - const retArr = entries.map(([key, value]) => { - return (typeof value === 'object' ? [...stateReducer(value, `${prefix}${key}/`)] : `${prefix}${key}`) - }) - return retArr.flat() -} +// function stateReducer(obj: any, prefix: string): string[] { +// const entries = Object.entries(obj) +// const retArr = entries.map(([key, value]) => { +// return (typeof value === 'object' ? [...stateReducer(value, `${prefix}${key}/`)] : `${prefix}${key}`) +// }) +// return retArr.flat() +// } // const playerStateValues = stateReducer(stagelinqConfig.player, '/'); // const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); @@ -72,13 +72,16 @@ export class StateMapHandler extends ServiceHandler { const stateMap = service as Services.StateMap; this.addDevice(deviceId, service); - const listener = (data: ServiceMessage) => { - if (data && data.message && data.message.json) { - this.emit('stateMessage', data); - } - }; + // const listener = (data: ServiceMessage) => { + // if (data && data.message && data.message.json) { + // this.emit('stateMessage', data); + // } + // }; + // stateMap.addListener('stateMessage', listener) - stateMap.addListener('stateMessage', listener) + stateMap.on('stateMessage', (data: ServiceMessage) => { + this.emit('stateMessage', data); + }); stateMap.on('newDevice', (service: InstanceType) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) @@ -88,17 +91,6 @@ export class StateMapHandler extends ServiceHandler { } } -// interface reducer { -// buffer: Buffer, -// obj: T; -// } - -// class cStateData implements StateData { -// service: -// } - -// function readReducer(buffer: Buffer, obj: , struct: ) - export class StateMap extends Service { public readonly name = "StateMap"; public readonly handler: StateMapHandler; @@ -119,88 +111,46 @@ export class StateMap extends Service { Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); - - // const states = [ - // '/Engine/Deck1/CurrentBPM', - // '/Engine/Deck2/CurrentBPM', - // '/Engine/Deck3/CurrentBPM', - // '/Engine/Deck4/CurrentBPM', - // '/Mixer/NumberOfChannels', - // '/Mixer/ChannelAssignment1', - // '/Mixer/ChannelAssignment2', - // '/Mixer/ChannelAssignment3', - // '/Mixer/ChannelAssignment4', - // '/Mixer/CH1faderPosition' - // ] - - // for (const [key, value] of Object.entries(StageLinqValueObj)) { - // this.#stateValues.set(value, key); - // console.log(`${key}: ${value}`); - // } - - - - // this.#subscribeStates(Object.values(StageLinqValueObj),100, socket) - - // for (let value of Object.values(StageLinqValueObj)) { - // console.log(value) - // await this.subscribeState(value, 0, socket); - // await sleep(250) - // } - - let stateValueArray: string[] = []; - switch (thisPeer?.device?.type) { case "PLAYER": { - for (let state of playerStateValues) { - //await this.subscribeState(state, 0, socket); - - stateValueArray.push(state); - } - let playerDeckStateValues: string[] = []; - for (let i = 0; i < thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; - } - for (let state of playerDeckStateValues) { - const stateValue = `${this.deviceId.string},/${state.split('/').slice(1, 3).join("/")}` - const newValue = `{${this.deviceId}},${state.split('/').slice(2, 3).shift().substring(4, 5)}` - this.handler.deviceTrackRegister.set(stateValue, newValue); - //await this.subscribeState(state, 0, socket); - stateValueArray.push(state); + for (let state of playerStateValues) { + await this.subscribeState(state, 0, socket); } + // let playerDeckStateValues: string[] = []; + // for (let i = 0; i < thisPeer.device.decks; i++) { + // playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; + // } + // for (let state of playerDeckStateValues) { + // const stateValue = `${this.deviceId.string},/${state.split('/').slice(1, 3).join("/")}` + // const newValue = `{${this.deviceId}},${state.split('/').slice(2, 3).shift().substring(4, 5)}` + // this.handler.deviceTrackRegister.set(stateValue, newValue); + // stateValueArray.push(state); + // } break; } case "CONTROLLER": { for (let state of controllerStateValues) { - //await this.subscribeState(state, 0, socket); - //this.#stateValues.set - stateValueArray.push(state); - } - let playerDeckStateValues: string[] = []; - for (let i = 0; i < thisPeer.device.decks; i++) { - playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; - } - for (let state of playerDeckStateValues) { - //await this.subscribeState(state, 0, socket); - stateValueArray.push(state); + await this.subscribeState(state, 0, socket); } + // let playerDeckStateValues: string[] = []; + // for (let i = 0; i < thisPeer.device.decks; i++) { + // playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; + // } + // for (let state of playerDeckStateValues) { + // stateValueArray.push(state); + // } break; } case "MIXER": { - await sleep(1000); for (let state of mixerStateValues) { await this.subscribeState(state, 0, socket); - //stateValueArray.push(state); } break; } default: break; } - if (stateValueArray.length) { - this.#subscribeStates(stateValueArray,0, socket) - } } protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { @@ -232,8 +182,6 @@ export class StateMap extends Service { } assert(marker === MAGIC_MARKER); - - const type = p_ctx.readUInt32(); switch (type) { case MAGIC_MARKER_JSON: { @@ -295,7 +243,7 @@ export class StateMap extends Service { if (p_data?.message?.interval) { this.sendStateResponse(p_data.message.name, p_data.socket); } - if (p_data?.message) { + if (p_data?.message?.json) { //this.#stateValues.set(p_data.message.name, "") this.emit('stateMessage', p_data); } @@ -304,12 +252,10 @@ export class StateMap extends Service { Logger.silent( `${p_data.deviceId.string} ${p_data.message.name} => ${p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }`); - //console.warn(`Received State ${this.deviceId}`); this.#hasReceivedState = true; } } - private async sendStateResponse(p_state: string, socket: Socket) { const getMessage = function (): Buffer { @@ -350,29 +296,4 @@ export class StateMap extends Service { await socket.write(buffer); } - async #subscribeStates(p_states: string[], p_interval: number, socket: Socket) { - - const getMessage = function (states: string[]): Buffer { - const ctx = new WriteContext(); - for (let state of states) { - ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(MAGIC_MARKER_INTERVAL); - ctx.writeNetworkStringUTF16(state); - ctx.writeUInt32(p_interval); - } - - return ctx.getBuffer(); - }; - - - - - const message = getMessage(p_states); - - const ctx = new WriteContext(); - ctx.writeUInt32(message.length); - ctx.write(message) - const buffer = ctx.getBuffer(); - await socket.write(buffer); - } } \ No newline at end of file From fe08ff57aefb4843744deb006f4c0c48f4d59f61 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 15:39:12 -0400 Subject: [PATCH 080/146] handle source removal, discovery messages --- Databases/Databases.ts | 4 +- Databases/Sources.ts | 15 ++++++-- cli/index.ts | 83 ++++++++++++++++++++++++---------------- cli/old.ts | 2 +- network/Discovery.ts | 3 +- services/FileTransfer.ts | 53 ++++++++++++++++++++----- 6 files changed, 110 insertions(+), 50 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 279b3bc..97e964e 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -40,13 +40,13 @@ export class Databases extends EventEmitter { // Save database to a file //thisTxid = source.service.txid; const file = await source.service.getFile(source.database.location, source.service.socket); - Logger.info(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); + Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); source.database.connection = new DbConnection(dbPath); this.parent.sources.setSource(source); - Logger.info(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); + Logger.debug(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); } diff --git a/Databases/Sources.ts b/Databases/Sources.ts index c1b140b..244fdd9 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -8,6 +8,7 @@ export declare interface Sources { on(event: 'newSource', listener: (source: Source) => void): this; } + export class Sources extends EventEmitter { private _sources: Map = new Map(); public readonly parent: InstanceType; @@ -34,7 +35,7 @@ export class Sources extends EventEmitter { * @returns Source */ getSource(sourceName: string, deviceId: DeviceId): Source { - return this._sources.get(`${sourceName}${deviceId.string}`); + return this._sources.get(`${deviceId.string}${sourceName}`); } /** @@ -42,13 +43,21 @@ export class Sources extends EventEmitter { * @param source */ setSource(source: Source) { - this._sources.set(`${source.name}${source.deviceId.string}`, source); + this._sources.set(`${source.deviceId.string}${source.name}`, source); } - getSources(): Source[] { + getSources(deviceId?: DeviceId): Source[] { + if (deviceId) { + const filteredMap = new Map([...this._sources.entries()].filter(entry => entry[0].substring(0,36) == deviceId.string)) + return [...filteredMap.values()] + } return [...this._sources.values()] } + deleteSource(sourceName: string, deviceId: DeviceId) { + this._sources.delete(`${deviceId.string}${sourceName}`) + } + async downloadFile(source: Source, path: string): Promise { const service = source.service; await service.isAvailable(); diff --git a/cli/index.ts b/cli/index.ts index 66fac5c..d493c76 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -53,7 +53,7 @@ async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: const filePath = `${dest}/${path.split('/').pop()}` fs.writeFileSync(filePath, Buffer.from(data)); - console.log(`Downloaded ${path} to ${dest}`); + // console.log(`Downloaded ${path} to ${dest}`); } } catch (e) { console.error(`Could not download ${path}`); @@ -68,7 +68,7 @@ async function main() { console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - downloadDbSources: true, + downloadDbSources: false, maxRetries: 3, actingAs: ActingAsDevice.NowPlaying, services: [ @@ -96,10 +96,10 @@ async function main() { console.log(...args); args.push("\n"); }); - stageLinq.logger.on('debug', (...args: any) => { - console.debug(...args); - args.push("\n"); - }); + // stageLinq.logger.on('debug', (...args: any) => { + // console.debug(...args); + // args.push("\n"); + // }); //Note: Silly is very verbose! // stageLinq.logger.on('silly', (...args: any) => { // console.debug(...args); @@ -107,49 +107,58 @@ async function main() { stageLinq.discovery.on('newDiscoveryDevice', (info) => { - console.log(`DISCOVERY New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) + console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) + }); + + stageLinq.discovery.on('announcing', (info) => { + console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) }); stageLinq.devices.on('newDevice', (device) => { - console.log(`DEVICES New Device ${device.deviceId.string}`) + console.log(`[DEVICES] New Device ${device.deviceId.string}`) }); stageLinq.devices.on('newService', (device, service) => { - console.log(`DEVICES New ${service.name} Service on ${device.deviceId.string}`) + console.log(`[DEVICES] New ${service.name} Service on ${device.deviceId.string} port ${service.serverInfo.port}`) }); if (stageLinq.stateMap) { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - console.debug(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); + console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { const split = data.message.json.string.substring(43, data.message.json.string.length).split('/') const sourceName = split.shift(); if (stageLinq.fileTransfer) { const path = `/${sourceName}/${split.join('/')}` - await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); - downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); - } - + + if (stageLinqOptions.downloadDbSources) { + const trackInfo = await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); + if (trackInfo) { + console.log(`[TRACKINFO] ${{...trackInfo}}`) + } + downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); + } + } } }); stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { - console.log(`Subscribing to States on ${service.deviceId.string}`); + console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); service.subscribe(); - // stageLinq.status.addPlayer({ - // stateMap: service, - // address: service.socket.remoteAddress, - // port: service.socket.remotePort, - // deviceId: service.deviceId, - // }) + stageLinq.status.addPlayer({ + stateMap: service, + address: service.socket.remoteAddress, + port: service.socket.remotePort, + deviceId: service.deviceId, + }) }); stageLinq.status.on('trackLoaded', async (status) => { - console.log(`STATUS Track Loaded ${status.deviceId.string}`); + console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); //console.dir(status); // if (stageLinq.options.downloadDbSources ) { @@ -169,12 +178,12 @@ async function main() { }); stageLinq.status.on('nowPlaying', async (status) => { - console.log(`STATUS Now Playing ${status.deviceId.string}`); + console.log(`[STATUS] Now Playing ${status.deviceId.string}`); //console.dir(status); }); stageLinq.status.on('stateChanged', async (status) => { - console.log(`STATUS State Changed ${status.deviceId.string}`); + console.log(`[STATUS] State Changed ${status.deviceId.string}`); //console.dir(status); }); } @@ -183,17 +192,25 @@ async function main() { if (stageLinq.fileTransfer) { stageLinq.fileTransfer.on('fileTransferProgress', (file, txid, progress) => { - console.debug(`{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); + console.log(`[FILETRANSFER] {${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); + }); + + stageLinq.fileTransfer.on('fileTransferComplete', (file, txid) => { + console.log(`[FILETRANSFER] Complete {${txid}} ${file}`); }); - stageLinq.fileTransfer.on('dbNewSource', (_source: Source) => { - console.log(`New Source Available (${_source.name})`); + stageLinq.fileTransfer.on('newSource', (_source: Source) => { + console.log(`[FILETRANSFER] Source Available: (${_source.name})`); source.set(_source.name, _source) - + }); + + stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { + console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); + source.delete(sourceName); }); stageLinq.databases.on('dbDownloaded', (_source: Source) => { - console.log(`New Downloaded Database (${_source.name})`); + console.log(`[FILETRANSFER] Database Downloaded: (${_source.name})`); source.set(_source.name, _source); //const sources = stageLinq.sources.getSources(); //console.dir(sources); @@ -221,7 +238,7 @@ async function main() { for (let i = 0; i < bd.message.deckCount; i++) { deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` } - console.log(`BEATINFO ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); + console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); } //// callback is optional, BeatInfo messages can be consumed by: @@ -229,14 +246,14 @@ async function main() { // - event messages // - reading the register const beatMethod = { - useCallback: false, - useEvent: true, + useCallback: true, + useEvent: false, useRegister: false, }; stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: Services.BeatInfo) => { - console.log(`BEATINFO New Device ${beatInfo.deviceId.string}`) + console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) if (beatMethod.useCallback) { diff --git a/cli/old.ts b/cli/old.ts index 8b53d59..ada4ab2 100644 --- a/cli/old.ts +++ b/cli/old.ts @@ -150,7 +150,7 @@ // // dbDownloaded = true; // }); -// stageLinq.databases.on('dbNewSource', (source: Source) => { +// stageLinq.databases.on('newSource', (source: Source) => { // console.log(`New Source Available (${source.name})`); // // dbDownloaded = true; // }); diff --git a/network/Discovery.ts b/network/Discovery.ts index d4b4f3d..e94a8c2 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -24,7 +24,7 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export declare interface Discovery { on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; - //on(event: 'beatMsg', listener: (beatData: ServiceMessage, device: Service) => void): this; + on(event: 'announcing', listener: (info: DiscoveryMessage) => void): this; } export class Discovery extends EventEmitter { @@ -114,6 +114,7 @@ export class Discovery extends EventEmitter { const msg = this.writeDiscoveryMessage(discoveryMessage) this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); + this.emit('announcing', discoveryMessage) Logger.debug(`Broadcast Discovery Message ${this.deviceId.string} ${discoveryMessage.source}`); this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 0786630..ed21b88 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -37,7 +37,9 @@ export interface FileTransferProgress { export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (fileName: string, txId: number, progress: FileTransferProgress) => void): this; - on(event: 'dbNewSource', listener: (source: Source) => void): this; + on(event: 'fileTransferComplete', listener: (fileName: string, txId: number) => void): this; + on(event: 'newSource', listener: (source: Source) => void): this; + on(event: 'sourceRemoved', listener: (sourceName: string, deviceId: DeviceId) => void): this; } export class FileTransferHandler extends ServiceHandler { @@ -50,8 +52,14 @@ export class FileTransferHandler extends ServiceHandler { fileTransfer.on('fileTransferProgress', (fileName, txid, progress) => { this.emit('fileTransferProgress', fileName, txid, progress); }); - fileTransfer.on('dbNewSource', (source: Source) => { - this.emit('dbNewSource', source); + fileTransfer.on('newSource', (source: Source) => { + this.emit('newSource', source); + }); + fileTransfer.on('sourceRemoved', (name: string, deviceId: DeviceId) => { + this.emit('sourceRemoved', name, deviceId); + }); + fileTransfer.on('fileTransferComplete', (fileName, txid) => { + this.emit('fileTransferComplete', fileName, txid); }); } } @@ -115,10 +123,12 @@ export class FileTransfer extends Service { assert(p_ctx.readUInt8() === 0x1); assert(p_ctx.isEOF()); - if (sources.length) { + //if (sources.length) { Logger.silly(`getting sources for `, this.deviceId.string); - this.getSources(sources, socket); - } + + //this.getSources(sources, socket); + this.updateSources(sources); + //} return { id: messageId, @@ -290,7 +300,8 @@ export class FileTransfer extends Service { Logger.silly(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } - Logger.info(`Download complete.`); + Logger.debug(`Download complete.`); + this.emit('fileTransferComplete', p_location.split('/').pop(), this.txId) resolve(true); }); } catch (err) { @@ -312,7 +323,24 @@ export class FileTransfer extends Service { return buf; } - async getSources(sources: string[], socket: Socket): Promise { + async updateSources(sources: string[]) { //: Promise { + const currentSources = this.parent.sources.getSources(this.deviceId); + const currentSourceNames = currentSources.map(source => source.name); + const markedForDelete = currentSources.filter(item => !sources.includes(item.name)) //filter(source => item.name !== source)) + const newSources = sources.filter(source => !currentSourceNames.includes(source)); + for (const source of markedForDelete) { + this.parent.sources.deleteSource(source.name, source.deviceId) + this.emit('sourceRemoved', source.name, source.deviceId); + } + // console.log(markedForDelete) + // console.log(newSources) + if (newSources.length) { + this.getSources(newSources); + } + } + + async getSources(sources: string[]): Promise { + const socket = this.socket; const result: Source[] = []; for (const source of sources) { @@ -338,15 +366,20 @@ export class FileTransfer extends Service { }, } - this.emit('dbNewSource', thisSource); + this.emit('newSource', thisSource); this.parent.sources.setSource(thisSource); result.push(thisSource); - this.parent.databases.downloadDb(thisSource); + + if (this.parent.options.downloadDbSources) { + this.parent.databases.downloadDb(thisSource); + } + break; } } } + this.updateSources(sources); return result; } From 19b92cfffc41491c8688d1f496323b1a56e66c91 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 17:49:51 -0400 Subject: [PATCH 081/146] some fixes for edge-case behaviour --- cli/index.ts | 10 +++--- devices/Devices.ts | 13 ++++++- network/Discovery.ts | 12 +++---- services/Directory.ts | 74 ++++++++++++++++++++++++++++------------ services/FileTransfer.ts | 3 ++ 5 files changed, 79 insertions(+), 33 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index d493c76..dd176b7 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -68,7 +68,7 @@ async function main() { console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - downloadDbSources: false, + downloadDbSources: true, maxRetries: 3, actingAs: ActingAsDevice.NowPlaying, services: [ @@ -111,7 +111,7 @@ async function main() { }); stageLinq.discovery.on('announcing', (info) => { - console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) + console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} disc Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) }); @@ -212,8 +212,10 @@ async function main() { stageLinq.databases.on('dbDownloaded', (_source: Source) => { console.log(`[FILETRANSFER] Database Downloaded: (${_source.name})`); source.set(_source.name, _source); - //const sources = stageLinq.sources.getSources(); - //console.dir(sources); + const sources = stageLinq.sources.getSources(); + for (const source of sources) { + console.log(`${source.name} on ${source.deviceId.string}`); + } }); } diff --git a/devices/Devices.ts b/devices/Devices.ts index 00bd885..180985a 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -63,7 +63,7 @@ export class Devices extends EventEmitter { } - hasDevice(deviceId: Uint8Array | string | DeviceId) { + hasDevice(deviceId: Uint8Array | string | DeviceId): boolean { if (typeof deviceId == "string") { return this._devices.has(deviceId) } @@ -78,6 +78,17 @@ export class Devices extends EventEmitter { .join('-') as string) } } + async updateDeviceInfo(deviceId: DeviceId, info: ConnectionInfo) { + const device = await this.getDevice(deviceId) + device.info = info; + this._devices.set(deviceId.string, device); + } + + hasNewInfo(deviceId: Uint8Array | string | DeviceId, info: ConnectionInfo): boolean { + //const device = this.device(deviceId) + //console.log(device.info?.port, info.port) + return this.device(deviceId).info?.port !== info.port + } addService(deviceId: DeviceId, service: InstanceType) { const device = this.device(deviceId.string) diff --git a/network/Discovery.ts b/network/Discovery.ts index e94a8c2..fb5f479 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,5 +1,5 @@ import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, deviceTypes, } from '../types'; -import { DeviceId, deviceIdFromBuff } from '../devices' +import { DeviceId } from '../devices' import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; @@ -76,7 +76,7 @@ export class Discovery extends EventEmitter { await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { - if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) && deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { + if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) ) {//&& deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); @@ -86,13 +86,13 @@ export class Discovery extends EventEmitter { this.hasLooped = true; } - if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.device(connectionInfo.token).info.port !== connectionInfo.port) { + if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.hasNewInfo(connectionInfo.token, connectionInfo)) { const deviceId = new DeviceId(connectionInfo.token) this.peers.set(deviceId.string, connectionInfo); - this.parent.devices.device(deviceId.string).info = connectionInfo; - Logger.debug(`Updated port for From ${deviceId.string}`) - } + this.parent.devices.updateDeviceInfo(deviceId, connectionInfo); + Logger.warn(`Updated port for From ${deviceId.string}`) + } }); } diff --git a/services/Directory.ts b/services/Directory.ts index 0a77dda..84a5b16 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -43,33 +43,60 @@ export class Directory extends Service { protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + if (ctx.sizeLeft() < 20) { + return + //console.log('woah') + } +// while (!ctx.isEOF()) { + + const id = ctx.readUInt32(); const token = ctx.read(16); - this.deviceId = new DeviceId(token); + if (!token) { + return + } + //try { + this.deviceId = new DeviceId(token); + // } catch (err) { + // console.error(err) + // } + const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); - switch (id) { - case MessageId.TimeStamp: - ctx.seek(16); - const timeAlive = ctx.readUInt64(); - this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); - - if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { - this.sendTimeStampReply(token, socket); - } - break; - case MessageId.ServicesAnnouncement: - const service = ctx.readNetworkStringUTF16(); - const port = ctx.readUInt16(); - console.warn('received ', service, port); - break; - case MessageId.ServicesRequest: - this.sendServiceAnnouncement(this.deviceId, socket); - break; - default: - assert.fail(`NetworkDevice Unhandled message id '${id}'`); + try { + switch (id) { + case MessageId.TimeStamp: + ctx.seek(16); + let timeAlive:bigint = 1n + if (ctx.sizeLeft()>= 8) { + timeAlive = ctx.readUInt64(); + this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); + } + + if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { + this.sendTimeStampReply(token, socket); + } + break; + case MessageId.ServicesAnnouncement: + const service = ctx.readNetworkStringUTF16(); + const port = ctx.readUInt16(); + console.warn('received ', service, port); + break; + case MessageId.ServicesRequest: + this.sendServiceAnnouncement(this.deviceId, socket); + break; + default: + //assert.fail(`NetworkDevice Unhandled message id '${id}'`); + ctx.rewind() + Logger.warn(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`); + break; + } + } catch (err) { + ctx.rewind(); + Logger.error(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`) } + const directoryMessage: DirectoryData = { deviceId: this.deviceId.string @@ -81,10 +108,13 @@ export class Directory extends Service { message: directoryMessage, }; return directoryData; + //} } protected messageHandler(directoryMsg: ServiceMessage): void { - assert(directoryMsg); + if (!directoryMsg) { + //Logger.warn('empty directory message') + } } private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index ed21b88..eaf603b 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -264,6 +264,9 @@ export class FileTransfer extends Service { * @returns Contents of the file. */ async getFile(p_location: string, socket: Socket): Promise { + while (!this._isAvailable) { + await sleep(500) + } this._isAvailable = false; assert(this.receivedFile === null); await this.requestFileTransferId(p_location, socket); From ff6977ed14cfd55b98c9bbef8e7a9599a2453f1c Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 22:48:20 -0400 Subject: [PATCH 082/146] Download File fix --- Databases/Databases.ts | 25 --- Databases/Sources.ts | 2 +- cli/index.ts | 93 +++----- cli/old.ts | 291 -------------------------- devices/Devices.ts | 2 - services/Directory.ts | 28 +-- services/FileTransfer.ts | 21 +- services/TimeSync.ts | 4 +- types/common.ts | 442 +++++++++++++++++++-------------------- types/index.ts | 12 -- types/tokens.ts | 19 +- 11 files changed, 278 insertions(+), 661 deletions(-) delete mode 100644 cli/old.ts diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 97e964e..9760277 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -38,7 +38,6 @@ export class Databases extends EventEmitter { source.database.connection = new DbConnection(dbPath) // Save database to a file - //thisTxid = source.service.txid; const file = await source.service.getFile(source.database.location, source.service.socket); Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); @@ -50,28 +49,4 @@ export class Databases extends EventEmitter { this.emit('dbDownloaded', source); } - - // getDbPath(dbSourceName?: string) { - // const source = this.parent.sources.getSource(dbSourceName); - - // if (!source.database.size) - // throw new Error(`No data sources have been downloaded`); - - // if (!dbSourceName || !this.parent.sources.hasSource(dbSourceName)) { - - // // Hack: Denon will save metadata on streaming files but only on an - // // internal database. So if the source is "(Unknown)streaming://" - // // return the first internal database we find. - // for (const entry of this.parent.sources.getSourcesArray()) { //Array.from(this.sources.entries())) { - // if (/\(Internal\)/.test(entry[0])) { - // Logger.debug(`Returning copy of internal database`); - // return this.parent.sources.getSource(entry[0]); - // } - // } - // // Else, throw an exception. - // throw new Error(`Data source "${dbSourceName}" doesn't exist.`); - // } - - // return this.parent.sources.getSource(dbSourceName); - // } } diff --git a/Databases/Sources.ts b/Databases/Sources.ts index 244fdd9..bd34dce 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -25,7 +25,7 @@ export class Sources extends EventEmitter { * @returns boolean */ hasSource(sourceName: string, deviceId: DeviceId): boolean { - return this._sources.has(`${sourceName}${deviceId.string}`); + return this._sources.has(`${deviceId.string}${sourceName}`); } /** diff --git a/cli/index.ts b/cli/index.ts index dd176b7..afb0e0f 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -13,12 +13,10 @@ require('console-stamp')(console, { function progressBar(size: number, bytes: number, total: number): string { - const progress = Math.ceil((bytes / total) * 10) let progressArrary = new Array(size); progressArrary.fill(' '); if (progress) { - for (let i = 0; i < progress; i++) { progressArrary[i] = '|' } @@ -34,35 +32,30 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: const _source = stageLinq.sources.getSource(sourceName, deviceId); const connection = _source.database.connection; const result = await connection.getTrackInfo(trackName); - //console.log('Database entry:', result); + console.log('Database entry:', result); return result; } catch (e) { console.error(e); } } -async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { - - while (!stageLinq.sources.hasSource(sourceName, deviceId)) { - await sleep(250); - } - try { - const _source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.sources.downloadFile(_source, path); - if (dest && data) { - const filePath = `${dest}/${path.split('/').pop()}` - - fs.writeFileSync(filePath, Buffer.from(data)); - // console.log(`Downloaded ${path} to ${dest}`); +async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { + while (!stageLinq.sources.hasSource(sourceName, deviceId)) { + await sleep(250) } - } catch (e) { - console.error(`Could not download ${path}`); - console.error(e) - } + try { + const _source = stageLinq.sources.getSource(sourceName, deviceId); + const data = await stageLinq.sources.downloadFile(_source, path); + if (dest && data) { + const filePath = `${dest}/${path.split('/').pop()}` + fs.writeFileSync(filePath, Buffer.from(data)); + } + } catch (e) { + console.error(`Could not download ${path}`); + console.error(e) + } } -let source: Map = new Map(); - async function main() { @@ -70,12 +63,12 @@ async function main() { const stageLinqOptions: StageLinqOptions = { downloadDbSources: true, maxRetries: 3, - actingAs: ActingAsDevice.NowPlaying, + actingAs: ActingAsDevice.StageLinqJS, services: [ ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, - //ServiceList.TimeSynchronization, + //ServiceList.TimeSynchronization, TODO Implement TimeSynch Fully ], } @@ -107,7 +100,7 @@ async function main() { stageLinq.discovery.on('newDiscoveryDevice', (info) => { - console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name}:${info.software.version}`) + console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name} ${info.software.version}`) }); stageLinq.discovery.on('announcing', (info) => { @@ -128,21 +121,6 @@ async function main() { stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); - if (data.message?.json?.string && data.message.name.split('/').pop() === "TrackNetworkPath") { - const split = data.message.json.string.substring(43, data.message.json.string.length).split('/') - const sourceName = split.shift(); - if (stageLinq.fileTransfer) { - const path = `/${sourceName}/${split.join('/')}` - - if (stageLinqOptions.downloadDbSources) { - const trackInfo = await getTrackInfo(stageLinq, sourceName, data.deviceId, data.message.json.string); - if (trackInfo) { - console.log(`[TRACKINFO] ${{...trackInfo}}`) - } - downloadFile(stageLinq, sourceName, data.deviceId, path, Path.resolve(os.tmpdir())); - } - } - } }); stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { @@ -159,32 +137,24 @@ async function main() { stageLinq.status.on('trackLoaded', async (status) => { console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); - //console.dir(status); - - // if (stageLinq.options.downloadDbSources ) { - // getTrackInfo(stageLinq, status); - // } - // Example of how to download the actual track from the media. - - // // if (downloadFlag) { - // const filename = [status.title,'.mp3'].join(''); - // while (!stageLinq.sources.hasSource(status.dbSourceName, status.deviceId)) { - // await sleep(250); - // } - // //await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); - // await downloadFile(stageLinq, filename, status.deviceId, path, Path.resolve(os.tmpdir())); - // //} + const split = status.trackNetworkPath.substring(43).split('/') + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + if (stageLinq.fileTransfer) { + if (stageLinqOptions.downloadDbSources) { + getTrackInfo(stageLinq, sourceName, status.deviceId, status.trackNetworkPath); + downloadFile(stageLinq, sourceName, status.deviceId, path, Path.resolve(os.tmpdir())); + } + } }); stageLinq.status.on('nowPlaying', async (status) => { console.log(`[STATUS] Now Playing ${status.deviceId.string}`); - //console.dir(status); }); stageLinq.status.on('stateChanged', async (status) => { console.log(`[STATUS] State Changed ${status.deviceId.string}`); - //console.dir(status); }); } @@ -201,21 +171,14 @@ async function main() { stageLinq.fileTransfer.on('newSource', (_source: Source) => { console.log(`[FILETRANSFER] Source Available: (${_source.name})`); - source.set(_source.name, _source) }); stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); - source.delete(sourceName); }); stageLinq.databases.on('dbDownloaded', (_source: Source) => { console.log(`[FILETRANSFER] Database Downloaded: (${_source.name})`); - source.set(_source.name, _source); - const sources = stageLinq.sources.getSources(); - for (const source of sources) { - console.log(`${source.name} on ${source.deviceId.string}`); - } }); } @@ -278,7 +241,7 @@ async function main() { const beatData = beatInfo.getBeatData(); if (beatData) beatCallback(beatData); } - + setTimeout(beatFunc, 4000, beatInfo) } diff --git a/cli/old.ts b/cli/old.ts deleted file mode 100644 index ada4ab2..0000000 --- a/cli/old.ts +++ /dev/null @@ -1,291 +0,0 @@ -// import { ActingAsDevice, PlayerStatus, StageLinqOptions, ServiceList, DeviceId, Source } from '../types'; -// import * as Services from '../services' -// import { DbConnection } from "../Databases"; -// import { sleep } from '../utils/sleep'; -// import { StageLinq } from '../StageLinq'; -// import * as fs from 'fs'; -// import * as os from 'os'; -// import * as path from 'path'; -// import { Player } from '../devices/Player'; - - -// require('console-stamp')(console, { -// format: ':date(HH:MM:ss) :label', -// }); - -// /** -// * Get track information for latest playing song. -// * -// * @param stageLinq Instance of StageLinq. -// * @param status Player to get track info from. -// * @returns Track info -// */ - -// //let dbDownloaded: boolean = false; - -// function progressBar(size: number, bytes: number, total: number): string { - -// const progress = Math.ceil((bytes / total) * 10) -// let progressArrary = new Array(size); -// progressArrary.fill(' '); -// if (progress) { - -// for (let i=0; i { -// console.error(...args); -// }); -// stageLinq.logger.on('warn', (...args: any) => { -// console.warn(...args); -// args.push("\n"); -// }); -// stageLinq.logger.on('info', (...args: any) => { -// console.info(...args); -// args.push("\n"); -// }); -// stageLinq.logger.on('log', (...args: any) => { -// console.log(...args); -// args.push("\n"); -// }); -// stageLinq.logger.on('debug', (...args: any) => { -// console.debug(...args); -// args.push("\n"); -// }); -// //Note: Silly is very verbose! -// // stageLinq.logger.on('silly', (...args: any) => { -// // console.debug(...args); -// // }); - -// // Fires when we connect to any device -// //stageLinq.on('connected', async (connectionInfo) => { -// // console.log(`Successfully connected to ${connectionInfo.software.name}`); - -// if (stageLinq.options.downloadDbSources) { -// // Fires when the database source starts downloading. -// stageLinq.databases.on('dbDownloading', (sourceName, dbPath) => { -// console.log(`Downloading ${sourceName} to ${dbPath}`); -// }); - -// // Fires while the database source is being read -// stageLinq.databases.on('dbProgress', ( sourceName, total, bytes, percent) => { -// //console.debug(`Reading ${sourceName}: ${bytes}/${total} (${Math.ceil(percent)}%)`); -// console.debug(`Reading ${sourceName}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); -// }); - -// // Fires when the database source has been read and saved to a temporary path. -// stageLinq.databases.on('dbDownloaded', (sourceName, dbPath) => { -// console.log(`Database (${sourceName}) has been downloaded to ${dbPath}`); -// // dbDownloaded = true; -// }); - -// stageLinq.databases.on('newSource', (source: Source) => { -// console.log(`New Source Available (${source.name})`); -// // dbDownloaded = true; -// }); - - -// stageLinq.on('fileProgress', (file, total, bytes, percent) => { -// //Logger.warn(thisTxid, txid); -// //if (thisTxid === txid) { -// //this.emit('fileProgress', path.split('/').pop(), progress.total, progress.bytesDownloaded, progress.percentComplete); -// console.debug(`Reading ${file}: ${progressBar(10,bytes,total)} (${Math.ceil(percent)}%)`); -// //} -// }); -// } - -// //}); - -// // Fires when StageLinq and all devices are ready to use. -// // stageLinq.on('ready', () => { -// // console.log(`StageLinq is ready!`); -// // }); - -// // Fires when a new track is loaded on to a player. -// // stageLinq.on('trackLoaded', async (status) => { - -// // // Example of how to connect to the database using this library's -// // // implementation of BetterSqlite3 to get additional information. -// // if (stageLinq.options.downloadDbSources) { -// // getTrackInfo(stageLinq, status); -// // } - -// // // Example of how to download the actual track from the media. -// // const filename = [status.title,'.mp3'].join(''); -// // await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); -// // }); - -// // // Fires when a track has started playing. -// // stageLinq.on('nowPlaying', (status) => { -// // console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) -// // }); - -// // Fires when StageLinq receives messages from a device. - -// stageLinq.stateMap.on('newStateMapDevice', (deviceId: DeviceId, service: InstanceType ) => { -// console.log(`Subscribing to States on ${deviceId.string}`); - -// const player = new Player({ -// stateMap: service, -// address: service.socket.remoteAddress, -// port: service.socket.remotePort, -// deviceId: deviceId, -// }); - -// //wait for Player to setup -// while (!player.ready) { -// sleep(250); -// } - -// service.subscribe(); - -// player.on('trackLoaded', async (status) => { -// if (stageLinq.options.downloadDbSources && downloadFlag) { -// getTrackInfo(stageLinq, status); -// } - -// // Example of how to download the actual track from the media. - -// if (downloadFlag) { -// const filename = [status.title,'.mp3'].join(''); -// while (!stageLinq.hasSource(status.dbSourceName)) { -// await sleep(250); -// } -// await downloadFile(stageLinq, status, path.resolve(os.tmpdir(), filename)); -// } - -// }); - -// player.on('stateChanged', (status) => { -// console.log(`Updating state [${status.deck}]`, status) -// }); - -// player.on('nowPlaying', (status) => { -// console.log(`Now Playing on [${status.deck}]: ${status.title} - ${status.artist}`) -// }); -// }); - -// // stageLinq.stateMap.on('stateMessage', (data) => { -// // if (data.message.json) { -// // const msg = data.message.json -// // ? JSON.stringify(data.message.json) -// // : data.message.interval; -// // console.debug(`${data.deviceId.string} ` + -// // `${data.message.name} => ${msg}`); - -// // } - -// // }); - -// // Fires when the state of a device has changed. -// // stageLinq.on('stateChanged', (status) => { -// // console.log(`Updating state [${status.deck}]`, status) -// // }); - -// ///////////////////////////////////////////////////////////////////////// -// // CLI - -// let returnCode = 0; -// try { -// process.on('SIGINT', async function () { -// console.info('... exiting'); - -// // Ensure SIGINT won't be impeded by some error - -// try { -// await stageLinq.disconnect(); -// } catch (err: any) { -// const message = err.stack.toString(); -// console.error(message); -// } -// process.exit(returnCode); -// }); - -// await stageLinq.connect(); - -// while (true) { -// await sleep(250); -// } - -// } catch (err: any) { -// const message = err.stack.toString(); -// console.error(message); -// returnCode = 1; -// } - -// await stageLinq.disconnect(); -// process.exit(returnCode); -// } - -// main(); diff --git a/devices/Devices.ts b/devices/Devices.ts index 180985a..6140a74 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -85,8 +85,6 @@ export class Devices extends EventEmitter { } hasNewInfo(deviceId: Uint8Array | string | DeviceId, info: ConnectionInfo): boolean { - //const device = this.device(deviceId) - //console.log(device.info?.port, info.port) return this.device(deviceId).info?.port !== info.port } diff --git a/services/Directory.ts b/services/Directory.ts index 84a5b16..6029fb6 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,7 +1,7 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, MessageId, Tokens, deviceTypes } from '../types'; +import { ServiceMessage, MessageId, deviceTypes } from '../types'; import { DeviceId } from '../devices' import { sleep } from '../utils/sleep'; import { Socket } from 'net'; @@ -45,23 +45,15 @@ export class Directory extends Service { if (ctx.sizeLeft() < 20) { return - //console.log('woah') } -// while (!ctx.isEOF()) { - const id = ctx.readUInt32(); const token = ctx.read(16); if (!token) { return } - //try { - this.deviceId = new DeviceId(token); - // } catch (err) { - // console.error(err) - // } - + this.deviceId = new DeviceId(token); const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); try { @@ -81,20 +73,19 @@ export class Directory extends Service { case MessageId.ServicesAnnouncement: const service = ctx.readNetworkStringUTF16(); const port = ctx.readUInt16(); - console.warn('received ', service, port); + Logger.silent(this.name, 'received ', service, port); break; case MessageId.ServicesRequest: this.sendServiceAnnouncement(this.deviceId, socket); break; default: - //assert.fail(`NetworkDevice Unhandled message id '${id}'`); ctx.rewind() - Logger.warn(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`); + Logger.silent(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`); break; } } catch (err) { ctx.rewind(); - Logger.error(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`) + Logger.silent(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`) } @@ -108,19 +99,18 @@ export class Directory extends Service { message: directoryMessage, }; return directoryData; - //} } protected messageHandler(directoryMsg: ServiceMessage): void { if (!directoryMsg) { - //Logger.warn('empty directory message') + Logger.silent(`${this.name} Empty Directory Message`) } } private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(Tokens.Listen); + ctx.write(this.parent.options.actingAs.token); let services: InstanceType[] = [] const device = await this.parent.devices.getDevice(deviceId.string); for (const serviceName of Object.keys(this.parent.services)) { @@ -154,7 +144,7 @@ export class Directory extends Service { for (const service of services) { ctx.writeUInt32(MessageId.ServicesAnnouncement); - ctx.write(Tokens.Listen); + ctx.write(this.parent.options.actingAs.token); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); Logger.silly(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); @@ -169,7 +159,7 @@ export class Directory extends Service { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); - ctx.write(Tokens.Listen); + ctx.write(this.parent.options.actingAs.token); ctx.writeUInt64(0n); const message = ctx.getBuffer(); assert(message.length === 44); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index eaf603b..d1b77dd 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -326,17 +326,18 @@ export class FileTransfer extends Service { return buf; } - async updateSources(sources: string[]) { //: Promise { + async updateSources(sources: string[]) { const currentSources = this.parent.sources.getSources(this.deviceId); const currentSourceNames = currentSources.map(source => source.name); - const markedForDelete = currentSources.filter(item => !sources.includes(item.name)) //filter(source => item.name !== source)) + + //When a source is disconnected, devices send a new SourceLocations message that excludes the removed source + const markedForDelete = currentSources.filter(item => !sources.includes(item.name)); const newSources = sources.filter(source => !currentSourceNames.includes(source)); for (const source of markedForDelete) { this.parent.sources.deleteSource(source.name, source.deviceId) this.emit('sourceRemoved', source.name, source.deviceId); } - // console.log(markedForDelete) - // console.log(newSources) + if (newSources.length) { this.getSources(newSources); } @@ -366,30 +367,22 @@ export class FileTransfer extends Service { location: database, device: this.deviceId.string, } - }, - + } } - this.emit('newSource', thisSource); this.parent.sources.setSource(thisSource); + this.emit('newSource', thisSource); result.push(thisSource); if (this.parent.options.downloadDbSources) { this.parent.databases.downloadDb(thisSource); } - - break; } } } - this.updateSources(sources); return result; } - - - - /////////////////////////////////////////////////////////////////////////// // Private methods diff --git a/services/TimeSync.ts b/services/TimeSync.ts index a7e1c9f..194836c 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -4,7 +4,7 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; import * as Services from '../services'; -import { ServiceMessage, Tokens } from '../types'; +import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; import { Socket } from 'net'; @@ -41,7 +41,7 @@ export class TimeSynchronization extends Service { public async sendTimeSyncRequest() { const ctx = new WriteContext(); ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x0])); - ctx.write(Tokens.Listen); + ctx.write(this.parent.options.actingAs.token); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); await this.write(ctx, this.socket); diff --git a/types/common.ts b/types/common.ts index fa78e64..e5d698f 100644 --- a/types/common.ts +++ b/types/common.ts @@ -17,246 +17,246 @@ export enum MessageId { ServicesRequest = 0x2, } -export enum StageLinqValue { - ClientLibrarianDevicesControllerCurrentDevice = '/Client/Librarian/DevicesController/CurrentDevice', - ClientLibrarianDevicesControllerHasSDCardConnected = '/Client/Librarian/DevicesController/HasSDCardConnected', - ClientLibrarianDevicesControllerHasUsbDeviceConnected = '/Client/Librarian/DevicesController/HasUsbDeviceConnected', +// export enum StageLinqValue { +// ClientLibrarianDevicesControllerCurrentDevice = '/Client/Librarian/DevicesController/CurrentDevice', +// ClientLibrarianDevicesControllerHasSDCardConnected = '/Client/Librarian/DevicesController/HasSDCardConnected', +// ClientLibrarianDevicesControllerHasUsbDeviceConnected = '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - ClientPreferencesPlayer = '/Client/Preferences/Player', - ClientPreferencesLayerB = '/Client/Preferences/LayerB', +// ClientPreferencesPlayer = '/Client/Preferences/Player', +// ClientPreferencesLayerB = '/Client/Preferences/LayerB', - ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', - ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', - ClientPreferencesProfileApplicationPlayerColor1 = '/Client/Preferences/Profile/Application/PlayerColor1', - ClientPreferencesProfileApplicationPlayerColor1A = '/Client/Preferences/Profile/Application/PlayerColor1A', - ClientPreferencesProfileApplicationPlayerColor1B = '/Client/Preferences/Profile/Application/PlayerColor1B', - ClientPreferencesProfileApplicationPlayerColor2 = '/Client/Preferences/Profile/Application/PlayerColor2', - ClientPreferencesProfileApplicationPlayerColor2A = '/Client/Preferences/Profile/Application/PlayerColor2A', - ClientPreferencesProfileApplicationPlayerColor2B = '/Client/Preferences/Profile/Application/PlayerColor2B', - ClientPreferencesProfileApplicationPlayerColor3 = '/Client/Preferences/Profile/Application/PlayerColor3', - ClientPreferencesProfileApplicationPlayerColor3A = '/Client/Preferences/Profile/Application/PlayerColor3A', - ClientPreferencesProfileApplicationPlayerColor3B = '/Client/Preferences/Profile/Application/PlayerColor3B', - ClientPreferencesProfileApplicationPlayerColor4 = '/Client/Preferences/Profile/Application/PlayerColor4', - ClientPreferencesProfileApplicationPlayerColor4A = '/Client/Preferences/Profile/Application/PlayerColor4A', - ClientPreferencesProfileApplicationPlayerColor4B = '/Client/Preferences/Profile/Application/PlayerColor4B', +// ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', +// ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', +// ClientPreferencesProfileApplicationPlayerColor1 = '/Client/Preferences/Profile/Application/PlayerColor1', +// ClientPreferencesProfileApplicationPlayerColor1A = '/Client/Preferences/Profile/Application/PlayerColor1A', +// ClientPreferencesProfileApplicationPlayerColor1B = '/Client/Preferences/Profile/Application/PlayerColor1B', +// ClientPreferencesProfileApplicationPlayerColor2 = '/Client/Preferences/Profile/Application/PlayerColor2', +// ClientPreferencesProfileApplicationPlayerColor2A = '/Client/Preferences/Profile/Application/PlayerColor2A', +// ClientPreferencesProfileApplicationPlayerColor2B = '/Client/Preferences/Profile/Application/PlayerColor2B', +// ClientPreferencesProfileApplicationPlayerColor3 = '/Client/Preferences/Profile/Application/PlayerColor3', +// ClientPreferencesProfileApplicationPlayerColor3A = '/Client/Preferences/Profile/Application/PlayerColor3A', +// ClientPreferencesProfileApplicationPlayerColor3B = '/Client/Preferences/Profile/Application/PlayerColor3B', +// ClientPreferencesProfileApplicationPlayerColor4 = '/Client/Preferences/Profile/Application/PlayerColor4', +// ClientPreferencesProfileApplicationPlayerColor4A = '/Client/Preferences/Profile/Application/PlayerColor4A', +// ClientPreferencesProfileApplicationPlayerColor4B = '/Client/Preferences/Profile/Application/PlayerColor4B', - ClientPreferencesProfileApplicationSyncMode = '/Client/Preferences/Profile/Application/SyncMode', +// ClientPreferencesProfileApplicationSyncMode = '/Client/Preferences/Profile/Application/SyncMode', - GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', - GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', +// GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', +// GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', - EngineDeckCount = '/Engine/DeckCount', +// EngineDeckCount = '/Engine/DeckCount', - EngineDeck1DeckIsMaster = '/Engine/Deck1/DeckIsMaster', +// EngineDeck1DeckIsMaster = '/Engine/Deck1/DeckIsMaster', - ClientPreferencesLayerA = '/Client/Preferences/LayerA', - EngineSyncNetworkMasterStatus = '/Engine/Sync/Network/MasterStatus', - EngineMasterMasterTempo = '/Engine/Master/MasterTempo', +// ClientPreferencesLayerA = '/Client/Preferences/LayerA', +// EngineSyncNetworkMasterStatus = '/Engine/Sync/Network/MasterStatus', +// EngineMasterMasterTempo = '/Engine/Master/MasterTempo', - EngineDeck1CurrentBPM = '/Engine/Deck1/CurrentBPM', - EngineDeck1ExternalMixerVolume = '/Engine/Deck1/ExternalMixerVolume', - EngineDeck1ExternalScratchWheelTouch = '/Engine/Deck1/ExternalScratchWheelTouch', - EngineDeck1PadsView = '/Engine/Deck1/Pads/View', - EngineDeck1Play = '/Engine/Deck1/Play', - EngineDeck1PlayState = '/Engine/Deck1/PlayState', - EngineDeck1PlayStatePath = '/Engine/Deck1/PlayStatePath', - EngineDeck1Speed = '/Engine/Deck1/Speed', - EngineDeck1SpeedNeutral = '/Engine/Deck1/SpeedNeutral', - EngineDeck1SpeedOffsetDown = '/Engine/Deck1/SpeedOffsetDown', - EngineDeck1SpeedOffsetUp = '/Engine/Deck1/SpeedOffsetUp', - EngineDeck1SpeedRange = '/Engine/Deck1/SpeedRange', - EngineDeck1SpeedState = '/Engine/Deck1/SpeedState', - EngineDeck1SyncMode = '/Engine/Deck1/SyncMode', - EngineDeck1TrackArtistName = '/Engine/Deck1/Track/ArtistName', - EngineDeck1TrackBleep = '/Engine/Deck1/Track/Bleep', - EngineDeck1TrackCuePosition = '/Engine/Deck1/Track/CuePosition', - EngineDeck1TrackCurrentBPM = '/Engine/Deck1/Track/CurrentBPM', - EngineDeck1TrackCurrentKeyIndex = '/Engine/Deck1/Track/CurrentKeyIndex', - EngineDeck1TrackCurrentLoopInPosition = '/Engine/Deck1/Track/CurrentLoopInPosition', - EngineDeck1TrackCurrentLoopOutPosition = '/Engine/Deck1/Track/CurrentLoopOutPosition', - EngineDeck1TrackCurrentLoopSizeInBeats = '/Engine/Deck1/Track/CurrentLoopSizeInBeats', - EngineDeck1TrackKeyLock = '/Engine/Deck1/Track/KeyLock', - EngineDeck1TrackLoopEnableState = '/Engine/Deck1/Track/LoopEnableState', - EngineDeck1TrackLoopQuickLoop1 = '/Engine/Deck1/Track/Loop/QuickLoop1', - EngineDeck1TrackLoopQuickLoop2 = '/Engine/Deck1/Track/Loop/QuickLoop2', - EngineDeck1TrackLoopQuickLoop3 = '/Engine/Deck1/Track/Loop/QuickLoop3', - EngineDeck1TrackLoopQuickLoop4 = '/Engine/Deck1/Track/Loop/QuickLoop4', - EngineDeck1TrackLoopQuickLoop5 = '/Engine/Deck1/Track/Loop/QuickLoop5', - EngineDeck1TrackLoopQuickLoop6 = '/Engine/Deck1/Track/Loop/QuickLoop6', - EngineDeck1TrackLoopQuickLoop7 = '/Engine/Deck1/Track/Loop/QuickLoop7', - EngineDeck1TrackLoopQuickLoop8 = '/Engine/Deck1/Track/Loop/QuickLoop8', - EngineDeck1TrackPlayPauseLEDState = '/Engine/Deck1/Track/PlayPauseLEDState', - EngineDeck1TrackSampleRate = '/Engine/Deck1/Track/SampleRate', - EngineDeck1TrackSongAnalyzed = '/Engine/Deck1/Track/SongAnalyzed', - EngineDeck1TrackSongLoaded = '/Engine/Deck1/Track/SongLoaded', - EngineDeck1TrackSongName = '/Engine/Deck1/Track/SongName', - EngineDeck1TrackSoundSwitchGUID = '/Engine/Deck1/Track/SoundSwitchGuid', - EngineDeck1TrackTrackBytes = '/Engine/Deck1/Track/TrackBytes', - EngineDeck1TrackTrackData = '/Engine/Deck1/Track/TrackData', - EngineDeck1TrackTrackLength = '/Engine/Deck1/Track/TrackLength', - EngineDeck1TrackTrackName = '/Engine/Deck1/Track/TrackName', - EngineDeck1TrackTrackNetworkPath = '/Engine/Deck1/Track/TrackNetworkPath', - EngineDeck1TrackTrackURI = '/Engine/Deck1/Track/TrackUri', - EngineDeck1TrackTrackWasPlayed = '/Engine/Deck1/Track/TrackWasPlayed', - EngineDeck2CurrentBPM = '/Engine/Deck2/CurrentBPM', - EngineDeck2ExternalMixerVolume = '/Engine/Deck2/ExternalMixerVolume', - EngineDeck2ExternalScratchWheelTouch = '/Engine/Deck2/ExternalScratchWheelTouch', - EngineDeck2PadsView = '/Engine/Deck2/Pads/View', - EngineDeck2Play = '/Engine/Deck2/Play', - EngineDeck2PlayState = '/Engine/Deck2/PlayState', - EngineDeck2PlayStatePath = '/Engine/Deck2/PlayStatePath', - EngineDeck2Speed = '/Engine/Deck2/Speed', - EngineDeck2SpeedNeutral = '/Engine/Deck2/SpeedNeutral', - EngineDeck2SpeedOffsetDown = '/Engine/Deck2/SpeedOffsetDown', - EngineDeck2SpeedOffsetUp = '/Engine/Deck2/SpeedOffsetUp', - EngineDeck2SpeedRange = '/Engine/Deck2/SpeedRange', - EngineDeck2SpeedState = '/Engine/Deck2/SpeedState', - EngineDeck2SyncMode = '/Engine/Deck2/SyncMode', - EngineDeck2TrackArtistName = '/Engine/Deck2/Track/ArtistName', - EngineDeck2TrackBleep = '/Engine/Deck2/Track/Bleep', - EngineDeck2TrackCuePosition = '/Engine/Deck2/Track/CuePosition', - EngineDeck2TrackCurrentBPM = '/Engine/Deck2/Track/CurrentBPM', - EngineDeck2TrackCurrentKeyIndex = '/Engine/Deck2/Track/CurrentKeyIndex', - EngineDeck2TrackCurrentLoopInPosition = '/Engine/Deck2/Track/CurrentLoopInPosition', - EngineDeck2TrackCurrentLoopOutPosition = '/Engine/Deck2/Track/CurrentLoopOutPosition', - EngineDeck2TrackCurrentLoopSizeInBeats = '/Engine/Deck2/Track/CurrentLoopSizeInBeats', - EngineDeck2TrackKeyLock = '/Engine/Deck2/Track/KeyLock', - EngineDeck2TrackLoopEnableState = '/Engine/Deck2/Track/LoopEnableState', - EngineDeck2TrackLoopQuickLoop1 = '/Engine/Deck2/Track/Loop/QuickLoop1', - EngineDeck2TrackLoopQuickLoop2 = '/Engine/Deck2/Track/Loop/QuickLoop2', - EngineDeck2TrackLoopQuickLoop3 = '/Engine/Deck2/Track/Loop/QuickLoop3', - EngineDeck2TrackLoopQuickLoop4 = '/Engine/Deck2/Track/Loop/QuickLoop4', - EngineDeck2TrackLoopQuickLoop5 = '/Engine/Deck2/Track/Loop/QuickLoop5', - EngineDeck2TrackLoopQuickLoop6 = '/Engine/Deck2/Track/Loop/QuickLoop6', - EngineDeck2TrackLoopQuickLoop7 = '/Engine/Deck2/Track/Loop/QuickLoop7', - EngineDeck2TrackLoopQuickLoop8 = '/Engine/Deck2/Track/Loop/QuickLoop8', - EngineDeck2TrackPlayPauseLEDState = '/Engine/Deck2/Track/PlayPauseLEDState', - EngineDeck2TrackSampleRate = '/Engine/Deck2/Track/SampleRate', - EngineDeck2TrackSongAnalyzed = '/Engine/Deck2/Track/SongAnalyzed', - EngineDeck2TrackSongLoaded = '/Engine/Deck2/Track/SongLoaded', - EngineDeck2TrackSongName = '/Engine/Deck2/Track/SongName', - EngineDeck2TrackSoundSwitchGUID = '/Engine/Deck2/Track/SoundSwitchGuid', - EngineDeck2TrackTrackBytes = '/Engine/Deck2/Track/TrackBytes', - EngineDeck2TrackTrackData = '/Engine/Deck2/Track/TrackData', - EngineDeck2TrackTrackLength = '/Engine/Deck2/Track/TrackLength', - EngineDeck2TrackTrackName = '/Engine/Deck2/Track/TrackName', - EngineDeck2TrackTrackNetworkPath = '/Engine/Deck2/Track/TrackNetworkPath', - EngineDeck2TrackTrackURI = '/Engine/Deck2/Track/TrackUri', - EngineDeck2TrackTrackWasPlayed = '/Engine/Deck2/Track/TrackWasPlayed', - EngineDeck3CurrentBPM = '/Engine/Deck3/CurrentBPM', - EngineDeck3ExternalMixerVolume = '/Engine/Deck3/ExternalMixerVolume', - EngineDeck3ExternalScratchWheelTouch = '/Engine/Deck3/ExternalScratchWheelTouch', - EngineDeck3PadsView = '/Engine/Deck3/Pads/View', - EngineDeck3Play = '/Engine/Deck3/Play', - EngineDeck3PlayState = '/Engine/Deck3/PlayState', - EngineDeck3PlayStatePath = '/Engine/Deck3/PlayStatePath', - EngineDeck3Speed = '/Engine/Deck3/Speed', - EngineDeck3SpeedNeutral = '/Engine/Deck3/SpeedNeutral', - EngineDeck3SpeedOffsetDown = '/Engine/Deck3/SpeedOffsetDown', - EngineDeck3SpeedOffsetUp = '/Engine/Deck3/SpeedOffsetUp', - EngineDeck3SpeedRange = '/Engine/Deck3/SpeedRange', - EngineDeck3SpeedState = '/Engine/Deck3/SpeedState', - EngineDeck3SyncMode = '/Engine/Deck3/SyncMode', - EngineDeck3TrackArtistName = '/Engine/Deck3/Track/ArtistName', - EngineDeck3TrackBleep = '/Engine/Deck3/Track/Bleep', - EngineDeck3TrackCuePosition = '/Engine/Deck3/Track/CuePosition', - EngineDeck3TrackCurrentBPM = '/Engine/Deck3/Track/CurrentBPM', - EngineDeck3TrackCurrentKeyIndex = '/Engine/Deck3/Track/CurrentKeyIndex', - EngineDeck3TrackCurrentLoopInPosition = '/Engine/Deck3/Track/CurrentLoopInPosition', - EngineDeck3TrackCurrentLoopOutPosition = '/Engine/Deck3/Track/CurrentLoopOutPosition', - EngineDeck3TrackCurrentLoopSizeInBeats = '/Engine/Deck3/Track/CurrentLoopSizeInBeats', - EngineDeck3TrackKeyLock = '/Engine/Deck3/Track/KeyLock', - EngineDeck3TrackLoopEnableState = '/Engine/Deck3/Track/LoopEnableState', - EngineDeck3TrackLoopQuickLoop1 = '/Engine/Deck3/Track/Loop/QuickLoop1', - EngineDeck3TrackLoopQuickLoop2 = '/Engine/Deck3/Track/Loop/QuickLoop2', - EngineDeck3TrackLoopQuickLoop3 = '/Engine/Deck3/Track/Loop/QuickLoop3', - EngineDeck3TrackLoopQuickLoop4 = '/Engine/Deck3/Track/Loop/QuickLoop4', - EngineDeck3TrackLoopQuickLoop5 = '/Engine/Deck3/Track/Loop/QuickLoop5', - EngineDeck3TrackLoopQuickLoop6 = '/Engine/Deck3/Track/Loop/QuickLoop6', - EngineDeck3TrackLoopQuickLoop7 = '/Engine/Deck3/Track/Loop/QuickLoop7', - EngineDeck3TrackLoopQuickLoop8 = '/Engine/Deck3/Track/Loop/QuickLoop8', - EngineDeck3TrackPlayPauseLEDState = '/Engine/Deck3/Track/PlayPauseLEDState', - EngineDeck3TrackSampleRate = '/Engine/Deck3/Track/SampleRate', - EngineDeck3TrackSongAnalyzed = '/Engine/Deck3/Track/SongAnalyzed', - EngineDeck3TrackSongLoaded = '/Engine/Deck3/Track/SongLoaded', - EngineDeck3TrackSongName = '/Engine/Deck3/Track/SongName', - EngineDeck3TrackSoundSwitchGUID = '/Engine/Deck3/Track/SoundSwitchGuid', - EngineDeck3TrackTrackBytes = '/Engine/Deck3/Track/TrackBytes', - EngineDeck3TrackTrackData = '/Engine/Deck3/Track/TrackData', - EngineDeck3TrackTrackLength = '/Engine/Deck3/Track/TrackLength', - EngineDeck3TrackTrackName = '/Engine/Deck3/Track/TrackName', - EngineDeck3TrackTrackNetworkPath = '/Engine/Deck3/Track/TrackNetworkPath', - EngineDeck3TrackTrackURI = '/Engine/Deck3/Track/TrackUri', - EngineDeck3TrackTrackWasPlayed = '/Engine/Deck3/Track/TrackWasPlayed', - EngineDeck4CurrentBPM = '/Engine/Deck4/CurrentBPM', - EngineDeck4ExternalMixerVolume = '/Engine/Deck4/ExternalMixerVolume', - EngineDeck4ExternalScratchWheelTouch = '/Engine/Deck4/ExternalScratchWheelTouch', - EngineDeck4PadsView = '/Engine/Deck4/Pads/View', - EngineDeck4Play = '/Engine/Deck4/Play', - EngineDeck4PlayState = '/Engine/Deck4/PlayState', - EngineDeck4PlayStatePath = '/Engine/Deck4/PlayStatePath', - EngineDeck4Speed = '/Engine/Deck4/Speed', - EngineDeck4SpeedNeutral = '/Engine/Deck4/SpeedNeutral', - EngineDeck4SpeedOffsetDown = '/Engine/Deck4/SpeedOffsetDown', - EngineDeck4SpeedOffsetUp = '/Engine/Deck4/SpeedOffsetUp', - EngineDeck4SpeedRange = '/Engine/Deck4/SpeedRange', - EngineDeck4SpeedState = '/Engine/Deck4/SpeedState', - EngineDeck4SyncMode = '/Engine/Deck4/SyncMode', - EngineDeck4TrackArtistName = '/Engine/Deck4/Track/ArtistName', - EngineDeck4TrackBleep = '/Engine/Deck4/Track/Bleep', - EngineDeck4TrackCuePosition = '/Engine/Deck4/Track/CuePosition', - EngineDeck4TrackCurrentBPM = '/Engine/Deck4/Track/CurrentBPM', - EngineDeck4TrackCurrentKeyIndex = '/Engine/Deck4/Track/CurrentKeyIndex', - EngineDeck4TrackCurrentLoopInPosition = '/Engine/Deck4/Track/CurrentLoopInPosition', - EngineDeck4TrackCurrentLoopOutPosition = '/Engine/Deck4/Track/CurrentLoopOutPosition', - EngineDeck4TrackCurrentLoopSizeInBeats = '/Engine/Deck4/Track/CurrentLoopSizeInBeats', - EngineDeck4TrackKeyLock = '/Engine/Deck4/Track/KeyLock', - EngineDeck4TrackLoopEnableState = '/Engine/Deck4/Track/LoopEnableState', - EngineDeck4TrackLoopQuickLoop1 = '/Engine/Deck4/Track/Loop/QuickLoop1', - EngineDeck4TrackLoopQuickLoop2 = '/Engine/Deck4/Track/Loop/QuickLoop2', - EngineDeck4TrackLoopQuickLoop3 = '/Engine/Deck4/Track/Loop/QuickLoop3', - EngineDeck4TrackLoopQuickLoop4 = '/Engine/Deck4/Track/Loop/QuickLoop4', - EngineDeck4TrackLoopQuickLoop5 = '/Engine/Deck4/Track/Loop/QuickLoop5', - EngineDeck4TrackLoopQuickLoop6 = '/Engine/Deck4/Track/Loop/QuickLoop6', - EngineDeck4TrackLoopQuickLoop7 = '/Engine/Deck4/Track/Loop/QuickLoop7', - EngineDeck4TrackLoopQuickLoop8 = '/Engine/Deck4/Track/Loop/QuickLoop8', - EngineDeck4TrackPlayPauseLEDState = '/Engine/Deck4/Track/PlayPauseLEDState', - EngineDeck4TrackSampleRate = '/Engine/Deck4/Track/SampleRate', - EngineDeck4TrackSongAnalyzed = '/Engine/Deck4/Track/SongAnalyzed', - EngineDeck4TrackSongLoaded = '/Engine/Deck4/Track/SongLoaded', - EngineDeck4TrackSongName = '/Engine/Deck4/Track/SongName', - EngineDeck4TrackSoundSwitchGUID = '/Engine/Deck4/Track/SoundSwitchGuid', - EngineDeck4TrackTrackBytes = '/Engine/Deck4/Track/TrackBytes', - EngineDeck4TrackTrackData = '/Engine/Deck4/Track/TrackData', - EngineDeck4TrackTrackLength = '/Engine/Deck4/Track/TrackLength', - EngineDeck4TrackTrackName = '/Engine/Deck4/Track/TrackName', - EngineDeck4TrackTrackNetworkPath = '/Engine/Deck4/Track/TrackNetworkPath', - EngineDeck4TrackTrackURI = '/Engine/Deck4/Track/TrackUri', - EngineDeck4TrackTrackWasPlayed = '/Engine/Deck4/Track/TrackWasPlayed', +// EngineDeck1CurrentBPM = '/Engine/Deck1/CurrentBPM', +// EngineDeck1ExternalMixerVolume = '/Engine/Deck1/ExternalMixerVolume', +// EngineDeck1ExternalScratchWheelTouch = '/Engine/Deck1/ExternalScratchWheelTouch', +// EngineDeck1PadsView = '/Engine/Deck1/Pads/View', +// EngineDeck1Play = '/Engine/Deck1/Play', +// EngineDeck1PlayState = '/Engine/Deck1/PlayState', +// EngineDeck1PlayStatePath = '/Engine/Deck1/PlayStatePath', +// EngineDeck1Speed = '/Engine/Deck1/Speed', +// EngineDeck1SpeedNeutral = '/Engine/Deck1/SpeedNeutral', +// EngineDeck1SpeedOffsetDown = '/Engine/Deck1/SpeedOffsetDown', +// EngineDeck1SpeedOffsetUp = '/Engine/Deck1/SpeedOffsetUp', +// EngineDeck1SpeedRange = '/Engine/Deck1/SpeedRange', +// EngineDeck1SpeedState = '/Engine/Deck1/SpeedState', +// EngineDeck1SyncMode = '/Engine/Deck1/SyncMode', +// EngineDeck1TrackArtistName = '/Engine/Deck1/Track/ArtistName', +// EngineDeck1TrackBleep = '/Engine/Deck1/Track/Bleep', +// EngineDeck1TrackCuePosition = '/Engine/Deck1/Track/CuePosition', +// EngineDeck1TrackCurrentBPM = '/Engine/Deck1/Track/CurrentBPM', +// EngineDeck1TrackCurrentKeyIndex = '/Engine/Deck1/Track/CurrentKeyIndex', +// EngineDeck1TrackCurrentLoopInPosition = '/Engine/Deck1/Track/CurrentLoopInPosition', +// EngineDeck1TrackCurrentLoopOutPosition = '/Engine/Deck1/Track/CurrentLoopOutPosition', +// EngineDeck1TrackCurrentLoopSizeInBeats = '/Engine/Deck1/Track/CurrentLoopSizeInBeats', +// EngineDeck1TrackKeyLock = '/Engine/Deck1/Track/KeyLock', +// EngineDeck1TrackLoopEnableState = '/Engine/Deck1/Track/LoopEnableState', +// EngineDeck1TrackLoopQuickLoop1 = '/Engine/Deck1/Track/Loop/QuickLoop1', +// EngineDeck1TrackLoopQuickLoop2 = '/Engine/Deck1/Track/Loop/QuickLoop2', +// EngineDeck1TrackLoopQuickLoop3 = '/Engine/Deck1/Track/Loop/QuickLoop3', +// EngineDeck1TrackLoopQuickLoop4 = '/Engine/Deck1/Track/Loop/QuickLoop4', +// EngineDeck1TrackLoopQuickLoop5 = '/Engine/Deck1/Track/Loop/QuickLoop5', +// EngineDeck1TrackLoopQuickLoop6 = '/Engine/Deck1/Track/Loop/QuickLoop6', +// EngineDeck1TrackLoopQuickLoop7 = '/Engine/Deck1/Track/Loop/QuickLoop7', +// EngineDeck1TrackLoopQuickLoop8 = '/Engine/Deck1/Track/Loop/QuickLoop8', +// EngineDeck1TrackPlayPauseLEDState = '/Engine/Deck1/Track/PlayPauseLEDState', +// EngineDeck1TrackSampleRate = '/Engine/Deck1/Track/SampleRate', +// EngineDeck1TrackSongAnalyzed = '/Engine/Deck1/Track/SongAnalyzed', +// EngineDeck1TrackSongLoaded = '/Engine/Deck1/Track/SongLoaded', +// EngineDeck1TrackSongName = '/Engine/Deck1/Track/SongName', +// EngineDeck1TrackSoundSwitchGUID = '/Engine/Deck1/Track/SoundSwitchGuid', +// EngineDeck1TrackTrackBytes = '/Engine/Deck1/Track/TrackBytes', +// EngineDeck1TrackTrackData = '/Engine/Deck1/Track/TrackData', +// EngineDeck1TrackTrackLength = '/Engine/Deck1/Track/TrackLength', +// EngineDeck1TrackTrackName = '/Engine/Deck1/Track/TrackName', +// EngineDeck1TrackTrackNetworkPath = '/Engine/Deck1/Track/TrackNetworkPath', +// EngineDeck1TrackTrackURI = '/Engine/Deck1/Track/TrackUri', +// EngineDeck1TrackTrackWasPlayed = '/Engine/Deck1/Track/TrackWasPlayed', +// EngineDeck2CurrentBPM = '/Engine/Deck2/CurrentBPM', +// EngineDeck2ExternalMixerVolume = '/Engine/Deck2/ExternalMixerVolume', +// EngineDeck2ExternalScratchWheelTouch = '/Engine/Deck2/ExternalScratchWheelTouch', +// EngineDeck2PadsView = '/Engine/Deck2/Pads/View', +// EngineDeck2Play = '/Engine/Deck2/Play', +// EngineDeck2PlayState = '/Engine/Deck2/PlayState', +// EngineDeck2PlayStatePath = '/Engine/Deck2/PlayStatePath', +// EngineDeck2Speed = '/Engine/Deck2/Speed', +// EngineDeck2SpeedNeutral = '/Engine/Deck2/SpeedNeutral', +// EngineDeck2SpeedOffsetDown = '/Engine/Deck2/SpeedOffsetDown', +// EngineDeck2SpeedOffsetUp = '/Engine/Deck2/SpeedOffsetUp', +// EngineDeck2SpeedRange = '/Engine/Deck2/SpeedRange', +// EngineDeck2SpeedState = '/Engine/Deck2/SpeedState', +// EngineDeck2SyncMode = '/Engine/Deck2/SyncMode', +// EngineDeck2TrackArtistName = '/Engine/Deck2/Track/ArtistName', +// EngineDeck2TrackBleep = '/Engine/Deck2/Track/Bleep', +// EngineDeck2TrackCuePosition = '/Engine/Deck2/Track/CuePosition', +// EngineDeck2TrackCurrentBPM = '/Engine/Deck2/Track/CurrentBPM', +// EngineDeck2TrackCurrentKeyIndex = '/Engine/Deck2/Track/CurrentKeyIndex', +// EngineDeck2TrackCurrentLoopInPosition = '/Engine/Deck2/Track/CurrentLoopInPosition', +// EngineDeck2TrackCurrentLoopOutPosition = '/Engine/Deck2/Track/CurrentLoopOutPosition', +// EngineDeck2TrackCurrentLoopSizeInBeats = '/Engine/Deck2/Track/CurrentLoopSizeInBeats', +// EngineDeck2TrackKeyLock = '/Engine/Deck2/Track/KeyLock', +// EngineDeck2TrackLoopEnableState = '/Engine/Deck2/Track/LoopEnableState', +// EngineDeck2TrackLoopQuickLoop1 = '/Engine/Deck2/Track/Loop/QuickLoop1', +// EngineDeck2TrackLoopQuickLoop2 = '/Engine/Deck2/Track/Loop/QuickLoop2', +// EngineDeck2TrackLoopQuickLoop3 = '/Engine/Deck2/Track/Loop/QuickLoop3', +// EngineDeck2TrackLoopQuickLoop4 = '/Engine/Deck2/Track/Loop/QuickLoop4', +// EngineDeck2TrackLoopQuickLoop5 = '/Engine/Deck2/Track/Loop/QuickLoop5', +// EngineDeck2TrackLoopQuickLoop6 = '/Engine/Deck2/Track/Loop/QuickLoop6', +// EngineDeck2TrackLoopQuickLoop7 = '/Engine/Deck2/Track/Loop/QuickLoop7', +// EngineDeck2TrackLoopQuickLoop8 = '/Engine/Deck2/Track/Loop/QuickLoop8', +// EngineDeck2TrackPlayPauseLEDState = '/Engine/Deck2/Track/PlayPauseLEDState', +// EngineDeck2TrackSampleRate = '/Engine/Deck2/Track/SampleRate', +// EngineDeck2TrackSongAnalyzed = '/Engine/Deck2/Track/SongAnalyzed', +// EngineDeck2TrackSongLoaded = '/Engine/Deck2/Track/SongLoaded', +// EngineDeck2TrackSongName = '/Engine/Deck2/Track/SongName', +// EngineDeck2TrackSoundSwitchGUID = '/Engine/Deck2/Track/SoundSwitchGuid', +// EngineDeck2TrackTrackBytes = '/Engine/Deck2/Track/TrackBytes', +// EngineDeck2TrackTrackData = '/Engine/Deck2/Track/TrackData', +// EngineDeck2TrackTrackLength = '/Engine/Deck2/Track/TrackLength', +// EngineDeck2TrackTrackName = '/Engine/Deck2/Track/TrackName', +// EngineDeck2TrackTrackNetworkPath = '/Engine/Deck2/Track/TrackNetworkPath', +// EngineDeck2TrackTrackURI = '/Engine/Deck2/Track/TrackUri', +// EngineDeck2TrackTrackWasPlayed = '/Engine/Deck2/Track/TrackWasPlayed', +// EngineDeck3CurrentBPM = '/Engine/Deck3/CurrentBPM', +// EngineDeck3ExternalMixerVolume = '/Engine/Deck3/ExternalMixerVolume', +// EngineDeck3ExternalScratchWheelTouch = '/Engine/Deck3/ExternalScratchWheelTouch', +// EngineDeck3PadsView = '/Engine/Deck3/Pads/View', +// EngineDeck3Play = '/Engine/Deck3/Play', +// EngineDeck3PlayState = '/Engine/Deck3/PlayState', +// EngineDeck3PlayStatePath = '/Engine/Deck3/PlayStatePath', +// EngineDeck3Speed = '/Engine/Deck3/Speed', +// EngineDeck3SpeedNeutral = '/Engine/Deck3/SpeedNeutral', +// EngineDeck3SpeedOffsetDown = '/Engine/Deck3/SpeedOffsetDown', +// EngineDeck3SpeedOffsetUp = '/Engine/Deck3/SpeedOffsetUp', +// EngineDeck3SpeedRange = '/Engine/Deck3/SpeedRange', +// EngineDeck3SpeedState = '/Engine/Deck3/SpeedState', +// EngineDeck3SyncMode = '/Engine/Deck3/SyncMode', +// EngineDeck3TrackArtistName = '/Engine/Deck3/Track/ArtistName', +// EngineDeck3TrackBleep = '/Engine/Deck3/Track/Bleep', +// EngineDeck3TrackCuePosition = '/Engine/Deck3/Track/CuePosition', +// EngineDeck3TrackCurrentBPM = '/Engine/Deck3/Track/CurrentBPM', +// EngineDeck3TrackCurrentKeyIndex = '/Engine/Deck3/Track/CurrentKeyIndex', +// EngineDeck3TrackCurrentLoopInPosition = '/Engine/Deck3/Track/CurrentLoopInPosition', +// EngineDeck3TrackCurrentLoopOutPosition = '/Engine/Deck3/Track/CurrentLoopOutPosition', +// EngineDeck3TrackCurrentLoopSizeInBeats = '/Engine/Deck3/Track/CurrentLoopSizeInBeats', +// EngineDeck3TrackKeyLock = '/Engine/Deck3/Track/KeyLock', +// EngineDeck3TrackLoopEnableState = '/Engine/Deck3/Track/LoopEnableState', +// EngineDeck3TrackLoopQuickLoop1 = '/Engine/Deck3/Track/Loop/QuickLoop1', +// EngineDeck3TrackLoopQuickLoop2 = '/Engine/Deck3/Track/Loop/QuickLoop2', +// EngineDeck3TrackLoopQuickLoop3 = '/Engine/Deck3/Track/Loop/QuickLoop3', +// EngineDeck3TrackLoopQuickLoop4 = '/Engine/Deck3/Track/Loop/QuickLoop4', +// EngineDeck3TrackLoopQuickLoop5 = '/Engine/Deck3/Track/Loop/QuickLoop5', +// EngineDeck3TrackLoopQuickLoop6 = '/Engine/Deck3/Track/Loop/QuickLoop6', +// EngineDeck3TrackLoopQuickLoop7 = '/Engine/Deck3/Track/Loop/QuickLoop7', +// EngineDeck3TrackLoopQuickLoop8 = '/Engine/Deck3/Track/Loop/QuickLoop8', +// EngineDeck3TrackPlayPauseLEDState = '/Engine/Deck3/Track/PlayPauseLEDState', +// EngineDeck3TrackSampleRate = '/Engine/Deck3/Track/SampleRate', +// EngineDeck3TrackSongAnalyzed = '/Engine/Deck3/Track/SongAnalyzed', +// EngineDeck3TrackSongLoaded = '/Engine/Deck3/Track/SongLoaded', +// EngineDeck3TrackSongName = '/Engine/Deck3/Track/SongName', +// EngineDeck3TrackSoundSwitchGUID = '/Engine/Deck3/Track/SoundSwitchGuid', +// EngineDeck3TrackTrackBytes = '/Engine/Deck3/Track/TrackBytes', +// EngineDeck3TrackTrackData = '/Engine/Deck3/Track/TrackData', +// EngineDeck3TrackTrackLength = '/Engine/Deck3/Track/TrackLength', +// EngineDeck3TrackTrackName = '/Engine/Deck3/Track/TrackName', +// EngineDeck3TrackTrackNetworkPath = '/Engine/Deck3/Track/TrackNetworkPath', +// EngineDeck3TrackTrackURI = '/Engine/Deck3/Track/TrackUri', +// EngineDeck3TrackTrackWasPlayed = '/Engine/Deck3/Track/TrackWasPlayed', +// EngineDeck4CurrentBPM = '/Engine/Deck4/CurrentBPM', +// EngineDeck4ExternalMixerVolume = '/Engine/Deck4/ExternalMixerVolume', +// EngineDeck4ExternalScratchWheelTouch = '/Engine/Deck4/ExternalScratchWheelTouch', +// EngineDeck4PadsView = '/Engine/Deck4/Pads/View', +// EngineDeck4Play = '/Engine/Deck4/Play', +// EngineDeck4PlayState = '/Engine/Deck4/PlayState', +// EngineDeck4PlayStatePath = '/Engine/Deck4/PlayStatePath', +// EngineDeck4Speed = '/Engine/Deck4/Speed', +// EngineDeck4SpeedNeutral = '/Engine/Deck4/SpeedNeutral', +// EngineDeck4SpeedOffsetDown = '/Engine/Deck4/SpeedOffsetDown', +// EngineDeck4SpeedOffsetUp = '/Engine/Deck4/SpeedOffsetUp', +// EngineDeck4SpeedRange = '/Engine/Deck4/SpeedRange', +// EngineDeck4SpeedState = '/Engine/Deck4/SpeedState', +// EngineDeck4SyncMode = '/Engine/Deck4/SyncMode', +// EngineDeck4TrackArtistName = '/Engine/Deck4/Track/ArtistName', +// EngineDeck4TrackBleep = '/Engine/Deck4/Track/Bleep', +// EngineDeck4TrackCuePosition = '/Engine/Deck4/Track/CuePosition', +// EngineDeck4TrackCurrentBPM = '/Engine/Deck4/Track/CurrentBPM', +// EngineDeck4TrackCurrentKeyIndex = '/Engine/Deck4/Track/CurrentKeyIndex', +// EngineDeck4TrackCurrentLoopInPosition = '/Engine/Deck4/Track/CurrentLoopInPosition', +// EngineDeck4TrackCurrentLoopOutPosition = '/Engine/Deck4/Track/CurrentLoopOutPosition', +// EngineDeck4TrackCurrentLoopSizeInBeats = '/Engine/Deck4/Track/CurrentLoopSizeInBeats', +// EngineDeck4TrackKeyLock = '/Engine/Deck4/Track/KeyLock', +// EngineDeck4TrackLoopEnableState = '/Engine/Deck4/Track/LoopEnableState', +// EngineDeck4TrackLoopQuickLoop1 = '/Engine/Deck4/Track/Loop/QuickLoop1', +// EngineDeck4TrackLoopQuickLoop2 = '/Engine/Deck4/Track/Loop/QuickLoop2', +// EngineDeck4TrackLoopQuickLoop3 = '/Engine/Deck4/Track/Loop/QuickLoop3', +// EngineDeck4TrackLoopQuickLoop4 = '/Engine/Deck4/Track/Loop/QuickLoop4', +// EngineDeck4TrackLoopQuickLoop5 = '/Engine/Deck4/Track/Loop/QuickLoop5', +// EngineDeck4TrackLoopQuickLoop6 = '/Engine/Deck4/Track/Loop/QuickLoop6', +// EngineDeck4TrackLoopQuickLoop7 = '/Engine/Deck4/Track/Loop/QuickLoop7', +// EngineDeck4TrackLoopQuickLoop8 = '/Engine/Deck4/Track/Loop/QuickLoop8', +// EngineDeck4TrackPlayPauseLEDState = '/Engine/Deck4/Track/PlayPauseLEDState', +// EngineDeck4TrackSampleRate = '/Engine/Deck4/Track/SampleRate', +// EngineDeck4TrackSongAnalyzed = '/Engine/Deck4/Track/SongAnalyzed', +// EngineDeck4TrackSongLoaded = '/Engine/Deck4/Track/SongLoaded', +// EngineDeck4TrackSongName = '/Engine/Deck4/Track/SongName', +// EngineDeck4TrackSoundSwitchGUID = '/Engine/Deck4/Track/SoundSwitchGuid', +// EngineDeck4TrackTrackBytes = '/Engine/Deck4/Track/TrackBytes', +// EngineDeck4TrackTrackData = '/Engine/Deck4/Track/TrackData', +// EngineDeck4TrackTrackLength = '/Engine/Deck4/Track/TrackLength', +// EngineDeck4TrackTrackName = '/Engine/Deck4/Track/TrackName', +// EngineDeck4TrackTrackNetworkPath = '/Engine/Deck4/Track/TrackNetworkPath', +// EngineDeck4TrackTrackURI = '/Engine/Deck4/Track/TrackUri', +// EngineDeck4TrackTrackWasPlayed = '/Engine/Deck4/Track/TrackWasPlayed', - ClientDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', - ClientDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', +// ClientDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', +// ClientDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', - MixerNumberOfChannels = '/Mixer/NumberOfChannels', +// MixerNumberOfChannels = '/Mixer/NumberOfChannels', - MixerChannelAssignment1 = '/Mixer/ChannelAssignment1', - MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', - MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', - MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', +// MixerChannelAssignment1 = '/Mixer/ChannelAssignment1', +// MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', +// MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', +// MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', - MixerCH1faderPosition = '/Mixer/CH1faderPosition', - MixerCH2faderPosition = '/Mixer/CH2faderPosition', - MixerCH3faderPosition = '/Mixer/CH3faderPosition', - MixerCH4faderPosition = '/Mixer/CH4faderPosition', - MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', +// MixerCH1faderPosition = '/Mixer/CH1faderPosition', +// MixerCH2faderPosition = '/Mixer/CH2faderPosition', +// MixerCH3faderPosition = '/Mixer/CH3faderPosition', +// MixerCH4faderPosition = '/Mixer/CH4faderPosition', +// MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', // PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', // PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', // EngineDeck1PFL = '/Engine/Deck1/PFL', -} +// } export const StageLinqValueObj = { player: { diff --git a/types/index.ts b/types/index.ts index e18e541..01cd01e 100644 --- a/types/index.ts +++ b/types/index.ts @@ -39,18 +39,6 @@ export interface ConnectionInfo extends DiscoveryMessage { addressPort?: string; } -// export interface DiscoveryDevice { -// [key: string]: { -// info: ConnectionInfo; - -// } -// } - - -export interface ServicePorts { - [key: string]: number; -} - export interface ServiceMessage { id: number; message: T; diff --git a/types/tokens.ts b/types/tokens.ts index 37db11d..54db7cb 100644 --- a/types/tokens.ts +++ b/types/tokens.ts @@ -1,7 +1,7 @@ import { DiscoveryMessageOptions } from '../network'; +import { version } from '../package.json'; -//export const CLIENT_TOKEN = new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]); -export const Tokens = { +const Tokens = { SoundSwitch: new Uint8Array([82, 253, 252, 7, 33, 130, 101, 79, 22, 63, 95, 15, 154, 98, 29, 114]), Sc6000_1: new Uint8Array([ 130, 139, 235, 2, 218, 31, 78, 104, 166, 175, 176, 177, 103, 234, 240, 162 ]), Sc6000_2: new Uint8Array([ 38, 210, 56, 103, 28, 214, 78, 63, 128, 161, 17, 130, 106, 196, 17, 32 ]), @@ -9,14 +9,15 @@ export const Tokens = { Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) } -/* -export function deviceIdFromBuff(token: Uint8Array): string { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(token).toString('hex')).splice(1).join('-'); -} -*/ - export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { + + StageLinqJS: { + name: 'stagelinqjs', + version: version, + source: 'SLJS', + token: Tokens.Listen + }, + NowPlaying: { name: 'nowplaying', version: '2.2.0', From 325dff286431409b6d109634ce89c52e8a11b659 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:07:48 -0400 Subject: [PATCH 083/146] getTrackInfo waits for DownloadDB --- Databases/Databases.ts | 9 +++------ Databases/Sources.ts | 11 +++++++++++ cli/index.ts | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 9760277..14c05fd 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -32,18 +32,15 @@ export class Databases extends EventEmitter { const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); - source.database.local = { - path: dbPath, - }; - source.database.connection = new DbConnection(dbPath) - // Save database to a file const file = await source.service.getFile(source.database.location, source.service.socket); Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); source.database.connection = new DbConnection(dbPath); - + source.database.local = { + path: dbPath, + }; this.parent.sources.setSource(source); Logger.debug(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); diff --git a/Databases/Sources.ts b/Databases/Sources.ts index bd34dce..9bbff17 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -28,6 +28,17 @@ export class Sources extends EventEmitter { return this._sources.has(`${deviceId.string}${sourceName}`); } + /** + * + * @param {string} sourceName - Name of source in EngineOS, eg: 'DJ STICK (USB 1)' + * @param {DeviceId} deviceId - DeviceID instance + * @returns boolean + */ + hasSourceAndDB(sourceName: string, deviceId: DeviceId): boolean { + const source = this._sources.get(`${deviceId.string}${sourceName}`); + return (source && source.database?.local) ? true : false + } + /** * * @param sourceName Name of source in EngineOS, eg: 'DJ STICK (USB 1)' diff --git a/cli/index.ts b/cli/index.ts index afb0e0f..a667099 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -25,8 +25,8 @@ function progressBar(size: number, bytes: number, total: number): string { } async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, trackName: string) { - while (!stageLinq.sources.hasSource(sourceName, deviceId)) { - await sleep(250); + while (!stageLinq.sources.hasSourceAndDB(sourceName, deviceId)) { + await sleep(1000); } try { const _source = stageLinq.sources.getSource(sourceName, deviceId); From cda355df7468b720ccd85aec5c4083b498e775f6 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:11:37 -0400 Subject: [PATCH 084/146] Remove solved TODOs --- cli/index.ts | 2 +- network/Discovery.ts | 2 +- services/Service.ts | 4 ---- types/index.ts | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index a667099..ea2eb69 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -68,7 +68,7 @@ async function main() { ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, - //ServiceList.TimeSynchronization, TODO Implement TimeSynch Fully + //ServiceList.TimeSynchronization, TODO Implement TimeSync Fully ], } diff --git a/network/Discovery.ts b/network/Discovery.ts index fb5f479..1ae6f1e 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -198,7 +198,7 @@ export class Discovery extends EventEmitter { version: discoveryMessageOptions.version }, source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token //TODO make this DeviceId + token: discoveryMessageOptions.token, }; return msg; } diff --git a/services/Service.ts b/services/Service.ts index 75f84fd..aa82b70 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -82,9 +82,6 @@ export abstract class Service extends EventEmitter { public serverStatus: boolean = false; public socket: Socket = null; - //TODO figure out removing this second DeviceId - protected _deviceId: DeviceId = null; - protected isBufferedService: boolean = true; protected parent: InstanceType; protected _handler: ServiceHandler = null; @@ -191,7 +188,6 @@ export abstract class Service extends EventEmitter { if (await this.subMessageTest(ctx.peek(20))) { const messageId = ctx.readUInt32(); - this._deviceId = new DeviceId(ctx.read(16)); //peak at network string length then rewind and read string const stringLength = ctx.readUInt32(); diff --git a/types/index.ts b/types/index.ts index 01cd01e..feb8968 100644 --- a/types/index.ts +++ b/types/index.ts @@ -42,7 +42,7 @@ export interface ConnectionInfo extends DiscoveryMessage { export interface ServiceMessage { id: number; message: T; - socket: Socket; //TODO replace with service + socket: Socket; //TODO replace with service? deviceId: DeviceId; } From cd5d392b7c239ab93f0b678347f54dc60174f982 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:11:52 -0400 Subject: [PATCH 085/146] typos --- services/FileTransfer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index d1b77dd..075f6ff 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -71,7 +71,7 @@ export class FileTransfer extends Service { private _isAvailable: boolean = true; private txId: number = 1; - // TODO need better txId to handle consurrent transfers + // TODO need better txId to handle concurrent transfers public get txid() { return this.txId; } From d327687905d4894baeb2600d1aaaa9a7c4298535 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:14:31 -0400 Subject: [PATCH 086/146] skip extra DeviceId in Services --- services/Service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/Service.ts b/services/Service.ts index aa82b70..b4e1b07 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -188,7 +188,7 @@ export abstract class Service extends EventEmitter { if (await this.subMessageTest(ctx.peek(20))) { const messageId = ctx.readUInt32(); - + ctx.seek(16) // DeviceID //peak at network string length then rewind and read string const stringLength = ctx.readUInt32(); ctx.seek(-4); From 7c6fc458e1f57eb1643b65fe7184f5839757b02f Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:18:28 -0400 Subject: [PATCH 087/146] clean some legacy stateMap Code --- services/StateMap.ts | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/services/StateMap.ts b/services/StateMap.ts index b61a222..4506664 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -72,13 +72,6 @@ export class StateMapHandler extends ServiceHandler { const stateMap = service as Services.StateMap; this.addDevice(deviceId, service); - // const listener = (data: ServiceMessage) => { - // if (data && data.message && data.message.json) { - // this.emit('stateMessage', data); - // } - // }; - // stateMap.addListener('stateMessage', listener) - stateMap.on('stateMessage', (data: ServiceMessage) => { this.emit('stateMessage', data); }); @@ -163,19 +156,7 @@ export class StateMap extends Service { protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { assert(this.deviceId); - //const buffer = p_ctx.readRemainingAsNewBuffer(); //new DataView(p_ctx.readRemainingAsNewArrayBuffer()); - - //buffer.byteLength - //const marker = p_ctx.getString(4); - //const action = p_ctx.read(4) - // const message = p_ctx.read() - // const response = p_ctx.read(4); - // p_ctx.rewind(); - // p_ctx.seek(12); - - // console.warn(`${action} ${response} ${message}`) - const marker = p_ctx.getString(4); if (marker !== MAGIC_MARKER) { Logger.error(assert(marker !== MAGIC_MARKER)); @@ -210,7 +191,6 @@ export class StateMap extends Service { const interval = p_ctx.readInt32(); p_ctx.seek(-4); - //console.warn(`${this.deviceId.string} name: ${name} interval: ${interval} last4bytes ${Buffer.from(p_ctx.read(4)).toString('hex')} sizeLeft: ${p_ctx.sizeLeft()}`) return { id: MAGIC_MARKER_INTERVAL, socket: socket, From 878e5cb5a9f3328976fe11d90220cc554db3cb1e Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 29 Mar 2023 23:26:20 -0400 Subject: [PATCH 088/146] more stateMap Legacy cleanup --- services/StateMap.ts | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/services/StateMap.ts b/services/StateMap.ts index 4506664..d1fd941 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -16,7 +16,6 @@ export type PlayerDeck = typeof stagelinqConfig.playerDeck; export type Mixer = typeof stagelinqConfig.mixer; const MAGIC_MARKER = 'smaa'; -// TODO: Is this thing really an interval? enum Action { request = 0x000007d2, @@ -87,8 +86,7 @@ export class StateMapHandler extends ServiceHandler { export class StateMap extends Service { public readonly name = "StateMap"; public readonly handler: StateMapHandler; - //#stateValues: Map = new Map(); - #hasReceivedState: boolean = false; + private hasReceivedState: boolean = false; constructor(p_parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(p_parent, serviceHandler, deviceId) @@ -109,30 +107,12 @@ export class StateMap extends Service { for (let state of playerStateValues) { await this.subscribeState(state, 0, socket); } - // let playerDeckStateValues: string[] = []; - // for (let i = 0; i < thisPeer.device.decks; i++) { - // playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; - // } - // for (let state of playerDeckStateValues) { - // const stateValue = `${this.deviceId.string},/${state.split('/').slice(1, 3).join("/")}` - // const newValue = `{${this.deviceId}},${state.split('/').slice(2, 3).shift().substring(4, 5)}` - // this.handler.deviceTrackRegister.set(stateValue, newValue); - // stateValueArray.push(state); - // } break; } - case "CONTROLLER": { for (let state of controllerStateValues) { await this.subscribeState(state, 0, socket); } - // let playerDeckStateValues: string[] = []; - // for (let i = 0; i < thisPeer.device.decks; i++) { - // playerDeckStateValues = [...playerDeckStateValues, ...stateReducer(stagelinqConfig.playerDeck, `/Engine/Deck${i + 1}/`)]; - // } - // for (let state of playerDeckStateValues) { - // stateValueArray.push(state); - // } break; } case "MIXER": { @@ -208,31 +188,20 @@ export class StateMap extends Service { assert.fail(`Unhandled type ${type}`); } - // private mixerAssignmentAdapter(data: ServiceMessage) { - // const keyString = `${this.deviceId.string},/Mixer/CH${data.message.name.substring(data.message.name.length - 1, data.message.name.length)}faderPosition` - // const valueString = `${data.message.json.string},/Mixer/ChannelFaderPosition`; - // this.handler.deviceTrackRegister.set(keyString, valueString); - // } - protected messageHandler(p_data: ServiceMessage): void { - //TODO do we need to emit intervals? - // if (p_data?.message?.name.substring(0, p_data?.message?.name?.length - 1) == "/Mixer/ChannelAssignment") { - // this.mixerAssignmentAdapter(p_data); - // } if (p_data?.message?.interval) { this.sendStateResponse(p_data.message.name, p_data.socket); } if (p_data?.message?.json) { - //this.#stateValues.set(p_data.message.name, "") this.emit('stateMessage', p_data); } - if (p_data && p_data.message.json && !this.#hasReceivedState) { + if (p_data && p_data.message.json && !this.hasReceivedState) { Logger.silent( `${p_data.deviceId.string} ${p_data.message.name} => ${p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval }`); - this.#hasReceivedState = true; + this.hasReceivedState = true; } } @@ -275,5 +244,4 @@ export class StateMap extends Service { const buffer = ctx.getBuffer(); await socket.write(buffer); } - } \ No newline at end of file From c381c5abd5c1028671f0f6db98662f24d16658ca Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 30 Mar 2023 00:08:08 -0400 Subject: [PATCH 089/146] Update Discovery Device Messages --- cli/index.ts | 6 +++++- network/Discovery.ts | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index ea2eb69..3232ca2 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -103,8 +103,12 @@ async function main() { console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name} ${info.software.version}`) }); + stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { + console.log(`[DISCOVERY] Updated Device ${Buffer.from(info.token).toString('hex')} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) + }); + stageLinq.discovery.on('announcing', (info) => { - console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} disc Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) + console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) }); diff --git a/network/Discovery.ts b/network/Discovery.ts index 1ae6f1e..db6ed8c 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -24,6 +24,7 @@ type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export declare interface Discovery { on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; + on(event: 'updatedDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; on(event: 'announcing', listener: (info: DiscoveryMessage) => void): this; } @@ -91,7 +92,8 @@ export class Discovery extends EventEmitter { this.peers.set(deviceId.string, connectionInfo); this.parent.devices.updateDeviceInfo(deviceId, connectionInfo); - Logger.warn(`Updated port for From ${deviceId.string}`) + Logger.silly(`Updated port for ${deviceId.string}`); + this.emit('updatedDiscoveryDevice', connectionInfo); } }); } From b151edaca0968168b71d7a76fe67110e83f95b8d Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 30 Mar 2023 00:08:20 -0400 Subject: [PATCH 090/146] handle Server Close --- StageLinq/index.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 2b842c6..9369ccf 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -6,13 +6,12 @@ import { Devices, DeviceId } from '../devices' import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Status } from '../status/Status'; -import { Server } from 'net'; - +import { AddressInfo, Server } from 'net'; const DEFAULT_OPTIONS: StageLinqOptions = { maxRetries: 3, - actingAs: ActingAsDevice.NowPlaying, + actingAs: ActingAsDevice.StageLinqJS, downloadDbSources: true, }; @@ -25,7 +24,6 @@ export declare interface StageLinq { on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; on(event: 'stateMessage', listener: (message: ServiceMessage) => void): this; - on(event: 'ready', listener: () => void): this; on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; on(event: 'fileProgress', listener: (path: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; } @@ -119,7 +117,6 @@ export class StageLinq extends EventEmitter { this.directory = await directory.startServiceListener(Services.Directory, this); // Announce myself with Directory port - //await sleep(1000); await this.discovery.announce(this.directory.serverInfo.port); } @@ -131,8 +128,9 @@ export class StageLinq extends EventEmitter { Logger.warn('disconnecting'); const servers = this.getServers(); for (let [serviceName, server] of servers) { - Logger.debug(`Closing ${serviceName} server port ${server.address()}`) - server.close; + const addressInfo = server.address() as AddressInfo; + console.log(`Closing ${serviceName} server port ${addressInfo.port}`); + await server.close; } await this.discovery.unannounce(); } catch (e) { From 48f5c0d786ff11d68058f15ef3958be2f0e8cc08 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 30 Mar 2023 00:12:36 -0400 Subject: [PATCH 091/146] Bump Version, Update TODO --- TODO.md | 9 ++++++--- package.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 067374b..4b6737c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,8 @@ # TODO -- [ ] Figure out how fader start works. -- [ ] Refactor MarByteBeep's album art code. -- [ ] Get track metadata from DB. +- [ ] Ensure library is JS compatible +- [ ] Easy import of types for end user +- [ ] JsDoc all functions/methods/etc +- [ ] Tests? +- [ ] Update Dependancies +- [ ] Test more edge cases diff --git a/package.json b/package.json index fa8bfd7..c77fb67 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stagelinq", - "version": "1.0.7", + "version": "2.0.0-Beta", "description": "Typescript library to connect to Denon StageLinq devices", "homepage": "https://github.com/chrisle/StageLinq", "scripts": { From 0ac10de6b4792684a7382515611754720f17a0f5 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 09:52:35 -0400 Subject: [PATCH 092/146] TypeDoc tags --- Databases/Databases.ts | 12 +- Databases/DbConnection.ts | 26 +++-- Databases/Sources.ts | 57 +++++++--- StageLinq/index.ts | 38 +++++-- cli/index.ts | 76 ++++++------- devices/DeviceId.ts | 85 ++++++-------- devices/Devices.ts | 100 ++++++++++++----- network/Discovery.ts | 143 ++++++++++++++++-------- services/BeatInfo.ts | 116 ++++++++++++------- services/Directory.ts | 46 +++++--- services/FileTransfer.ts | 227 ++++++++++++++++++++++---------------- services/Service.ts | 73 ++++++------ services/StateMap.ts | 60 +++++----- services/TimeSync.ts | 6 +- 14 files changed, 650 insertions(+), 415 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index 14c05fd..c4fd8b7 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -14,16 +14,22 @@ export declare interface Databases { on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; } + export class Databases extends EventEmitter { parent: InstanceType; + /** + * @constructor + * @param {StageLinq} _parent Instance of main StageLinq Class + */ constructor(_parent: InstanceType) { super(); this.parent = _parent; } /** - * Download databases from this network source. + * Download a Database from Device + * @param {Source} source instance of Source */ async downloadDb(source: Source) { @@ -32,8 +38,7 @@ export class Databases extends EventEmitter { const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); - // Save database to a file - const file = await source.service.getFile(source.database.location, source.service.socket); + const file = await source.service.getFile(source.database.location); Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); @@ -44,6 +49,5 @@ export class Databases extends EventEmitter { this.parent.sources.setSource(source); Logger.debug(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); this.emit('dbDownloaded', source); - } } diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 74e6cd2..89e2b5d 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -4,10 +4,13 @@ import { Logger } from '../LogEmitter'; import { inflate } from 'zlib' export class DbConnection { - private db: Database.Database; private dbPath: string; - + /** + * Create a SQLite DB Interface + * @constructor + * @param {string} dbPath file path to SQLite.db file + */ constructor(dbPath: string) { this.dbPath = dbPath; Logger.debug(`Opening ${this.dbPath}`); @@ -17,8 +20,8 @@ export class DbConnection { /** * Execute a SQL query. * - * @param query SQL query to execute - * @param params Parameters for BetterSqlite3 result.all. + * @param {string} query SQL query to execute + * @param {any} params Parameters for BetterSqlite3 result.all. * @returns */ querySource(query: string, ...params: any[]): T[] { @@ -27,8 +30,12 @@ export class DbConnection { return result.all(params); } - - async zInflate(data: Buffer): Promise { + /** + * Inflate Zlib compressed data + * @param {Buffer} data + * @returns {Promise} Zlib inflated data + */ + private async zInflate(data: Buffer): Promise { return new Promise((resolve, reject) => { inflate(data.slice(4), (err, buffer) => { if (err) { @@ -43,8 +50,8 @@ export class DbConnection { /** * Return track's DB entry. * - * @param trackPath Path of track on the source's filesystem. - * @returns + * @param {string} _trackPath Path of track on the source's filesystem. + * @returns {Promise} */ async getTrackInfo(_trackPath: string): Promise { let result: Track[]; @@ -65,6 +72,9 @@ export class DbConnection { return result[0]; } + /** + * Close DB Connection + */ close() { Logger.debug(`Closing ${this.dbPath}`); this.db.close(); diff --git a/Databases/Sources.ts b/Databases/Sources.ts index 9bbff17..fa911af 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -4,7 +4,12 @@ import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; + export declare interface Sources { + /** + * + * @event newSource + */ on(event: 'newSource', listener: (source: Source) => void): this; } @@ -13,26 +18,30 @@ export class Sources extends EventEmitter { private _sources: Map = new Map(); public readonly parent: InstanceType; + /** + * @constructor + * @param {StageLinq} parent + */ constructor(parent: InstanceType) { super(); this.parent = parent; } /** - * + * Check if sources has Source * @param {string} sourceName - Name of source in EngineOS, eg: 'DJ STICK (USB 1)' * @param {DeviceId} deviceId - DeviceID instance - * @returns boolean + * @returns {boolean} true if has source */ hasSource(sourceName: string, deviceId: DeviceId): boolean { return this._sources.has(`${deviceId.string}${sourceName}`); } /** - * + * Check if sources has Source AND source has downloaded DB * @param {string} sourceName - Name of source in EngineOS, eg: 'DJ STICK (USB 1)' * @param {DeviceId} deviceId - DeviceID instance - * @returns boolean + * @returns {boolean} true if has Source AND the source has downloaded DB */ hasSourceAndDB(sourceName: string, deviceId: DeviceId): boolean { const source = this._sources.get(`${deviceId.string}${sourceName}`); @@ -40,41 +49,57 @@ export class Sources extends EventEmitter { } /** - * - * @param sourceName Name of source in EngineOS, eg: 'DJ STICK (USB 1)' - * @param deviceId DeviceID instance - * @returns Source + * Get Source + * @param {string} sourceName Name of source in EngineOS, eg: 'DJ STICK (USB 1)' + * @param {DeviceId} deviceId DeviceID instance + * @returns {Source} */ getSource(sourceName: string, deviceId: DeviceId): Source { return this._sources.get(`${deviceId.string}${sourceName}`); } /** - * Add a new Source - * @param source + * Get all Sources + * @param {DeviceId} [deviceId] Optional narrow results by DeviceId + * @returns {Source[]} an array of Sources */ - setSource(source: Source) { - this._sources.set(`${source.deviceId.string}${source.name}`, source); - } - getSources(deviceId?: DeviceId): Source[] { if (deviceId) { - const filteredMap = new Map([...this._sources.entries()].filter(entry => entry[0].substring(0,36) == deviceId.string)) + const filteredMap = new Map([...this._sources.entries()].filter(entry => entry[0].substring(0, 36) == deviceId.string)) return [...filteredMap.values()] } return [...this._sources.values()] } + /** + * Add a new Source + * @param {Source} source + */ + setSource(source: Source) { + this._sources.set(`${source.deviceId.string}${source.name}`, source); + } + + /** + * Delete Source + * @param {string} sourceName name of the source + * @param {DeviceId} deviceId + */ deleteSource(sourceName: string, deviceId: DeviceId) { this._sources.delete(`${deviceId.string}${sourceName}`) } + /** + * Download a file from Source + * @param {Source} source + * @param {string} path + * @returns {Promise} + */ async downloadFile(source: Source, path: string): Promise { const service = source.service; await service.isAvailable(); try { - const file = await service.getFile(path, service.socket); + const file = await service.getFile(path); return file; } catch (err) { Logger.error(err); diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 9369ccf..19a3d88 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -20,7 +20,6 @@ export interface ServiceHandlers { } export declare interface StageLinq { - on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; on(event: 'stateMessage', listener: (message: ServiceMessage) => void): this; @@ -45,18 +44,22 @@ export class StageLinq extends EventEmitter { public readonly beatInfo: InstanceType = null; public readonly timeSync: InstanceType = null; + public readonly databases: Databases = null; + public readonly sources: Sources = null; public readonly status: Status = null; private directory: InstanceType = null; - private _databases: Databases; - private _sources: Sources; private servers: Map = new Map(); + /** + * @constructor + * @param {StageLinqOptions} [options] + */ constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; - this._databases = new Databases(this); - this._sources = new Sources(this); + this.databases = new Databases(this); + this.sources = new Sources(this); this.status = new Status(this); //TODO make this into factory function? @@ -85,22 +88,35 @@ export class StageLinq extends EventEmitter { } ////// Getters & Setters ///////// - get databases() { - return this._databases; - } + // get databases() { + // return this.#databases; + // } - get sources() { - return this._sources - } + // get sources() { + // return this.#sources + // } + /** + * + * @param {string} serverName + * @param {Server} server + */ addServer(serverName: string, server: Server) { this.servers.set(serverName, server); } + /** + * + * @param {string} serverName + */ deleteServer(serverName: string) { this.servers.delete(serverName); } + /** + * + * @returns {IterableIterator<[string, Server]>} + */ private getServers() { return this.servers.entries(); } diff --git a/cli/index.ts b/cli/index.ts index 3232ca2..4d73daf 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -39,21 +39,21 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: } } -async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { - while (!stageLinq.sources.hasSource(sourceName, deviceId)) { - await sleep(250) +async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { + while (!stageLinq.sources.hasSource(sourceName, deviceId)) { + await sleep(250) + } + try { + const _source = stageLinq.sources.getSource(sourceName, deviceId); + const data = await stageLinq.sources.downloadFile(_source, path); + if (dest && data) { + const filePath = `${dest}/${path.split('/').pop()}` + fs.writeFileSync(filePath, Buffer.from(data)); } - try { - const _source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.sources.downloadFile(_source, path); - if (dest && data) { - const filePath = `${dest}/${path.split('/').pop()}` - fs.writeFileSync(filePath, Buffer.from(data)); - } - } catch (e) { - console.error(`Could not download ${path}`); - console.error(e) - } + } catch (e) { + console.error(`Could not download ${path}`); + console.error(e) + } } @@ -101,15 +101,15 @@ async function main() { stageLinq.discovery.on('newDiscoveryDevice', (info) => { console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name} ${info.software.version}`) - }); + }); stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { console.log(`[DISCOVERY] Updated Device ${Buffer.from(info.token).toString('hex')} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) - }); + }); stageLinq.discovery.on('announcing', (info) => { console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) - }); + }); stageLinq.devices.on('newDevice', (device) => { @@ -146,12 +146,12 @@ async function main() { const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` - if (stageLinq.fileTransfer) { + if (stageLinq.fileTransfer) { if (stageLinqOptions.downloadDbSources) { getTrackInfo(stageLinq, sourceName, status.deviceId, status.trackNetworkPath); downloadFile(stageLinq, sourceName, status.deviceId, path, Path.resolve(os.tmpdir())); } - } + } }); stageLinq.status.on('nowPlaying', async (status) => { console.log(`[STATUS] Now Playing ${status.deviceId.string}`); @@ -203,22 +203,22 @@ async function main() { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold function beatCallback(bd: ServiceMessage,) { - let deckBeatString = "" - for (let i = 0; i < bd.message.deckCount; i++) { - deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` - } - console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); + let deckBeatString = "" + for (let i = 0; i < bd.message.deckCount; i++) { + deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` + } + console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); } - //// callback is optional, BeatInfo messages can be consumed by: - // - user callback - // - event messages - // - reading the register - const beatMethod = { - useCallback: true, - useEvent: false, - useRegister: false, - }; + //// callback is optional, BeatInfo messages can be consumed by: + // - user callback + // - event messages + // - reading the register + const beatMethod = { + useCallback: true, + useEvent: false, + useRegister: false, + }; stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: Services.BeatInfo) => { @@ -227,7 +227,7 @@ async function main() { if (beatMethod.useCallback) { beatInfo.startBeatInfo(beatOptions, beatCallback); - } + } if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); @@ -240,15 +240,15 @@ async function main() { if (beatMethod.useRegister) { beatInfo.startBeatInfo(beatOptions); - + function beatFunc(beatInfo: Services.BeatInfo) { const beatData = beatInfo.getBeatData(); if (beatData) beatCallback(beatData); } - + setTimeout(beatFunc, 4000, beatInfo) - } - + } + }) } diff --git a/devices/DeviceId.ts b/devices/DeviceId.ts index d6975e0..9332714 100644 --- a/devices/DeviceId.ts +++ b/devices/DeviceId.ts @@ -8,64 +8,51 @@ class InvalidDeviceIdError extends Error { } } + export class DeviceId { protected m_str: string; protected m_array: Uint8Array; - - constructor(deviceId: string); - constructor(deficeId: Uint8Array); - constructor(deviceId: any) { - this.m_str = this.forceString(deviceId); - this.m_array = this.forceArray(deviceId); - - let reg: RegExp = new RegExp('[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}', 'i'); - if (!reg.test(this.m_str)) throw new InvalidDeviceIdError(); + /** + * DeviceId + * @constructor + * @param {(string | Uint8Array)} deviceId string or Uint8Array to initialize new DeviceId + */ + constructor(deviceId: string | Uint8Array) { + switch (typeof deviceId) { + case "string": { + const reg: RegExp = new RegExp('[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}', 'i'); + if (!reg.test(deviceId)) throw new InvalidDeviceIdError(); + this.m_str = deviceId; + this.m_array = Buffer.from(deviceId.split('-').join(), 'hex') as Uint8Array; + break; + } + case "object": { + this.m_array = deviceId; + this.m_str = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) + .splice(1) + .join('-') as string; + break; + } + default: { + throw new InvalidDeviceIdError(); + break; + } + } } + /** + * Return DeviceId as string + */ get string() { return this.m_str } - get buffer() { + /** + * Return DeviceId as Uint8Array + */ + get array() { return this.m_array } - toString() { - return this.m_str; - } - - toBuffer() { - return this.m_array; - } - - //there must be a less hack way to do this... - private forceString(deviceId: string): string; - private forceString(deviceId: Uint8Array): string; - private forceString(deviceId: unknown): string { - if (typeof deviceId === 'string') { - return deviceId as string; - } - - if (typeof deviceId === 'object') { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string; - } - - throw new Error(`Hell froze over: deviceId is not a string or Uint8Array`); - } - - private forceArray(deviceId: string | Uint8Array): Uint8Array { - switch (typeof deviceId) { - case 'object': - return deviceId as Uint8Array; - case 'string': - return Buffer.from(deviceId.toString().split('-').join(), 'hex') as Uint8Array; - } - } -} - -export function deviceIdFromBuff(token: Uint8Array): string { - return /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i.exec(Buffer.from(token).toString('hex')).splice(1).join('-'); -} +} \ No newline at end of file diff --git a/devices/Devices.ts b/devices/Devices.ts index 6140a74..38352c1 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -11,88 +11,125 @@ export declare interface Devices { } export class Devices extends EventEmitter { - private _devices: Map = new Map(); - - getDevices() { - return [...this._devices.entries()] - } - - addDevice(info: ConnectionInfo): Device { + #devices: Map = new Map(); + + /** + * Add Device + * @param {ConnectionInfo} info + * @returns {Device} + */ + addDevice(info: ConnectionInfo): Device { const device = new Device(info, this); - this._devices.set(device.deviceId.string, device) + this.#devices.set(device.deviceId.string, device) this.emit('newDevice', device) return device } + /** + * + * @param {(string | Uint8Array | DeviceId)} deviceId + * @returns {Promise} + */ async getDevice(deviceId: string | Uint8Array | DeviceId): Promise { while (!this.hasDevice(deviceId)) { await sleep(150); } - + if (typeof deviceId == "string") { - return this._devices.get(deviceId) + return this.#devices.get(deviceId) } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId - return this._devices.get(_deviceId.string) + return this.#devices.get(_deviceId.string) } if (typeof deviceId == "object") { const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) .splice(1) .join('-') as string - return this._devices.get(deviceString); + return this.#devices.get(deviceString); } } + /** + * + * @param {(string | Uint8Array | DeviceId)} deviceId + * @returns {Device} + */ device(deviceId: string | Uint8Array | DeviceId): Device { if (typeof deviceId == "string") { - return this._devices.get(deviceId) + return this.#devices.get(deviceId) } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId - return this._devices.get(_deviceId.string) + return this.#devices.get(_deviceId.string) } if (typeof deviceId == "object") { const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) .splice(1) .join('-') as string - return this._devices.get(deviceString); + return this.#devices.get(deviceString); } } - + /** + * + * @param {(string | Uint8Array | DeviceId)} deviceId + * @returns {boolean} + */ hasDevice(deviceId: Uint8Array | string | DeviceId): boolean { if (typeof deviceId == "string") { - return this._devices.has(deviceId) + return this.#devices.has(deviceId) } if (deviceId instanceof DeviceId) { const _deviceId = deviceId as DeviceId - return this._devices.has(_deviceId.string) + return this.#devices.has(_deviceId.string) } if (typeof deviceId == "object") { - return this._devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i + return this.#devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) .splice(1) .join('-') as string) } } - async updateDeviceInfo(deviceId: DeviceId, info: ConnectionInfo) { - const device = await this.getDevice(deviceId) - device.info = info; - this._devices.set(deviceId.string, device); - } - + + /** + * + * @param {(string | Uint8Array | DeviceId)} deviceId + * @param {ConnectionInfo} info + * @returns {boolean} + */ hasNewInfo(deviceId: Uint8Array | string | DeviceId, info: ConnectionInfo): boolean { return this.device(deviceId).info?.port !== info.port } + /** + * + * @param {DeviceId} deviceId + * @param {ConnectionInfo} info + */ + async updateDeviceInfo(deviceId: DeviceId, info: ConnectionInfo): Promise { + const device = await this.getDevice(deviceId) + device.info = info; + await this.#devices.set(deviceId.string, device); + } + + /** + * + * @param {DeviceId} deviceId + * @param {Service} service + */ addService(deviceId: DeviceId, service: InstanceType) { const device = this.device(deviceId.string) device.addService(service) } + /** + * + * @param {DeviceId} deviceId + * @param {string} serviceName + */ deleteService(deviceId: DeviceId, serviceName: string) { const device = this.device(deviceId.string); device.deleteService(serviceName) @@ -106,6 +143,11 @@ export class Device extends EventEmitter { info: ConnectionInfo; private services: Map> = new Map(); + /** + * @constructor + * @param {connectionInfo} info + * @param {Devices} parent + */ constructor(info: ConnectionInfo, parent: Devices) { super(); this.deviceId = new DeviceId(info.token); @@ -113,10 +155,18 @@ export class Device extends EventEmitter { this.info = info; } + /** + * Add an instantiated Service + * @param {Service} service + */ addService(service: InstanceType) { this.services.set(service.name, service) } + /** + * Remove a service + * @param {string} serviceName + */ deleteService(serviceName: string) { this.services.delete(serviceName) } diff --git a/network/Discovery.ts b/network/Discovery.ts index db6ed8c..f787ad4 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -23,9 +23,9 @@ export interface DiscoveryMessageOptions { type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; export declare interface Discovery { - on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; + on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; on(event: 'updatedDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; - on(event: 'announcing', listener: (info: DiscoveryMessage) => void): this; + on(event: 'announcing', listener: (info: DiscoveryMessage) => void): this; } export class Discovery extends EventEmitter { @@ -44,40 +44,67 @@ export class Discovery extends EventEmitter { /** * @constructor - * @param parent StageLinq Instance + * @param {StageLinq} parent StageLinq Instance */ constructor(parent: InstanceType) { super(); this.parent = parent; } + /** + * + * @param {DeviceId} deviceId + * @returns {ConnectionInfo} + */ public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { return this.peers.get(deviceId.string); } - public async setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { + /** + * + * @param {DeviceId} deviceId + * @param {ConnectionInfo} connectionInfo + */ + public setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { this.peers.set(deviceId.string, connectionInfo); } - public hasConnectionInfo(deviceId: DeviceId): Boolean { + /** + * + * @param {DeviceId} deviceId + * @returns {boolean} + */ + public hasConnectionInfo(deviceId: DeviceId): boolean { return this.peers.has(deviceId.string); } + /** + * Get list of devices + * @returns {string[]} + */ public getDeviceList(): string[] { return [...this.peers.keys()] } + /** + * Get array of device ConnectionInfos + * @returns {ConnectionInfo[]} + */ public getDevices(): ConnectionInfo[] { return [...this.peers.values()] } + /** + * Initialize Discovery + * @param {DiscoveryMessageOptions} options + */ async init(options: DiscoveryMessageOptions) { this.options = options; this.deviceId = new DeviceId(options.token) await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { - if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token) ) {//&& deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { + if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token)) {//&& deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); @@ -94,33 +121,36 @@ export class Discovery extends EventEmitter { this.parent.devices.updateDeviceInfo(deviceId, connectionInfo); Logger.silly(`Updated port for ${deviceId.string}`); this.emit('updatedDiscoveryDevice', connectionInfo); - } + } }); } + /** + * Announce library to network + * @param {number} port + */ async announce(port: number) { assert(this.socket); this.socket.setBroadcast(true); - const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); - while (!this.hasLooped) { await sleep(500); } - const ips = this.findBroadcastIPs() const address = ips.filter(ip => { return ip.contains(this.address) === true }); this.broadcastAddress = address.shift().broadcastAddress const msg = this.writeDiscoveryMessage(discoveryMessage) - this.broadcastMessage(this.socket, msg, LISTEN_PORT, this.broadcastAddress); this.emit('announcing', discoveryMessage) Logger.debug(`Broadcast Discovery Message ${this.deviceId.string} ${discoveryMessage.source}`); this.announceTimer = setInterval(this.broadcastMessage, ANNOUNCEMENT_INTERVAL, this.socket, msg, LISTEN_PORT, this.broadcastAddress); } + /** + * Unanounce Library to network + */ async unannounce(): Promise { assert(this.announceTimer); clearInterval(this.announceTimer); @@ -137,24 +167,31 @@ export class Discovery extends EventEmitter { //////////// PRIVATE METHODS /////////////// - private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress) { - socket.send(msg, port, address); + /** + * + * @param {Socket} socket + * @param {Buffer} msg + * @param {number} port + * @param {IpAddress} address + */ + private async broadcastMessage(socket: Socket, msg: Buffer, port: number, address: IpAddress): Promise { + await socket.send(msg, port, address); } /** * Listen for new devices on the network and callback when a new one is found. - * @param callback Callback when new device is discovered. + * @param {DeviceDiscoveryCallback} callback Callback when new device is discovered. */ private async listenForDevices(callback: DeviceDiscoveryCallback) { this.socket = UDPSocket.createSocket('udp4'); - this.socket.on('message', (p_announcement: Uint8Array, p_remote: RemoteInfo) => { - const ctx = new ReadContext(p_announcement.buffer, false); - const result = this.readConnectionInfo(ctx, p_remote.address); + this.socket.on('message', (announcement: Uint8Array, remote: RemoteInfo) => { + const ctx = new ReadContext(announcement.buffer, false); + const result = this.readConnectionInfo(ctx, remote.address); if (!this.address) { - this.address = p_remote.address + this.address = remote.address } - assert(ctx.tell() === p_remote.size); + assert(ctx.tell() === remote.size); callback(result); }); this.socket.bind({ @@ -163,34 +200,45 @@ export class Discovery extends EventEmitter { }); } - - private readConnectionInfo(p_ctx: ReadContext, p_address: string): ConnectionInfo { - const magic = p_ctx.getString(4); + /** + * + * @param {ReadContext} ctx + * @param {IpAddress} address + * @returns {ConnectionInfo} + */ + private readConnectionInfo(ctx: ReadContext, address: IpAddress): ConnectionInfo { + const magic = ctx.getString(4); if (magic !== DISCOVERY_MESSAGE_MARKER) { return null; } const connectionInfo: ConnectionInfo = { - token: p_ctx.read(16), - source: p_ctx.readNetworkStringUTF16(), - action: p_ctx.readNetworkStringUTF16(), + token: ctx.read(16), + source: ctx.readNetworkStringUTF16(), + action: ctx.readNetworkStringUTF16(), software: { - name: p_ctx.readNetworkStringUTF16(), - version: p_ctx.readNetworkStringUTF16(), + name: ctx.readNetworkStringUTF16(), + version: ctx.readNetworkStringUTF16(), }, - port: p_ctx.readUInt16(), - address: p_address, + port: ctx.readUInt16(), + address: address, }; connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); if (deviceTypes[connectionInfo.software.name]) { connectionInfo.device = deviceTypes[connectionInfo.software.name]; } - assert(p_ctx.isEOF()); + assert(ctx.isEOF()); return connectionInfo; } - + /** + * + * @param {string} action + * @param {DiscoveryMessageOptions} discoveryMessageOptions + * @param {number} port + * @returns {DiscoveryMessage} + */ private createDiscoveryMessage(action: string, discoveryMessageOptions: DiscoveryMessageOptions, port?: number): DiscoveryMessage { const msg: DiscoveryMessage = { action: action, @@ -200,25 +248,32 @@ export class Discovery extends EventEmitter { version: discoveryMessageOptions.version }, source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token, + token: discoveryMessageOptions.token, }; return msg; } - - private writeDiscoveryMessage(p_message: DiscoveryMessage): Buffer { - const p_ctx = new WriteContext(); - p_ctx.writeFixedSizedString(DISCOVERY_MESSAGE_MARKER); - p_ctx.write(p_message.token); - p_ctx.writeNetworkStringUTF16(p_message.source); - p_ctx.writeNetworkStringUTF16(p_message.action); - p_ctx.writeNetworkStringUTF16(p_message.software.name); - p_ctx.writeNetworkStringUTF16(p_message.software.version); - p_ctx.writeUInt16(p_message.port); - return p_ctx.getBuffer() + /** + * + * @param {DiscoveryMessage} message + * @returns {Buffer} + */ + private writeDiscoveryMessage(message: DiscoveryMessage): Buffer { + const ctx = new WriteContext(); + ctx.writeFixedSizedString(DISCOVERY_MESSAGE_MARKER); + ctx.write(message.token); + ctx.writeNetworkStringUTF16(message.source); + ctx.writeNetworkStringUTF16(message.action); + ctx.writeNetworkStringUTF16(message.software.name); + ctx.writeNetworkStringUTF16(message.software.version); + ctx.writeUInt16(message.port); + return ctx.getBuffer() } - + /** + * + * @returns {SubnetInfo[]} + */ private findBroadcastIPs(): SubnetInfo[] { const interfaces = Object.values(networkInterfaces()); assert(interfaces.length); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 913da27..dcde61b 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -8,7 +8,7 @@ import { DeviceId } from '../devices' import { Socket } from 'net'; import { StageLinq } from '../StageLinq'; -type beatCallback = (n: ServiceMessage) => void; +type BeatCallback = (n: ServiceMessage) => void; type BeatOptions = { everyNBeats: number, @@ -34,16 +34,31 @@ export declare interface BeatInfoHandler { export class BeatInfoHandler extends ServiceHandler { public name: string = 'BeatInfo'; - private _beatregister: Map = new Map(); - - getBeatData(deviceId?: DeviceId): BeatData[] { - return (deviceId? [this._beatregister.get(deviceId.string)] : [...this._beatregister.values()]) + #beatRegister: Map = new Map(); + + /** + * + * @param {DeviceId} [deviceId] optionally filter by DeviceId + * @returns {BeatData[]} + */ + public getBeatData(deviceId?: DeviceId): BeatData[] { + return (deviceId ? [this.#beatRegister.get(deviceId.string)] : [...this.#beatRegister.values()]) } - setBeatData(deviceId: DeviceId, data: BeatData) { - this._beatregister.set(deviceId.string, data); + /** + * + * @param {DeviceId} deviceId + * @param {BeatData} data + */ + public setBeatData(deviceId: DeviceId, data: BeatData) { + this.#beatRegister.set(deviceId.string, data); } + /** + * + * @param {Service} service + * @param {DeviceId} deviceId + */ public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); const beatInfo = service as BeatInfo; @@ -66,54 +81,71 @@ export class BeatInfo extends Service { public readonly name = "BeatInfo"; public readonly handler: BeatInfoHandler; - private _userBeatCallback: beatCallback = null; + private _userBeatCallback: BeatCallback = null; private _userBeatOptions: BeatOptions = null; private _currentBeatData: ServiceMessage = null; isBufferedService: boolean = true; - - constructor(p_parent: InstanceType, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { - super(p_parent, serviceHandler, deviceId) + + /** + * @constructor + * @param {StageLinq} parent + * @param {BeatInfoHandler} serviceHandler + * @param {DeviceId} [deviceId] + */ + constructor(parent: InstanceType, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { + super(parent, serviceHandler, deviceId) this.handler = this._handler as BeatInfoHandler - } + } + /** + * + * @returns {ServiceMessage} + */ getBeatData(): ServiceMessage { return this._currentBeatData; } - - - public async startBeatInfo(options: BeatOptions, beatCB?: beatCallback,) { + /** + * + * @param {BeatOptions} options + * @param {BeatCallback} [beatCB] Optional User callback + */ + public startBeatInfo(options: BeatOptions, beatCB?: BeatCallback) { if (beatCB) { this._userBeatCallback = beatCB; } this._userBeatOptions = options; - this.sendBeatInfoRequest(this.socket); + this.sendBeatInfoRequest(); } - private async sendBeatInfoRequest(socket: Socket) { + /** + * + * @param {Socket} socket + */ + private async sendBeatInfoRequest() { const ctx = new WriteContext(); ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0])) - await this.write(ctx, socket); + await this.write(ctx); } - protected parseData(p_ctx: ReadContext): ServiceMessage { - assert(p_ctx.sizeLeft() > 72); - let id = p_ctx.readUInt32() - const clock = p_ctx.readUInt64(); - const deckCount = p_ctx.readUInt32(); + protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + assert(ctx.sizeLeft() > 72); + let id = ctx.readUInt32() + const clock = ctx.readUInt64(); + const deckCount = ctx.readUInt32(); let deck: deckBeatData[] = []; for (let i = 0; i < deckCount; i++) { let deckData: deckBeatData = { - beat: p_ctx.readFloat64(), - totalBeats: p_ctx.readFloat64(), - BPM: p_ctx.readFloat64(), + beat: ctx.readFloat64(), + totalBeats: ctx.readFloat64(), + BPM: ctx.readFloat64(), } deck.push(deckData); } for (let i = 0; i < deckCount; i++) { - deck[i].samples = p_ctx.readFloat64(); + deck[i].samples = ctx.readFloat64(); } - assert(p_ctx.isEOF()) + assert(ctx.isEOF()) const beatMsg = { clock: clock, deckCount: deckCount, @@ -122,12 +154,12 @@ export class BeatInfo extends Service { return { id: id, deviceId: this.deviceId, - socket: this.socket, + socket: socket, message: beatMsg } } - protected messageHandler(p_data: ServiceMessage): void { + protected messageHandler(data: ServiceMessage): void { function resCheck(res: number, prevBeat: number, currentBeat: number): boolean { if (res === 0) { @@ -137,36 +169,36 @@ export class BeatInfo extends Service { || (Math.floor(prevBeat / res) - Math.floor(currentBeat / res) >= 1) } - if (p_data && p_data.message) { + if (data && data.message) { if (!this._currentBeatData) { - this._currentBeatData = p_data; - this.handler.setBeatData(this.deviceId, p_data.message); - this.emit('beatMessage', p_data); + this._currentBeatData = data; + this.handler.setBeatData(this.deviceId, data.message); + this.emit('beatMessage', data); if (this._userBeatCallback) { - this._userBeatCallback(p_data); + this._userBeatCallback(data); } } let hasUpdated = false; - for (let i = 0; i < p_data.message.deckCount; i++) { + for (let i = 0; i < data.message.deckCount; i++) { if (resCheck( this._userBeatOptions.everyNBeats, this._currentBeatData.message.deck[i].beat, - p_data.message.deck[i].beat)) { + data.message.deck[i].beat)) { hasUpdated = true; } } if (hasUpdated) { - - this.emit('beatMessage', p_data); + + this.emit('beatMessage', data); if (this._userBeatCallback) { - this._userBeatCallback(p_data); + this._userBeatCallback(data); } } - this._currentBeatData = p_data; - this.handler.setBeatData(this.deviceId, p_data.message); + this._currentBeatData = data; + this.handler.setBeatData(this.deviceId, data.message); } } diff --git a/services/Directory.ts b/services/Directory.ts index 6029fb6..3987802 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -42,8 +42,8 @@ export class Directory extends Service { } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - - if (ctx.sizeLeft() < 20) { + + if (ctx.sizeLeft() < 20) { return } @@ -52,22 +52,23 @@ export class Directory extends Service { if (!token) { return } - + this.deviceId = new DeviceId(token); const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); + assert(this.socket) try { switch (id) { case MessageId.TimeStamp: ctx.seek(16); - let timeAlive:bigint = 1n - if (ctx.sizeLeft()>= 8) { + let timeAlive: bigint = 1n + if (ctx.sizeLeft() >= 8) { timeAlive = ctx.readUInt64(); this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); - } - + } + if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { - this.sendTimeStampReply(token, socket); + this.sendTimeStampReply(token); } break; case MessageId.ServicesAnnouncement: @@ -76,6 +77,7 @@ export class Directory extends Service { Logger.silent(this.name, 'received ', service, port); break; case MessageId.ServicesRequest: + Logger.silly(`service request from ${this.deviceId.string}`) this.sendServiceAnnouncement(this.deviceId, socket); break; default: @@ -87,14 +89,14 @@ export class Directory extends Service { ctx.rewind(); Logger.silent(`${this.name} possible malformed data: ${ctx.readRemainingAsNewBuffer().toString('hex')}`) } - + const directoryMessage: DirectoryData = { deviceId: this.deviceId.string }; const directoryData = { id: 69, - socket: socket, + socket: this.socket, deviceId: this.deviceId, message: directoryMessage, }; @@ -107,7 +109,13 @@ export class Directory extends Service { } } - private async sendServiceAnnouncement(deviceId: DeviceId, socket?: Socket): Promise { + /////////// Private Methods + + /** + * + * @param {DeviceId} deviceId + */ + private async sendServiceAnnouncement(deviceId: DeviceId, socket: Socket): Promise { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(this.parent.options.actingAs.token); @@ -139,7 +147,7 @@ export class Directory extends Service { default: break; } - } + } } for (const service of services) { @@ -147,15 +155,19 @@ export class Directory extends Service { ctx.write(this.parent.options.actingAs.token); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); - Logger.silly(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); + Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); } const msg = ctx.getBuffer(); await socket.write(msg); - Logger.silly(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); + Logger.debug(`[${this.name}] sent ServiceAnnouncement to ${socket.remoteAddress}:${socket.remotePort}`); } - private async sendTimeStampReply(token: Uint8Array, socket: Socket) { + /** + * + * @param {Uint8Array} token Token from recepient Device + */ + private async sendTimeStampReply(token: Uint8Array) { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); @@ -164,7 +176,7 @@ export class Directory extends Service { const message = ctx.getBuffer(); assert(message.length === 44); await sleep(1400); - await socket.write(message); - Logger.silly(`sent TimeStamp to ${socket.remoteAddress}:${socket.remotePort}`); + await this.socket.write(message); + Logger.silly(`sent TimeStamp to ${this.socket.remoteAddress}:${this.socket.remotePort}`); } } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 075f6ff..7f91d8c 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -36,8 +36,8 @@ export interface FileTransferProgress { } export declare interface FileTransfer { - on(event: 'fileTransferProgress', listener: (fileName: string, txId: number, progress: FileTransferProgress) => void): this; - on(event: 'fileTransferComplete', listener: (fileName: string, txId: number) => void): this; + on(event: 'fileTransferProgress', listener: (fileName: string, txid: number, progress: FileTransferProgress) => void): this; + on(event: 'fileTransferComplete', listener: (fileName: string, txid: number) => void): this; on(event: 'newSource', listener: (source: Source) => void): this; on(event: 'sourceRemoved', listener: (sourceName: string, deviceId: DeviceId) => void): this; } @@ -45,6 +45,11 @@ export declare interface FileTransfer { export class FileTransferHandler extends ServiceHandler { public readonly name = "FileTransfer" + /** + * + * @param {Service} service + * @param {DeviceId} deviceId + */ public setupService(service: Service, deviceId: DeviceId) { const fileTransfer = service as FileTransfer; Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); @@ -68,36 +73,37 @@ export class FileTransfer extends Service { public name: string = "FileTransfer"; private receivedFile: WriteContext = null; - private _isAvailable: boolean = true; - private txId: number = 1; + #txid: number = 1; + #isAvailable: boolean = true; // TODO need better txId to handle concurrent transfers public get txid() { - return this.txId; + return this.#txid; } + protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) return } - protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - const check = p_ctx.getString(4); + const check = ctx.getString(4); if (check !== MAGIC_MARKER) { Logger.error(assert(check === MAGIC_MARKER)) } - const txId = p_ctx.readUInt32(); + const txId = ctx.readUInt32(); - const messageId: MessageId = p_ctx.readUInt32(); + const messageId: MessageId = ctx.readUInt32(); switch (messageId) { case MessageId.RequestSources: { - assert(p_ctx.readUInt32() === 0x0) - assert(p_ctx.isEOF()); + assert(ctx.readUInt32() === 0x0) + assert(ctx.isEOF()); return { id: MessageId.RequestSources, @@ -111,23 +117,23 @@ export class FileTransfer extends Service { case MessageId.SourceLocations: { const sources: string[] = []; - const sourceCount = p_ctx.readUInt32(); + const sourceCount = ctx.readUInt32(); for (let i = 0; i < sourceCount; ++i) { // We get a location - const location = p_ctx.readNetworkStringUTF16(); + const location = ctx.readNetworkStringUTF16(); sources.push(location); } // Final three bytes should be 0x1 0x1 0x1 - assert(p_ctx.readUInt8() === 0x1); - assert(p_ctx.readUInt8() === 0x1); - assert(p_ctx.readUInt8() === 0x1); - assert(p_ctx.isEOF()); + assert(ctx.readUInt8() === 0x1); + assert(ctx.readUInt8() === 0x1); + assert(ctx.readUInt8() === 0x1); + assert(ctx.isEOF()); //if (sources.length) { - Logger.silly(`getting sources for `, this.deviceId.string); - - //this.getSources(sources, socket); - this.updateSources(sources); + Logger.silly(`getting sources for `, this.deviceId.string); + + //this.getSources(sources, socket); + this.updateSources(sources); //} return { @@ -142,10 +148,10 @@ export class FileTransfer extends Service { } case MessageId.FileStat: { - assert(p_ctx.sizeLeft() === 53); + assert(ctx.sizeLeft() === 53); // Last 4 bytes (FAT32) indicate size of file - p_ctx.seek(49); - const size = p_ctx.readUInt32(); + ctx.seek(49); + const size = ctx.readUInt32(); return { id: messageId, @@ -169,10 +175,10 @@ export class FileTransfer extends Service { } case MessageId.FileTransferId: { - assert(p_ctx.sizeLeft() === 12); - assert(p_ctx.readUInt32() === 0x0); - const filesize = p_ctx.readUInt32(); - const id = p_ctx.readUInt32(); + assert(ctx.sizeLeft() === 12); + assert(ctx.readUInt32() === 0x0); + const filesize = ctx.readUInt32(); + const id = ctx.readUInt32(); assert(id === 1) return { id: messageId, @@ -186,11 +192,11 @@ export class FileTransfer extends Service { } case MessageId.FileTransferChunk: { - assert(p_ctx.readUInt32() === 0x0); - const offset = p_ctx.readUInt32(); - const chunksize = p_ctx.readUInt32(); - assert(chunksize === p_ctx.sizeLeft()); - assert(p_ctx.sizeLeft() <= CHUNK_SIZE); + assert(ctx.readUInt32() === 0x0); + const offset = ctx.readUInt32(); + const chunksize = ctx.readUInt32(); + assert(chunksize === ctx.sizeLeft()); + assert(ctx.sizeLeft() <= CHUNK_SIZE); return { id: messageId, @@ -198,7 +204,7 @@ export class FileTransfer extends Service { socket: socket, message: { txid: txId, - data: p_ctx.readRemainingAsNewBuffer(), + data: ctx.readRemainingAsNewBuffer(), offset: offset, size: chunksize, }, @@ -207,7 +213,7 @@ export class FileTransfer extends Service { case MessageId.Unknown0: { //sizeLeft() of 6 means its not an offline analyzer - this.requestSources(socket); + this.requestSources(); return { id: messageId, @@ -219,8 +225,8 @@ export class FileTransfer extends Service { case MessageId.DeviceShutdown: { // This message seems to be sent from connected devices when shutdown is started - if (p_ctx.sizeLeft() > 0) { - const msg = p_ctx.readRemainingAsNewBuffer().toString('hex'); + if (ctx.sizeLeft() > 0) { + const msg = ctx.readRemainingAsNewBuffer().toString('hex'); Logger.debug(msg) } @@ -240,13 +246,13 @@ export class FileTransfer extends Service { } } - protected messageHandler(p_data: ServiceMessage): void { - this.emit('fileMessage', p_data); - if (p_data && p_data.id === MessageId.FileTransferChunk && this.receivedFile) { - this.receivedFile.write(p_data.message.data); + protected messageHandler(data: ServiceMessage): void { + this.emit('fileMessage', data); + if (data && data.id === MessageId.FileTransferChunk && this.receivedFile) { + this.receivedFile.write(data.message.data); } - if (p_data && p_data.id === MessageId.RequestSources) { - this.sendNoSourcesReply(p_data.socket, p_data); + if (data && data.id === MessageId.RequestSources) { + this.sendNoSourcesReply(data); } } @@ -259,17 +265,16 @@ export class FileTransfer extends Service { * be unresponsive while downloading big files. Also, it seems that transfers * top out at around 10MB/sec. * - * @param p_location Location of the file on the device. - * @param socket Socket. - * @returns Contents of the file. + * @param {string} location Location of the file on the device. + * @returns {Promise} Contents of the file. */ - async getFile(p_location: string, socket: Socket): Promise { - while (!this._isAvailable) { + async getFile(location: string): Promise { + while (!this.#isAvailable) { await sleep(500) } - this._isAvailable = false; + this.#isAvailable = false; assert(this.receivedFile === null); - await this.requestFileTransferId(p_location, socket); + await this.requestFileTransferId(location); const txinfo = await this.waitForMessage('fileMessage', MessageId.FileTransferId); if (txinfo) { this.receivedFile = new WriteContext({ size: txinfo.size }); @@ -277,59 +282,63 @@ export class FileTransfer extends Service { const total = parseInt(txinfo.size); if (total === 0) { - Logger.warn(`${p_location} doesn't exist or is a streaming file`); + Logger.warn(`${location} doesn't exist or is a streaming file`); this.receivedFile = null - this._isAvailable = true; + this.#isAvailable = true; return; } - await this.requestChunkRange(1, 0, totalChunks - 1, socket); + await this.requestChunkRange(1, 0, totalChunks - 1); try { await new Promise(async (resolve, reject) => { setTimeout(() => { - reject(new Error(`Failed to download '${p_location}'`)); + reject(new Error(`Failed to download '${location}'`)); }, DOWNLOAD_TIMEOUT); while (this.receivedFile.isEOF() === false) { const bytesDownloaded = total - this.receivedFile.sizeLeft(); const percentComplete = (bytesDownloaded / total) * 100; - this.emit('fileTransferProgress', p_location.split('/').pop(), this.txId, { + this.emit('fileTransferProgress', location.split('/').pop(), this.txid, { sizeLeft: this.receivedFile.sizeLeft(), total: txinfo.size, bytesDownloaded: bytesDownloaded, percentComplete: percentComplete }) Logger.silly(`sizeleft ${this.receivedFile.sizeLeft()} total ${txinfo.size} total ${total}`); - Logger.silly(`Reading ${p_location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); + Logger.silly(`Reading ${location} progressComplete=${Math.ceil(percentComplete)}% ${bytesDownloaded}/${total}`); await sleep(200); } Logger.debug(`Download complete.`); - this.emit('fileTransferComplete', p_location.split('/').pop(), this.txId) + this.emit('fileTransferComplete', location.split('/').pop(), this.#txid) resolve(true); }); } catch (err) { - const msg = `Could not read database from ${p_location}: ${err.message}` + const msg = `Could not read database from ${location}: ${err.message}` this.receivedFile = null - this._isAvailable = true; + this.#isAvailable = true; Logger.error(msg); throw new Error(msg); } Logger.debug(`Signaling transfer complete.`); - await this.signalTransferComplete(socket); - this.txId++ + await this.signalTransferComplete(); + this.#txid++ } const buf = this.receivedFile ? this.receivedFile.getBuffer() : null; this.receivedFile = null; - this._isAvailable = true; + this.#isAvailable = true; return buf; } - async updateSources(sources: string[]) { + /** + * Gets new sources and deletes those which have been removed + * @param {string[]} sources an array of current sources from device + */ + async updateSources(sources: string[]) { const currentSources = this.parent.sources.getSources(this.deviceId); const currentSourceNames = currentSources.map(source => source.name); - + //When a source is disconnected, devices send a new SourceLocations message that excludes the removed source const markedForDelete = currentSources.filter(item => !sources.includes(item.name)); const newSources = sources.filter(source => !currentSourceNames.includes(source)); @@ -337,21 +346,24 @@ export class FileTransfer extends Service { this.parent.sources.deleteSource(source.name, source.deviceId) this.emit('sourceRemoved', source.name, source.deviceId); } - + if (newSources.length) { this.getSources(newSources); } } - async getSources(sources: string[]): Promise { - const socket = this.socket; + /** + * Get Sources from Device + * @param {sources[]} sources Array of sources + */ + async getSources(sources: string[]) { const result: Source[] = []; for (const source of sources) { //try to retrieve V2.x Database2/m.db first. If file doesn't exist or 0 size, retrieve V1.x /m.db const databases = [`/${source}/Engine Library/Database2/m.db`, `/${source}/Engine Library/m.db`]; for (const database of databases) { - await this.requestStat(database, socket); + await this.requestStat(database); const fstatMessage = await this.waitForMessage('fileMessage', MessageId.FileStat); if (fstatMessage.size > 0) { @@ -372,7 +384,7 @@ export class FileTransfer extends Service { this.parent.sources.setSource(thisSource); this.emit('newSource', thisSource); result.push(thisSource); - + if (this.parent.options.downloadDbSources) { this.parent.databases.downloadDb(thisSource); } @@ -380,81 +392,106 @@ export class FileTransfer extends Service { } } } - return result; } /////////////////////////////////////////////////////////////////////////// // Private methods - private async requestStat(p_filepath: string, socket: Socket): Promise { + /** + * Request fstat on file from Device + * @param {string} filepath + */ + private async requestStat(filepath: string): Promise { // 0x7d1: seems to request some sort of fstat on a file const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(this.txId); + ctx.writeUInt32(this.#txid); ctx.writeUInt32(0x7d1); - ctx.writeNetworkStringUTF16(p_filepath); - await this.writeWithLength(ctx, socket); + ctx.writeNetworkStringUTF16(filepath); + await this.writeWithLength(ctx); } - private async requestSources(socket: Socket): Promise { + /** + * Request current sources attached to device + */ + private async requestSources(): Promise { // 0x7d2: Request available sources const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(this.txId); + ctx.writeUInt32(this.#txid); ctx.writeUInt32(0x7d2); // Database query ctx.writeUInt32(0x0); - await this.writeWithLength(ctx, socket); + await this.writeWithLength(ctx); } - private async requestFileTransferId(p_filepath: string, socket: Socket): Promise { + /** + * Request TxId for file + * @param {string} filepath + */ + private async requestFileTransferId(filepath: string): Promise { // 0x7d4: Request transfer id? const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(this.txId); + ctx.writeUInt32(this.#txid); ctx.writeUInt32(0x7d4); - ctx.writeNetworkStringUTF16(p_filepath); + ctx.writeNetworkStringUTF16(filepath); ctx.writeUInt32(0x0); // Not sure why we need 0x0 here - await this.writeWithLength(ctx, socket); + await this.writeWithLength(ctx); } - private async requestChunkRange(p_txid: number, p_chunkStartId: number, p_chunkEndId: number, socket: Socket): Promise { + /** + * + * @param {number} txid Transfer ID for this session + * @param {number} chunkStartId + * @param {number} chunkEndId + */ + private async requestChunkRange(txid: number, chunkStartId: number, chunkEndId: number): Promise { // 0x7d5: seems to be the code to request chunk range const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(this.txId); + ctx.writeUInt32(this.#txid); ctx.writeUInt32(0x7d5); ctx.writeUInt32(0x0); - ctx.writeUInt32(p_txid); // I assume this is the transferid + ctx.writeUInt32(txid); //TODO This isn't txid is it? ctx.writeUInt32(0x0); - ctx.writeUInt32(p_chunkStartId); + ctx.writeUInt32(chunkStartId); ctx.writeUInt32(0x0); - ctx.writeUInt32(p_chunkEndId); - await this.writeWithLength(ctx, socket); + ctx.writeUInt32(chunkEndId); + await this.writeWithLength(ctx); } - private async signalTransferComplete(socket: Socket): Promise { + /** + * Signal Transfer Completed + */ + private async signalTransferComplete(): Promise { // 0x7d6: seems to be the code to signal transfer completed const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(this.txId); + ctx.writeUInt32(this.#txid); ctx.writeUInt32(0x7d6); - await this.writeWithLength(ctx, socket); + await this.writeWithLength(ctx); } - // 00000013 666c747 80000009f 00000003 00000000 010100 - private async sendNoSourcesReply(socket: Socket, p_data: FileTransferData) { + /** + * Reply to Devices requesting our sources + * @param {FileTransferData} data + */ + private async sendNoSourcesReply(data: FileTransferData) { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(p_data.message.txid); + ctx.writeUInt32(data.message.txid); ctx.writeUInt32(0x3); ctx.writeUInt32(0x0); ctx.writeUInt16(257); ctx.writeUInt8(0x0); - await this.writeWithLength(ctx, socket); + await this.writeWithLength(ctx); } + /** + * Promise will resolve when service is available + */ public async isAvailable(): Promise { - while (!this._isAvailable) { + while (!this.#isAvailable) { await sleep(250) } } diff --git a/services/Service.ts b/services/Service.ts index b4e1b07..ce3b413 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -23,10 +23,15 @@ export abstract class ServiceHandler extends EventEmitter { protected parent: InstanceType; private _devices: Map> = new Map(); + /** + * + * @param parent + * @param serviceName + */ - constructor(p_parent: InstanceType, serviceName: string) { + constructor(parent: InstanceType, serviceName: string) { super(); - this.parent = p_parent; + this.parent = parent; this.name = serviceName; this.parent.services[serviceName] = this; } @@ -57,14 +62,14 @@ export abstract class ServiceHandler extends EventEmitter { const service = new ctor(parent, this, deviceId); await service.listen(); - + let serverName = `${ctor.name}`; if (deviceId) { this.parent.devices.addService(deviceId, service) serverName += deviceId.string; } this.setupService(service, deviceId) - + this.parent.addServer(serverName, service.server); return service; } @@ -89,9 +94,9 @@ export abstract class Service extends EventEmitter { private messageBuffer: Buffer = null; - constructor(p_parent: InstanceType, serviceHandler: InstanceType, deviceId?: DeviceId) { + constructor(parent: InstanceType, serviceHandler: InstanceType, deviceId?: DeviceId) { super(); - this.parent = p_parent; + this.parent = parent; this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; this.device = (deviceId ? this.parent.devices.device(deviceId) : null); @@ -118,8 +123,8 @@ export abstract class Service extends EventEmitter { reject(err); }); - socket.on('data', async p_data => { - await this.dataHandler(p_data, socket) + socket.on('data', async data => { + await this.dataHandler(data, socket) }); }).listen(0, '0.0.0.0', () => { @@ -128,7 +133,7 @@ export abstract class Service extends EventEmitter { this.server = server; Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); if (this.deviceId) { - Logger.silly(`started timer for ${this.name} for ${this.deviceId}`) + Logger.silly(`started timer for ${this.name} for ${this.deviceId.string}`) this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent, this._handler); }; resolve(server); @@ -164,14 +169,14 @@ export abstract class Service extends EventEmitter { } } - private async dataHandler(p_data: Buffer, socket: Socket) { + private async dataHandler(data: Buffer, socket: Socket) { // Concantenate messageBuffer with current data let buffer: Buffer = null; if (this.messageBuffer && this.messageBuffer.length > 0) { - buffer = Buffer.concat([this.messageBuffer, p_data]); + buffer = Buffer.concat([this.messageBuffer, data]); } else { - buffer = p_data; + buffer = data; } this.messageBuffer = null @@ -182,7 +187,7 @@ export abstract class Service extends EventEmitter { if (!this.isBufferedService) { const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(), false), socket); this.messageHandler(parsedData); - + }; if (await this.subMessageTest(ctx.peek(20))) { @@ -204,9 +209,11 @@ export abstract class Service extends EventEmitter { if (this.device) { this.device.parent.emit('newService', this.device, this) } + + this.emit('newDevice', this); const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); this.messageHandler(parsedData); - + } try { @@ -239,35 +246,35 @@ export abstract class Service extends EventEmitter { } } - async waitForMessage(message: string, p_messageId: number): Promise { + async waitForMessage(eventMessage: string, messageId: number): Promise { return await new Promise((resolve, reject) => { - const listener = (p_message: ServiceMessage) => { - if (p_message.id === p_messageId) { - this.removeListener(message, listener); - resolve(p_message.message); + const listener = (message: ServiceMessage) => { + if (message.id === messageId) { + this.removeListener(eventMessage, listener); + resolve(message.message); } }; - this.addListener(message, listener); + this.addListener(eventMessage, listener); setTimeout(() => { - reject(new Error(`Failed to receive message '${p_messageId}' on time`)); + reject(new Error(`Failed to receive message '${messageId}' on time`)); }, MESSAGE_TIMEOUT); }); } - async write(p_ctx: WriteContext, socket: Socket) { - assert(p_ctx.isLittleEndian() === false); - const buf = p_ctx.getBuffer(); - const written = await socket.write(buf); + async write(ctx: WriteContext) { + assert(ctx.isLittleEndian() === false); + const buf = ctx.getBuffer(); + const written = await this.socket.write(buf); return written; } - async writeWithLength(p_ctx: WriteContext, socket: Socket) { - assert(p_ctx.isLittleEndian() === false); - const newCtx = new WriteContext({ size: p_ctx.tell() + 4, autoGrow: false }); - newCtx.writeUInt32(p_ctx.tell()); - newCtx.write(p_ctx.getBuffer()); + async writeWithLength(ctx: WriteContext) { + assert(ctx.isLittleEndian() === false); + const newCtx = new WriteContext({ size: ctx.tell() + 4, autoGrow: false }); + newCtx.writeUInt32(ctx.tell()); + newCtx.write(ctx.getBuffer()); assert(newCtx.isEOF()); - return await this.write(newCtx, socket); + return await this.write(newCtx); } // callback for timeout timer @@ -290,7 +297,7 @@ export abstract class Service extends EventEmitter { protected abstract parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; - protected abstract parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage; + protected abstract parseData(ctx: ReadContext, socket: Socket): ServiceMessage; - protected abstract messageHandler(p_data: ServiceMessage): void; + protected abstract messageHandler(data: ServiceMessage): void; } diff --git a/services/StateMap.ts b/services/StateMap.ts index d1fd941..cedb8e4 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -68,7 +68,7 @@ export class StateMapHandler extends ServiceHandler { public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); - const stateMap = service as Services.StateMap; + const stateMap = service as Services.Service; this.addDevice(deviceId, service); stateMap.on('stateMessage', (data: ServiceMessage) => { @@ -88,8 +88,8 @@ export class StateMap extends Service { public readonly handler: StateMapHandler; private hasReceivedState: boolean = false; - constructor(p_parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { - super(p_parent, serviceHandler, deviceId) + constructor(parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { + super(parent, serviceHandler, deviceId) this.handler = this._handler as StateMapHandler } @@ -104,7 +104,7 @@ export class StateMap extends Service { switch (thisPeer?.device?.type) { case "PLAYER": { - for (let state of playerStateValues) { + for (let state of playerStateValues) { await this.subscribeState(state, 0, socket); } break; @@ -128,28 +128,28 @@ export class StateMap extends Service { protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) - sleep(500) + //sleep(500) assert(socket); - this.emit('newDevice', this) + //this.emit('newDevice', this) return } - protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { assert(this.deviceId); - - const marker = p_ctx.getString(4); + + const marker = ctx.getString(4); if (marker !== MAGIC_MARKER) { Logger.error(assert(marker !== MAGIC_MARKER)); } assert(marker === MAGIC_MARKER); - - const type = p_ctx.readUInt32(); + + const type = ctx.readUInt32(); switch (type) { case MAGIC_MARKER_JSON: { - const name = p_ctx.readNetworkStringUTF16(); + const name = ctx.readNetworkStringUTF16(); let jsonString = ""; try { - jsonString = p_ctx.readNetworkStringUTF16(); + jsonString = ctx.readNetworkStringUTF16(); const json = JSON.parse(jsonString); return { id: MAGIC_MARKER_JSON, @@ -167,9 +167,9 @@ export class StateMap extends Service { } case MAGIC_MARKER_INTERVAL: { - const name = p_ctx.readNetworkStringUTF16(); - const interval = p_ctx.readInt32(); - p_ctx.seek(-4); + const name = ctx.readNetworkStringUTF16(); + const interval = ctx.readInt32(); + ctx.seek(-4); return { id: MAGIC_MARKER_INTERVAL, @@ -188,30 +188,30 @@ export class StateMap extends Service { assert.fail(`Unhandled type ${type}`); } - protected messageHandler(p_data: ServiceMessage): void { + protected messageHandler(data: ServiceMessage): void { - if (p_data?.message?.interval) { - this.sendStateResponse(p_data.message.name, p_data.socket); - } - if (p_data?.message?.json) { - this.emit('stateMessage', p_data); + if (data?.message?.interval) { + this.sendStateResponse(data.message.name, data.socket); + } + if (data?.message?.json) { + this.emit('stateMessage', data); } - if (p_data && p_data.message.json && !this.hasReceivedState) { + if (data && data.message.json && !this.hasReceivedState) { Logger.silent( - `${p_data.deviceId.string} ${p_data.message.name} => ${p_data.message.json ? JSON.stringify(p_data.message.json) : p_data.message.interval + `${data.deviceId.string} ${data.message.name} => ${data.message.json ? JSON.stringify(data.message.json) : data.message.interval }`); - this.hasReceivedState = true; + this.hasReceivedState = true; } } - private async sendStateResponse(p_state: string, socket: Socket) { + private async sendStateResponse(state: string, socket: Socket) { const getMessage = function (): Buffer { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); ctx.writeUInt32(Action.response); - ctx.writeNetworkStringUTF16(p_state); + ctx.writeNetworkStringUTF16(state); ctx.writeUInt32(Result.reject); return ctx.getBuffer(); }; @@ -225,14 +225,14 @@ export class StateMap extends Service { await socket.write(buffer); } - private async subscribeState(p_state: string, p_interval: number, socket: Socket) { + private async subscribeState(state: string, interval: number, socket: Socket) { const getMessage = function (): Buffer { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); ctx.writeUInt32(MAGIC_MARKER_INTERVAL); - ctx.writeNetworkStringUTF16(p_state); - ctx.writeUInt32(p_interval); + ctx.writeNetworkStringUTF16(state); + ctx.writeUInt32(interval); return ctx.getBuffer(); }; diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 194836c..dc1c108 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -44,7 +44,7 @@ export class TimeSynchronization extends Service { ctx.write(this.parent.options.actingAs.token); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); - await this.write(ctx, this.socket); + await this.write(ctx); } private timeSyncMsgHelper(msgId: number, msgs: bigint[]): Buffer { @@ -75,7 +75,7 @@ export class TimeSynchronization extends Service { const ctx = new WriteContext() ctx.write(buffMsg) this.remoteTime = remoteTime; - this.write(ctx, this.socket); + this.write(ctx); }; // private async sendTimeSyncReply(interval: bigint, timeReceived: bigint): Promise { @@ -148,7 +148,7 @@ export class TimeSynchronization extends Service { protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { assert((socket)); Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) - this.emit('newDevice', this) + //this.emit('newDevice', this) return } } From 8bd83af8849b0362bb89adc8aedd248af1b563d0 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 10:09:06 -0400 Subject: [PATCH 093/146] Removed parseServiceData --- services/BeatInfo.ts | 5 ----- services/Directory.ts | 10 ---------- services/FileTransfer.ts | 12 ------------ services/Service.ts | 14 ++++++-------- services/StateMap.ts | 9 +-------- services/TimeSync.ts | 11 ++--------- 6 files changed, 9 insertions(+), 52 deletions(-) diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index dcde61b..f083202 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -202,9 +202,4 @@ export class BeatInfo extends Service { } } - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - assert((socket)); - Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) - return - } } \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 3987802..cc6782b 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -30,16 +30,6 @@ export class Directory extends Service { protected readonly isBufferedService = false; protected timeAlive: number; - protected parseServiceData( - messageId: number, - deviceId: DeviceId, - serviceName: string, - socket: Socket - ): ServiceMessage { - assert(socket); - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`); - return; - } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 7f91d8c..e596760 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -81,14 +81,6 @@ export class FileTransfer extends Service { return this.#txid; } - - - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - assert((socket)); - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) - return - } - protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { const check = ctx.getString(4); @@ -129,12 +121,8 @@ export class FileTransfer extends Service { assert(ctx.readUInt8() === 0x1); assert(ctx.isEOF()); - //if (sources.length) { Logger.silly(`getting sources for `, this.deviceId.string); - - //this.getSources(sources, socket); this.updateSources(sources); - //} return { id: messageId, diff --git a/services/Service.ts b/services/Service.ts index ce3b413..0e09e3f 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -187,13 +187,17 @@ export abstract class Service extends EventEmitter { if (!this.isBufferedService) { const parsedData = this.parseData(new ReadContext(ctx.readRemainingAsNewArrayBuffer(), false), socket); this.messageHandler(parsedData); - }; if (await this.subMessageTest(ctx.peek(20))) { const messageId = ctx.readUInt32(); - ctx.seek(16) // DeviceID + const token = ctx.read(16) // DeviceID + if (!this.deviceId) { + const deviceId = new DeviceId(token); + Logger.silent(`${this.name} adding DeviceId: ${deviceId.string}`) + this.deviceId = deviceId + } //peak at network string length then rewind and read string const stringLength = ctx.readUInt32(); ctx.seek(-4); @@ -209,11 +213,7 @@ export abstract class Service extends EventEmitter { if (this.device) { this.device.parent.emit('newService', this.device, this) } - this.emit('newDevice', this); - const parsedData = this.parseServiceData(messageId, this.deviceId, serviceName, socket); - this.messageHandler(parsedData); - } try { @@ -295,8 +295,6 @@ export abstract class Service extends EventEmitter { assert(!service.hasDevice(deviceId)); } - protected abstract parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage; - protected abstract parseData(ctx: ReadContext, socket: Socket): ServiceMessage; protected abstract messageHandler(data: ServiceMessage): void; diff --git a/services/StateMap.ts b/services/StateMap.ts index cedb8e4..d60812d 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -2,7 +2,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, MessageId, StageLinqValueObj } from '../types'; +import { ServiceMessage, StageLinqValueObj } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; @@ -126,13 +126,6 @@ export class StateMap extends Service { } } - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - Logger.silly(`${MessageId[messageId]} to ${serviceName} from ${deviceId.string}`) - //sleep(500) - assert(socket); - //this.emit('newDevice', this) - return - } protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { assert(this.deviceId); diff --git a/services/TimeSync.ts b/services/TimeSync.ts index dc1c108..78bc98f 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -1,5 +1,4 @@ -import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; @@ -85,7 +84,7 @@ export class TimeSynchronization extends Service { // await this.write(ctx, this.socket); // }; - protected parseData(p_ctx: ReadContext): ServiceMessage { + protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { const timestamp = this.getTimeStamp(); const size = p_ctx.readUInt32(); @@ -104,7 +103,7 @@ export class TimeSynchronization extends Service { return { id: id, deviceId: this.deviceId, - socket: this.socket, + socket: socket, message: { msgs: msgs, timestamp: timestamp, @@ -145,11 +144,5 @@ export class TimeSynchronization extends Service { } } - protected parseServiceData(messageId: number, deviceId: DeviceId, serviceName: string, socket: Socket): ServiceMessage { - assert((socket)); - Logger.silly(`${messageId} to ${serviceName} from ${deviceId.string}`) - //this.emit('newDevice', this) - return - } } From 76e681bbb26788d7f21c1e954bf485657eaf747c Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 16:25:11 -0400 Subject: [PATCH 094/146] More TypeDoc-ing --- StageLinq/index.ts | 11 +---- network/Discovery.ts | 21 +++++----- services/BeatInfo.ts | 12 +++--- services/Directory.ts | 7 ++-- services/Service.ts | 93 +++++++++++++++++++++++++++++++++++++++---- services/StateMap.ts | 19 +++++++++ 6 files changed, 126 insertions(+), 37 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 19a3d88..8dbb86e 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -52,6 +52,7 @@ export class StageLinq extends EventEmitter { private servers: Map = new Map(); /** + * Main StageLinq Class * @constructor * @param {StageLinqOptions} [options] */ @@ -87,15 +88,6 @@ export class StageLinq extends EventEmitter { } } - ////// Getters & Setters ///////// - // get databases() { - // return this.#databases; - // } - - // get sources() { - // return this.#sources - // } - /** * * @param {string} serverName @@ -138,6 +130,7 @@ export class StageLinq extends EventEmitter { /** * Disconnect from the StageLinq network. + * Close all open Servers */ async disconnect() { try { diff --git a/network/Discovery.ts b/network/Discovery.ts index f787ad4..efe3e26 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -43,6 +43,7 @@ export class Discovery extends EventEmitter { private hasLooped: boolean = false; /** + * Discovery Class * @constructor * @param {StageLinq} parent StageLinq Instance */ @@ -52,7 +53,7 @@ export class Discovery extends EventEmitter { } /** - * + * Get ConnectionInfo * @param {DeviceId} deviceId * @returns {ConnectionInfo} */ @@ -61,7 +62,7 @@ export class Discovery extends EventEmitter { } /** - * + * Set ConnectionInfo * @param {DeviceId} deviceId * @param {ConnectionInfo} connectionInfo */ @@ -127,7 +128,7 @@ export class Discovery extends EventEmitter { /** * Announce library to network - * @param {number} port + * @param {number} port Port for Directory Service */ async announce(port: number) { assert(this.socket); @@ -168,7 +169,7 @@ export class Discovery extends EventEmitter { //////////// PRIVATE METHODS /////////////// /** - * + * Broadcast Discovery Message * @param {Socket} socket * @param {Buffer} msg * @param {number} port @@ -179,9 +180,9 @@ export class Discovery extends EventEmitter { } /** - * Listen for new devices on the network and callback when a new one is found. - * @param {DeviceDiscoveryCallback} callback Callback when new device is discovered. - */ + * Listen for new devices on the network and callback when a new one is found. + * @param {DeviceDiscoveryCallback} callback Callback when new device is discovered. + */ private async listenForDevices(callback: DeviceDiscoveryCallback) { this.socket = UDPSocket.createSocket('udp4'); @@ -201,7 +202,7 @@ export class Discovery extends EventEmitter { } /** - * + * Read Connection Info from Context * @param {ReadContext} ctx * @param {IpAddress} address * @returns {ConnectionInfo} @@ -233,7 +234,7 @@ export class Discovery extends EventEmitter { } /** - * + * Create a Discovery Message * @param {string} action * @param {DiscoveryMessageOptions} discoveryMessageOptions * @param {number} port @@ -271,7 +272,7 @@ export class Discovery extends EventEmitter { } /** - * + * Get list of Broadcast-enabled Network Interfaces * @returns {SubnetInfo[]} */ private findBroadcastIPs(): SubnetInfo[] { diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index f083202..56e4d5a 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -37,7 +37,7 @@ export class BeatInfoHandler extends ServiceHandler { #beatRegister: Map = new Map(); /** - * + * Get most recent BeatData * @param {DeviceId} [deviceId] optionally filter by DeviceId * @returns {BeatData[]} */ @@ -46,7 +46,7 @@ export class BeatInfoHandler extends ServiceHandler { } /** - * + * Add BeatData for Device * @param {DeviceId} deviceId * @param {BeatData} data */ @@ -55,7 +55,7 @@ export class BeatInfoHandler extends ServiceHandler { } /** - * + * Setup BeatInfo ServiceHandler * @param {Service} service * @param {DeviceId} deviceId */ @@ -98,7 +98,7 @@ export class BeatInfo extends Service { } /** - * + * Get current BeatData * @returns {ServiceMessage} */ getBeatData(): ServiceMessage { @@ -106,7 +106,7 @@ export class BeatInfo extends Service { } /** - * + * Start BeatInfo * @param {BeatOptions} options * @param {BeatCallback} [beatCB] Optional User callback */ @@ -119,7 +119,7 @@ export class BeatInfo extends Service { } /** - * + * Send Subscribe to BeatInfo message to Device * @param {Socket} socket */ private async sendBeatInfoRequest() { diff --git a/services/Directory.ts b/services/Directory.ts index cc6782b..c017e23 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -32,11 +32,9 @@ export class Directory extends Service { protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { - if (ctx.sizeLeft() < 20) { return } - const id = ctx.readUInt32(); const token = ctx.read(16); if (!token) { @@ -102,8 +100,9 @@ export class Directory extends Service { /////////// Private Methods /** - * + * Send Service announcement with list of Service:Port * @param {DeviceId} deviceId + * @param {Socket} socket */ private async sendServiceAnnouncement(deviceId: DeviceId, socket: Socket): Promise { const ctx = new WriteContext(); @@ -154,7 +153,7 @@ export class Directory extends Service { } /** - * + * Send TimeStamp reply to Device * @param {Uint8Array} token Token from recepient Device */ private async sendTimeStampReply(token: Uint8Array) { diff --git a/services/Service.ts b/services/Service.ts index 0e09e3f..56a3d94 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -24,9 +24,10 @@ export abstract class ServiceHandler extends EventEmitter { private _devices: Map> = new Map(); /** - * - * @param parent - * @param serviceName + * ServiceHandler Abstract Class + * @constructor + * @param {StageLinq} parent + * @param {string} serviceName */ constructor(parent: InstanceType, serviceName: string) { @@ -36,26 +37,56 @@ export abstract class ServiceHandler extends EventEmitter { this.parent.services[serviceName] = this; } + /** + * Check if Service Handler has Device + * @param {DeviceId} deviceId + * @returns {boolean} + */ hasDevice(deviceId: DeviceId): boolean { return this._devices.has(deviceId.string) } + /** + * Get an attached device from Service Handler + * @param {DeviceId} deviceId + * @returns {Service} + */ getDevice(deviceId: DeviceId): Service { return this._devices.get(deviceId.string); } + /** + * Get all attached devices from Service Handler + * @returns {Service[]} + */ getDevices(): Service[] { return [...this._devices.values()] } + /** + * Add a Device to Service Handler + * @param {DeviceId} deviceId + * @param {Service} service + */ addDevice(deviceId: DeviceId, service: Service) { this._devices.set(deviceId.string, service) } + /** + * Remove a Device from Service Handler + * @param {DeviceId} deviceId + */ deleteDevice(deviceId: DeviceId) { this._devices.delete(deviceId.string) } + /** + * Start new service factory function + * @param {Service} ctor + * @param {StageLinq} parent + * @param {DeviceId} deviceId + * @returns {Service} + */ async startServiceListener>(ctor: { new(_parent: InstanceType, _serviceHandler?: any, _deviceId?: DeviceId): T; }, parent?: InstanceType, deviceId?: DeviceId): Promise { @@ -94,6 +125,12 @@ export abstract class Service extends EventEmitter { private messageBuffer: Buffer = null; + /** + * Service Abstract Class + * @param {StageLinq} parent + * @param {ServiceHandler} serviceHandler + * @param {DeviceId} deviceId + */ constructor(parent: InstanceType, serviceHandler: InstanceType, deviceId?: DeviceId) { super(); this.parent = parent; @@ -102,6 +139,10 @@ export abstract class Service extends EventEmitter { this.device = (deviceId ? this.parent.devices.device(deviceId) : null); } + /** + * Creates a new Net.Server for Service + * @returns {Server} + */ async createServer(): Promise { return await new Promise((resolve, reject) => { @@ -141,11 +182,18 @@ export abstract class Service extends EventEmitter { }); } + /** + * Start Service Listener + * @returns {Promise} + */ async listen(): Promise { const server = await this.createServer(); return server.address() as net.AddressInfo; } + /** + * Close Server + */ closeServer() { assert(this.server); try { @@ -169,8 +217,12 @@ export abstract class Service extends EventEmitter { } } + /** + * Handle incoming Data from Server Socket + * @param {Buffer} data + * @param {Socket} socket + */ private async dataHandler(data: Buffer, socket: Socket) { - // Concantenate messageBuffer with current data let buffer: Buffer = null; if (this.messageBuffer && this.messageBuffer.length > 0) { @@ -246,6 +298,12 @@ export abstract class Service extends EventEmitter { } } + /** + * Wait for a message from the wire + * @param {string} eventMessage + * @param {number} messageId + * @returns {Promise} + */ async waitForMessage(eventMessage: string, messageId: number): Promise { return await new Promise((resolve, reject) => { const listener = (message: ServiceMessage) => { @@ -261,14 +319,24 @@ export abstract class Service extends EventEmitter { }); } - async write(ctx: WriteContext) { + /** + * Write a Context message to the socket + * @param {WriteContext} ctx + * @returns {Promise} true if data written + */ + async write(ctx: WriteContext): Promise { assert(ctx.isLittleEndian() === false); const buf = ctx.getBuffer(); const written = await this.socket.write(buf); - return written; + return await written; } - async writeWithLength(ctx: WriteContext) { + /** + * Write a length-prefixed Context message to the socket + * @param {WriteContext} ctx + * @returns {Promise} true if data written + */ + async writeWithLength(ctx: WriteContext): Promise { assert(ctx.isLittleEndian() === false); const newCtx = new WriteContext({ size: ctx.tell() + 4, autoGrow: false }); newCtx.writeUInt32(ctx.tell()); @@ -277,7 +345,16 @@ export abstract class Service extends EventEmitter { return await this.write(newCtx); } - // callback for timeout timer + // + /** + * Callback for server timeout timer + * Runs if device doesn't conect to service server + * @param {DeviceId} deviceId + * @param {string} serviceName + * @param {Server} server + * @param {StageLinq} parent + * @param {ServiceHandler} handler + */ protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); diff --git a/services/StateMap.ts b/services/StateMap.ts index d60812d..713cefa 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -66,6 +66,11 @@ export class StateMapHandler extends ServiceHandler { public readonly name = 'StateMap'; public deviceTrackRegister: Map = new Map(); + /** + * Setup Statemap ServiceHandler + * @param {Service} service + * @param {DeviceId} deviceId + */ public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); const stateMap = service as Services.Service; @@ -93,6 +98,9 @@ export class StateMap extends Service { this.handler = this._handler as StateMapHandler } + /** + * Subscribe to StateMap States + */ public async subscribe() { const socket = this.socket; while (!this.parent.discovery.hasConnectionInfo(this.deviceId)) { @@ -198,6 +206,11 @@ export class StateMap extends Service { } } + /** + * Respond to StateMap request with rejection + * @param {string} state + * @param {Socket} socket + */ private async sendStateResponse(state: string, socket: Socket) { const getMessage = function (): Buffer { @@ -218,6 +231,12 @@ export class StateMap extends Service { await socket.write(buffer); } + /** + * Send subcribe to state message to device + * @param {string} state Path/Name of the State + * @param {number} interval TODO clear this up + * @param {Socket} socket + */ private async subscribeState(state: string, interval: number, socket: Socket) { const getMessage = function (): Buffer { From 54a8b12993901f194f632ab5088a00f1509e970a Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 16:32:37 -0400 Subject: [PATCH 095/146] add source to FileTransfer event messages --- Databases/Databases.ts | 2 +- Databases/Sources.ts | 2 +- cli/index.ts | 12 ++++++------ services/FileTransfer.ts | 20 ++++++++++---------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Databases/Databases.ts b/Databases/Databases.ts index c4fd8b7..2d32ee7 100644 --- a/Databases/Databases.ts +++ b/Databases/Databases.ts @@ -38,7 +38,7 @@ export class Databases extends EventEmitter { const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); - const file = await source.service.getFile(source.database.location); + const file = await source.service.getFile(source, source.database.location); Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); fs.writeFileSync(dbPath, Buffer.from(file)); diff --git a/Databases/Sources.ts b/Databases/Sources.ts index fa911af..b8293cf 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -99,7 +99,7 @@ export class Sources extends EventEmitter { await service.isAvailable(); try { - const file = await service.getFile(path); + const file = await service.getFile(source, path); return file; } catch (err) { Logger.error(err); diff --git a/cli/index.ts b/cli/index.ts index 4d73daf..aadb0e3 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -165,12 +165,12 @@ async function main() { if (stageLinq.fileTransfer) { - stageLinq.fileTransfer.on('fileTransferProgress', (file, txid, progress) => { - console.log(`[FILETRANSFER] {${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); + stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => { + console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); }); - stageLinq.fileTransfer.on('fileTransferComplete', (file, txid) => { - console.log(`[FILETRANSFER] Complete {${txid}} ${file}`); + stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => { + console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); stageLinq.fileTransfer.on('newSource', (_source: Source) => { @@ -181,8 +181,8 @@ async function main() { console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); }); - stageLinq.databases.on('dbDownloaded', (_source: Source) => { - console.log(`[FILETRANSFER] Database Downloaded: (${_source.name})`); + stageLinq.databases.on('dbDownloaded', (source: Source) => { + console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`); }); } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index e596760..d8e7f8a 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -36,8 +36,8 @@ export interface FileTransferProgress { } export declare interface FileTransfer { - on(event: 'fileTransferProgress', listener: (fileName: string, txid: number, progress: FileTransferProgress) => void): this; - on(event: 'fileTransferComplete', listener: (fileName: string, txid: number) => void): this; + on(event: 'fileTransferProgress', listener: (source: Source, fileName: string, txid: number, progress: FileTransferProgress) => void): this; + on(event: 'fileTransferComplete', listener: (source: Source, fileName: string, txid: number) => void): this; on(event: 'newSource', listener: (source: Source) => void): this; on(event: 'sourceRemoved', listener: (sourceName: string, deviceId: DeviceId) => void): this; } @@ -54,8 +54,11 @@ export class FileTransferHandler extends ServiceHandler { const fileTransfer = service as FileTransfer; Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); this.addDevice(deviceId, service); - fileTransfer.on('fileTransferProgress', (fileName, txid, progress) => { - this.emit('fileTransferProgress', fileName, txid, progress); + fileTransfer.on('fileTransferProgress', (source, fileName, txid, progress) => { + this.emit('fileTransferProgress', source, fileName, txid, progress); + }); + fileTransfer.on('fileTransferComplete', (source, fileName, txid) => { + this.emit('fileTransferComplete', source, fileName, txid); }); fileTransfer.on('newSource', (source: Source) => { this.emit('newSource', source); @@ -63,9 +66,6 @@ export class FileTransferHandler extends ServiceHandler { fileTransfer.on('sourceRemoved', (name: string, deviceId: DeviceId) => { this.emit('sourceRemoved', name, deviceId); }); - fileTransfer.on('fileTransferComplete', (fileName, txid) => { - this.emit('fileTransferComplete', fileName, txid); - }); } } @@ -256,7 +256,7 @@ export class FileTransfer extends Service { * @param {string} location Location of the file on the device. * @returns {Promise} Contents of the file. */ - async getFile(location: string): Promise { + async getFile(source: Source, location: string): Promise { while (!this.#isAvailable) { await sleep(500) } @@ -286,7 +286,7 @@ export class FileTransfer extends Service { while (this.receivedFile.isEOF() === false) { const bytesDownloaded = total - this.receivedFile.sizeLeft(); const percentComplete = (bytesDownloaded / total) * 100; - this.emit('fileTransferProgress', location.split('/').pop(), this.txid, { + this.emit('fileTransferProgress', source, location.split('/').pop(), this.txid, { sizeLeft: this.receivedFile.sizeLeft(), total: txinfo.size, bytesDownloaded: bytesDownloaded, @@ -297,7 +297,7 @@ export class FileTransfer extends Service { await sleep(200); } Logger.debug(`Download complete.`); - this.emit('fileTransferComplete', location.split('/').pop(), this.#txid) + this.emit('fileTransferComplete', source, location.split('/').pop(), this.#txid) resolve(true); }); } catch (err) { From 7902710534f1630a56572c35e8965a76bd9942e8 Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 16:50:30 -0400 Subject: [PATCH 096/146] Add Listening event to Discovery --- StageLinq/index.ts | 2 +- cli/index.ts | 21 +++++++++++++-------- network/Discovery.ts | 6 ++++-- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 8dbb86e..11bade9 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -118,7 +118,7 @@ export class StageLinq extends EventEmitter { */ async connect() { // Initialize Discovery agent - await this.discovery.init(this.options.actingAs); + await this.discovery.listen(this.options.actingAs); //Directory is required const directory = new Services.DirectoryHandler(this, Services.Directory.name) diff --git a/cli/index.ts b/cli/index.ts index aadb0e3..dd926b0 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -11,7 +11,6 @@ require('console-stamp')(console, { format: ':date(HH:MM:ss) :label', }); - function progressBar(size: number, bytes: number, total: number): string { const progress = Math.ceil((bytes / total) * 10) let progressArrary = new Array(size); @@ -61,14 +60,14 @@ async function main() { console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - downloadDbSources: true, + downloadDbSources: false, maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, - //ServiceList.TimeSynchronization, TODO Implement TimeSync Fully + //ServiceList.TimeSynchronization, //TODO Implement TimeSync fully ], } @@ -99,6 +98,14 @@ async function main() { // }); + stageLinq.discovery.on('listening', () => { + console.log(`[DISCOVERY] Listening`) + }); + + stageLinq.discovery.on('announcing', (info) => { + console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) + }); + stageLinq.discovery.on('newDiscoveryDevice', (info) => { console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name} ${info.software.version}`) }); @@ -107,9 +114,7 @@ async function main() { console.log(`[DISCOVERY] Updated Device ${Buffer.from(info.token).toString('hex')} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) }); - stageLinq.discovery.on('announcing', (info) => { - console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) - }); + stageLinq.devices.on('newDevice', (device) => { @@ -173,8 +178,8 @@ async function main() { console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); - stageLinq.fileTransfer.on('newSource', (_source: Source) => { - console.log(`[FILETRANSFER] Source Available: (${_source.name})`); + stageLinq.fileTransfer.on('newSource', (source: Source) => { + console.log(`[FILETRANSFER] Source Available: (${source.name})`); }); stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { diff --git a/network/Discovery.ts b/network/Discovery.ts index efe3e26..29df968 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -26,6 +26,7 @@ export declare interface Discovery { on(event: 'newDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; on(event: 'updatedDiscoveryDevice', listener: (info: DiscoveryMessage) => void): this; on(event: 'announcing', listener: (info: DiscoveryMessage) => void): this; + on(event: 'listening', listener: () => void): this; } export class Discovery extends EventEmitter { @@ -96,13 +97,14 @@ export class Discovery extends EventEmitter { } /** - * Initialize Discovery + * Start Discovery Listener * @param {DiscoveryMessageOptions} options */ - async init(options: DiscoveryMessageOptions) { + async listen(options: DiscoveryMessageOptions) { this.options = options; this.deviceId = new DeviceId(options.token) + this.emit('listening'); await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token)) {//&& deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { From 254ce438759255655424bfd97eec04f0efab7b4a Mon Sep 17 00:00:00 2001 From: honusz Date: Fri, 31 Mar 2023 18:02:26 -0400 Subject: [PATCH 097/146] Add DeviceId to DiscoveryMessage, Simplify all els --- cli/index.ts | 18 ++++++------ devices/Devices.ts | 67 +++++++++---------------------------------- network/Discovery.ts | 15 +++++----- services/Directory.ts | 2 +- types/index.ts | 25 ++++++++-------- 5 files changed, 44 insertions(+), 83 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index dd926b0..5e0d208 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -67,7 +67,6 @@ async function main() { ServiceList.StateMap, ServiceList.BeatInfo, ServiceList.FileTransfer, - //ServiceList.TimeSynchronization, //TODO Implement TimeSync fully ], } @@ -103,15 +102,15 @@ async function main() { }); stageLinq.discovery.on('announcing', (info) => { - console.log(`[DISCOVERY] Broadcasting Announce ${Buffer.from(info.token).toString('hex')} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) + console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) }); stageLinq.discovery.on('newDiscoveryDevice', (info) => { - console.log(`[DISCOVERY] New Device ${Buffer.from(info.token).toString('hex')} ${info.source} ${info.software.name} ${info.software.version}`) + console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`) }); stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { - console.log(`[DISCOVERY] Updated Device ${Buffer.from(info.token).toString('hex')} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) + console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) }); @@ -128,13 +127,11 @@ async function main() { if (stageLinq.stateMap) { - stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); - }); - stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); service.subscribe(); + + // To Utilize NowPlaying Status updates stageLinq.status.addPlayer({ stateMap: service, address: service.socket.remoteAddress, @@ -143,6 +140,11 @@ async function main() { }) }); + stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { + console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); + }); + + stageLinq.status.on('trackLoaded', async (status) => { console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); diff --git a/devices/Devices.ts b/devices/Devices.ts index 38352c1..6d348bd 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -27,80 +27,41 @@ export class Devices extends EventEmitter { /** * - * @param {(string | Uint8Array | DeviceId)} deviceId + * @param {DeviceId} deviceId * @returns {Promise} */ - async getDevice(deviceId: string | Uint8Array | DeviceId): Promise { + async getDevice(deviceId: DeviceId): Promise { while (!this.hasDevice(deviceId)) { await sleep(150); } - - if (typeof deviceId == "string") { - return this.#devices.get(deviceId) - } - if (deviceId instanceof DeviceId) { - const _deviceId = deviceId as DeviceId - return this.#devices.get(_deviceId.string) - } - if (typeof deviceId == "object") { - const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string - return this.#devices.get(deviceString); - } + return this.#devices.get(deviceId.string) } /** * - * @param {(string | Uint8Array | DeviceId)} deviceId + * @param {DeviceId} deviceId * @returns {Device} */ - device(deviceId: string | Uint8Array | DeviceId): Device { - if (typeof deviceId == "string") { - return this.#devices.get(deviceId) - } - if (deviceId instanceof DeviceId) { - const _deviceId = deviceId as DeviceId - return this.#devices.get(_deviceId.string) - } - if (typeof deviceId == "object") { - const deviceString = /(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string - return this.#devices.get(deviceString); - } + device(deviceId: DeviceId): Device { + return this.#devices.get(deviceId.string) } /** * - * @param {(string | Uint8Array | DeviceId)} deviceId + * @param {DeviceId} deviceId * @returns {boolean} */ - hasDevice(deviceId: Uint8Array | string | DeviceId): boolean { - if (typeof deviceId == "string") { - return this.#devices.has(deviceId) - } - if (deviceId instanceof DeviceId) { - const _deviceId = deviceId as DeviceId - return this.#devices.has(_deviceId.string) - } - if (typeof deviceId == "object") { - return this.#devices.has(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/i - .exec(Buffer.from(deviceId as Uint8Array).toString('hex')) - .splice(1) - .join('-') as string) - } + hasDevice(deviceId: DeviceId): boolean { + return this.#devices.has(deviceId.string) } /** * - * @param {(string | Uint8Array | DeviceId)} deviceId + * @param {DeviceId} deviceId * @param {ConnectionInfo} info * @returns {boolean} */ - hasNewInfo(deviceId: Uint8Array | string | DeviceId, info: ConnectionInfo): boolean { + hasNewInfo(deviceId: DeviceId, info: ConnectionInfo): boolean { return this.device(deviceId).info?.port !== info.port } @@ -121,7 +82,7 @@ export class Devices extends EventEmitter { * @param {Service} service */ addService(deviceId: DeviceId, service: InstanceType) { - const device = this.device(deviceId.string) + const device = this.device(deviceId) device.addService(service) } @@ -131,7 +92,7 @@ export class Devices extends EventEmitter { * @param {string} serviceName */ deleteService(deviceId: DeviceId, serviceName: string) { - const device = this.device(deviceId.string); + const device = this.device(deviceId); device.deleteService(serviceName) } @@ -150,7 +111,7 @@ export class Device extends EventEmitter { */ constructor(info: ConnectionInfo, parent: Devices) { super(); - this.deviceId = new DeviceId(info.token); + this.deviceId = info.deviceId; this.parent = parent; this.info = info; } diff --git a/network/Discovery.ts b/network/Discovery.ts index 29df968..98a8d50 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -107,8 +107,7 @@ export class Discovery extends EventEmitter { this.emit('listening'); await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { - if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.token)) {//&& deviceIdFromBuff(connectionInfo.token) !== deviceIdFromBuff(this.options.token)) { - + if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.deviceId)) { const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); Logger.silly(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) @@ -117,12 +116,10 @@ export class Discovery extends EventEmitter { this.hasLooped = true; } - if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.token) && this.parent.devices.hasNewInfo(connectionInfo.token, connectionInfo)) { - const deviceId = new DeviceId(connectionInfo.token) - - this.peers.set(deviceId.string, connectionInfo); - this.parent.devices.updateDeviceInfo(deviceId, connectionInfo); - Logger.silly(`Updated port for ${deviceId.string}`); + if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.deviceId) && this.parent.devices.hasNewInfo(connectionInfo.deviceId, connectionInfo)) { + this.peers.set(connectionInfo.deviceId.string, connectionInfo); + this.parent.devices.updateDeviceInfo(connectionInfo.deviceId, connectionInfo); + Logger.silly(`Updated port for ${connectionInfo.deviceId.string}`); this.emit('updatedDiscoveryDevice', connectionInfo); } }); @@ -226,6 +223,7 @@ export class Discovery extends EventEmitter { port: ctx.readUInt16(), address: address, }; + connectionInfo.deviceId = new DeviceId(connectionInfo.token) connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); if (deviceTypes[connectionInfo.software.name]) { connectionInfo.device = deviceTypes[connectionInfo.software.name]; @@ -246,6 +244,7 @@ export class Discovery extends EventEmitter { const msg: DiscoveryMessage = { action: action, port: port || 0, + deviceId: new DeviceId(discoveryMessageOptions.token), software: { name: discoveryMessageOptions.name, version: discoveryMessageOptions.version diff --git a/services/Directory.ts b/services/Directory.ts index c017e23..b6a2712 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -109,7 +109,7 @@ export class Directory extends Service { ctx.writeUInt32(MessageId.ServicesRequest); ctx.write(this.parent.options.actingAs.token); let services: InstanceType[] = [] - const device = await this.parent.devices.getDevice(deviceId.string); + const device = await this.parent.devices.getDevice(deviceId); for (const serviceName of Object.keys(this.parent.services)) { if (device && !!deviceTypes[device.info?.software?.name]) { switch (serviceName) { diff --git a/types/index.ts b/types/index.ts index feb8968..baf1764 100644 --- a/types/index.ts +++ b/types/index.ts @@ -13,6 +13,7 @@ export * from './models'; export interface DiscoveryMessage { token: Uint8Array; + deviceId?: DeviceId; source: string; action: string; software: { @@ -22,8 +23,8 @@ export interface DiscoveryMessage { port: number; } -export enum DeviceType { - Player = "PLAYER", +export enum DeviceType { + Player = "PLAYER", Mixer = "MIXER", Controller = "CONTROLLER", } @@ -53,7 +54,7 @@ export interface Source { database: { location: string; size: number; - connection?: DbConnection; + connection?: DbConnection; remote?: { location: string, device: string, @@ -74,8 +75,8 @@ export type IpAddress = string; export type IpAddressPort = string; -export enum ServiceList { - StateMap = "StateMap", +export enum ServiceList { + StateMap = "StateMap", FileTransfer = "FileTransfer", BeatInfo = "BeatInfo", TimeSynchronization = "TimeSynchronization", @@ -88,22 +89,21 @@ export interface StageLinqOptions { actingAs?: DiscoveryMessageOptions; downloadDbSources?: boolean; services?: ServiceList[]; - //services?: typeof Services[] } type deviceType = { - [key: string] : { + [key: string]: { name: string, type: string, decks: number, } } -export const deviceTypes:deviceType = { +export const deviceTypes: deviceType = { JC11: { name: 'PRIME4', type: 'CONTROLLER', decks: 4 }, JC16: { name: 'PRIME2', type: 'CONTROLLER', decks: 2 }, - JC20: { name: 'LC6000', type: 'OTHER' , decks: 0 }, - JP07: { name: 'SC5000', type: 'PLAYER' , decks: 2 }, + JC20: { name: 'LC6000', type: 'OTHER', decks: 0 }, + JP07: { name: 'SC5000', type: 'PLAYER', decks: 2 }, JP08: { name: 'SC5000M', type: 'PLAYER', decks: 2 }, JP11: { name: 'PRIMEGO', type: 'CONTROLLER', decks: 2 }, JP13: { name: 'SC6000', type: 'PLAYER', decks: 2 }, @@ -114,6 +114,5 @@ export const deviceTypes:deviceType = { NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER', decks: 2 }, NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER', decks: 2 }, JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, - JM10: { name: 'DN-X1850Prime', type: 'MIXER' , decks: 0 }, - //OfflineAnalyzer: { name: 'OfflineAnalyzer', type: 'OTHER' } - } + JM10: { name: 'DN-X1850Prime', type: 'MIXER', decks: 0 }, +} From 1c9888a9fd5fb35d2c865c60866f7ef02e9e9deb Mon Sep 17 00:00:00 2001 From: honusz Date: Sun, 2 Apr 2023 00:22:48 -0400 Subject: [PATCH 098/146] small cleanup --- cli/index.ts | 18 +++++++++--------- devices/Devices.ts | 10 +++++----- services/StateMap.ts | 13 ++++++------- services/TimeSync.ts | 3 +-- types/index.ts | 4 ++-- 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 5e0d208..1230bd8 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,6 +1,6 @@ import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source } from '../types'; import { DeviceId } from '../devices' -import * as Services from '../services' +import { StateData, StateMapDevice, BeatData, BeatInfo } from '../services'; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; import * as fs from 'fs'; @@ -59,8 +59,9 @@ async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: async function main() { console.log('Starting CLI'); + const stageLinqOptions: StageLinqOptions = { - downloadDbSources: false, + downloadDbSources: true, maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ @@ -114,8 +115,6 @@ async function main() { }); - - stageLinq.devices.on('newDevice', (device) => { console.log(`[DEVICES] New Device ${device.deviceId.string}`) }); @@ -127,7 +126,7 @@ async function main() { if (stageLinq.stateMap) { - stageLinq.stateMap.on('newDevice', (service: Services.StateMapDevice) => { + stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); service.subscribe(); @@ -140,7 +139,7 @@ async function main() { }) }); - stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { + stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); }); @@ -160,6 +159,7 @@ async function main() { } } }); + stageLinq.status.on('nowPlaying', async (status) => { console.log(`[STATUS] Now Playing ${status.deviceId.string}`); }); @@ -209,7 +209,7 @@ async function main() { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: ServiceMessage,) { + function beatCallback(bd: ServiceMessage,) { let deckBeatString = "" for (let i = 0; i < bd.message.deckCount; i++) { deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` @@ -228,7 +228,7 @@ async function main() { }; - stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: Services.BeatInfo) => { + stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) @@ -248,7 +248,7 @@ async function main() { if (beatMethod.useRegister) { beatInfo.startBeatInfo(beatOptions); - function beatFunc(beatInfo: Services.BeatInfo) { + function beatFunc(beatInfo: BeatInfo) { const beatData = beatInfo.getBeatData(); if (beatData) beatCallback(beatData); } diff --git a/devices/Devices.ts b/devices/Devices.ts index 6d348bd..171afda 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -1,5 +1,5 @@ import { EventEmitter } from 'events'; -import * as Services from '../services'; +import { Service } from '../services'; import { ConnectionInfo } from '../types'; import { DeviceId } from '../devices' import { sleep } from '../utils'; @@ -7,7 +7,7 @@ import { sleep } from '../utils'; export declare interface Devices { on(event: 'newDevice', listener: (device: Device) => void): this; - on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; + on(event: 'newService', listener: (device: Device, service: InstanceType) => void): this; } export class Devices extends EventEmitter { @@ -81,7 +81,7 @@ export class Devices extends EventEmitter { * @param {DeviceId} deviceId * @param {Service} service */ - addService(deviceId: DeviceId, service: InstanceType) { + addService(deviceId: DeviceId, service: InstanceType) { const device = this.device(deviceId) device.addService(service) } @@ -102,7 +102,7 @@ export class Device extends EventEmitter { readonly parent: Devices; readonly deviceId: DeviceId; info: ConnectionInfo; - private services: Map> = new Map(); + private services: Map> = new Map(); /** * @constructor @@ -120,7 +120,7 @@ export class Device extends EventEmitter { * Add an instantiated Service * @param {Service} service */ - addService(service: InstanceType) { + addService(service: InstanceType) { this.services.set(service.name, service) } diff --git a/services/StateMap.ts b/services/StateMap.ts index 713cefa..05c45a0 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,13 +1,12 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service, ServiceHandler } from './Service'; import { ServiceMessage, StageLinqValueObj } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; import { sleep } from '../utils'; -import * as Services from '../services'; +import { Service, ServiceHandler } from '../services'; import { StageLinq } from '../StageLinq'; import * as stagelinqConfig from '../stagelinqConfig.json'; @@ -48,10 +47,10 @@ const mixerStateValues = Object.values(StageLinqValueObj.mixer); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; -export type StateMapDevice = InstanceType +export type StateMapDevice = InstanceType export interface StateData { - service: InstanceType + service: InstanceType name?: string; json?: { type: number; @@ -73,14 +72,14 @@ export class StateMapHandler extends ServiceHandler { */ public setupService(service: Service, deviceId: DeviceId) { Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); - const stateMap = service as Services.Service; + const stateMap = service as Service; this.addDevice(deviceId, service); - stateMap.on('stateMessage', (data: ServiceMessage) => { + stateMap.on('stateMessage', (data: ServiceMessage) => { this.emit('stateMessage', data); }); - stateMap.on('newDevice', (service: InstanceType) => { + stateMap.on('newDevice', (service: InstanceType) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) this.emit('newDevice', service); assert(service); diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 78bc98f..34f1a29 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -2,7 +2,6 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; import { Service, ServiceHandler } from './Service'; -import * as Services from '../services'; import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; @@ -22,7 +21,7 @@ export class TimeSynchronizationHandler extends ServiceHandler { public setupService(service: TimeSynchronization, deviceId: DeviceId) { console.log(`Setting up ${service.name} for ${deviceId.string}`); - service.on('newDevice', (_service: InstanceType) => { + service.on('newDevice', (_service: InstanceType) => { Logger.debug(`New TimeSync Device ${service.deviceId.string}`) _service.sendTimeSyncRequest(); }) diff --git a/types/index.ts b/types/index.ts index baf1764..3a4e983 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,7 +1,7 @@ import { Socket } from 'net'; import { DbConnection } from '../Databases'; import { DiscoveryMessageOptions } from '../network'; -import * as Services from '../services'; +import { FileTransfer } from '../services'; import { DeviceId } from '../devices/DeviceId'; @@ -50,7 +50,7 @@ export interface ServiceMessage { export interface Source { name: string; deviceId: DeviceId; - service: InstanceType + service: InstanceType database: { location: string; size: number; From dbb0bfcd81be573b629b5919ae3e1db399bb9181 Mon Sep 17 00:00:00 2001 From: honusz Date: Sun, 2 Apr 2023 00:22:54 -0400 Subject: [PATCH 099/146] update readme --- README.md | 267 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 139 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index f0b15db..fff2b04 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# StageLinq - Listener Proof of Concept +# StageLinqJS - A Robust Implementation of StageLinq Library ## Description -This branch demonstrates a novel way of handling connections with devices and their services on the StageLinq network. +This branch implements the methods demonstrated previously in the StageLinq Listener branch. Rather than searching out devices via discovery, we are able to have devices initiate connections to the library. As demonstrated, this approach: * Greatly reduces complexity. @@ -11,159 +11,170 @@ Rather than searching out devices via discovery, we are able to have devices ini * Allows connections from devices we couldn't use previously (i.e. x1800/x1850 mixers). -## Method Summary -* Instantiate a net.Server for each service we wish to implement. - -* Write a DiscoveryMessage which includes the port on which the Discovery service is listening, and announce ourselves on UDP port 51337. - -* StageLinq devices on the network will initiate a connection to the Directory service, and send a Service Request (0x2). - -* Reply to each device with a Service Announcement (0x0) for each of the services we offer and the port we are listening to them on. - -* If a device implements that service it will initiate a connection, sending a Service Announcement (0x0), a Network String with the name of the service, and the port it is using. - -* The connection to this Device-Service is now open, and we can use it as we normally would. - -* If a connection is lost to a device, it will simply reconnect. - -### Additional Notes on the Listener Method - -* The Directory service is the only one which is *required* as it is the initial connection endpoint for remote devices. - -* Only tokens of a specific structure seem to work, otherwise devices won't initiate a connection. One requirement *seems* to be that they start with `0xFF FF FF FF FF FF`, but some more research into this is needed. - -### Implementing Selected Services -We can choose which services to implement in the initialize() method in StageLinqDevices.ts +## Implementing Selected Services +We can choose which services to implement by including them in the `StageLinqOptions` parameter passed to Stagelinq on initialization. ```ts - async initialize(): Promise { - - await this.startServiceListener(StateMap); - await this.startServiceListener(FileTransfer); - const directory = await this.startServiceListener(Directory); //we need the server's port for announcement message - - return directory.serverInfo - } - ``` - -## Other Changes Implemented in Listener - -* When a device is shutdown, it sends a Disconnection message (0x9) to connected FileTransfer service. - -* Network Device has been eliminated. - * Directory is now an extended instance of Service. - * The connectToService factory function has been moved to StageLinqDevices (renamed startServiceListener); -* Created a DeviceId class, to assist handling deviceIds. - * An instance of DeviceId holds both the buffer and formatted UUID-type string. - * It has methods for retrieving the string or buffer. -* Created some other type definitions (IpAddressPort) to better communicate what properties are expecting. -* Instances of Service have a new abstract method, parseServiceData. This is just because ServiceAnnouncement messages on StateMap and FileTransfer were causing some headache, and needed to be parsed separately. -* FileTransfer Unknown0 message is used to trigger getSources. See notes in code. - -## To Be Implemented / Possibilities - -* EventEmitter stuff isn't fully implemented yet, with a few exceptions (those needed for FileTransfer) +const stageLinqOptions: StageLinqOptions = { + downloadDbSources: false, + maxRetries: 3, + actingAs: ActingAsDevice.StageLinqJS, + services: [ + ServiceList.StateMap, + ServiceList.BeatInfo, + ServiceList.FileTransfer, + ], +} +``` -* FileTransfer has only been tested with DB. -* Some methods from Database.ts have been moved to FileTransfer. This isn't intended to be permanent, it was just to allow a demonstration of downloading a DB. +## Discovery -* TimeSyc.ts is in the project, but should be disregarded for now. +```ts +stageLinq.discovery.on('listening', () => { + console.log(`[DISCOVERY] Listening`) +}); -* We could possibly eliminate StageLinqDevices, as this step is no longer really necessary. Multiple devices are handled by single instances of each service. +stageLinq.discovery.on('announcing', (info) => { + console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) +}); -* StageLinqListener and Announce could be reworked into a single class. Presently all StageLinqListener is doing is adding and updating a list of announced devices (StageLinqDevices.peers). +stageLinq.discovery.on('newDiscoveryDevice', (info) => { + console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`) +}); -## Compatibility Notes +stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { + console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) +}); + ``` -* This is **Experimental**. Do not use in a live setup, lots of further testing is required. -* That being said, I have tested it (Mac & PC) on my setup: - * 2x SC6000 players running EngineOS 2.3.2 - * X1800 Mixer running 1.6 firmware -* Hoping Prime4 / Prime GO users could test and let me know how it works. -# -## Original ReadMe -# StageLinq +## StateMap +```ts +stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { + console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); + service.subscribe(); + + // To Utilize NowPlaying Status updates + stageLinq.status.addPlayer({ + stateMap: service, + address: service.socket.remoteAddress, + port: service.socket.remotePort, + deviceId: service.deviceId, + }) +}); -NodeJS library implementation to access information through the Denon StageLinq protocol. +stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { + console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); + }); +``` -# Features +### Using NowPlaying-type updates from StageLinq.status -* Tested with Denon two SC6000s, X1850, Prime 4, Prime 2, and Prime Go. -* Event emitters for state changes, tracks getting loaded, and current playing track. -* Event emitter for debug logging. -* Downloads source databases for you. -* You can implement handling the database yourself or use this library's BetterSqlite3 dependency. +```ts +stageLinq.status.on('trackLoaded', async (status) => { + console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); + }); + + stageLinq.status.on('nowPlaying', async (status) => { + console.log(`[STATUS] Now Playing ${status.deviceId.string}`); + }); ---- + stageLinq.status.on('stateChanged', async (status) => { + console.log(`[STATUS] State Changed ${status.deviceId.string}`); + }); +``` -## Usage +## FileTransfer & Databases ```ts -import { StageLinq } from '../StageLinq'; +stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => { + console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); +}); -const options = { downloadDbSources: true }; -const stageLinq = new StageLinq(options); +stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => { + console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); +}); -stageLinq.devices.on('ready', (connectionInfo) => { - console.log(`Device ${connectionInfo.software.name} on ` + - `${connectionInfo.address}:${connectionInfo.port} is ready.`); +stageLinq.fileTransfer.on('newSource', (source: Source) => { + console.log(`[FILETRANSFER] Source Available: (${source.name})`); }); -stageLinq.devices.on('trackLoaded', (status) => { - console.log(`"${status.title}" - ${status.artist} loaded on player ` + - `${status.deck})`); +stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { + console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); }); -stageLinq.devices.on('nowPlaying', (status) => { - console.log(`Now Playing: "${status.title}" - ${status.artist})`); +stageLinq.databases.on('dbDownloaded', (source: Source) => { + console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`); }); ``` +## BeatInfo +```ts +const beatOptions = { + // Resolution for triggering callback + // 0 = every message WARNING, it's a lot! + // 1 = every beat + // 4 = every 4 beats + // .25 = every 1/4 beat + everyNBeats: 1, +} + +// User callback function. +// Will be triggered everytime a player's beat counter crosses the resolution threshold +function beatCallback(bd: ServiceMessage,) { + let deckBeatString = "" + for (let i = 0; i < bd.message.deckCount; i++) { + deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` + } + console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); +} + +//// callback is optional, BeatInfo messages can be consumed by: +// - user callback +// - event messages +// - reading the register +const beatMethod = { + useCallback: true, + useEvent: false, + useRegister: false, +}; + + +stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { + console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) + + + if (beatMethod.useCallback) { + beatInfo.startBeatInfo(beatOptions, beatCallback); + } + + if (beatMethod.useEvent) { + beatInfo.startBeatInfo(beatOptions); + stageLinq.beatInfo.on('beatMsg', (bd) => { + if (bd.message) { + beatCallback(bd); + } + }); + } + + if (beatMethod.useRegister) { + beatInfo.startBeatInfo(beatOptions); + + function beatFunc(beatInfo: BeatInfo) { + const beatData = beatInfo.getBeatData(); + if (beatData) beatCallback(beatData); + } + + setTimeout(beatFunc, 4000, beatInfo) + } + +}) -A [complete example](https://github.com/chrisle/StageLinq/blob/main/cli/index.ts) with all events and options can be found in the CLI. - ---- - -## Overview - -The idea behind this library is to have a structure something like this: - -**StageLinq > Devices > Player > Deck** - -A StageLinq sets up a device listener and a class that handles all the -devices (`StageLinqDevices`). - -`StageLinqDevices` figures out if it wants to connect or not and handles -connections. There may be one or more device on the network. For each device it -will try to connect to it and subscribe to it's `StateMap`. - -Currently there is only one type of device: `Player`. A `Player` may have up to -4 decks A, B, C, D (aka "layers"). The `Player` handles incoming messages, -parses them, groups them, and emits events. These events bubble up to the -`Device`. - -## Database - -You can use BetterSqlite3 bundled into this library or let this library -download the files for you, then choose your own Sqlite library to -query the database. See CLI example. - -## Logging - -I needed the logging to be used outside of the library so I made them events -that you can listen to. - -* `error`: When something bad happens. -* `warn`: When something happens but doesn't affect anything. -* `info`/`log`: When we have something to say -* `debug`: Spits out the parsed version of the packets. -* `silly`: Dumps all kinds of internal stuff +``` -## About -Forked from @MarByteBeep's code. +## Additional Notes on the Listener Method -Additional reverse engineering work: https://github.com/chrisle/stagelinq-pcap +* The Directory service is the only one which is *required* as it is the initial connection endpoint for remote devices. -Used in my app Now Playing https://www.nowplaying2.com +* Only tokens of a specific structure seem to work, otherwise devices won't initiate a connection. One requirement *seems* to be that they start with `0xFFFFFFFFFFFF`, but some more research into this is needed. \ No newline at end of file From f005e6ca54cd959befdf9b64bd80ab02d5caa50c Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 3 Apr 2023 14:45:35 -0400 Subject: [PATCH 100/146] Update Dependancies --- package-lock.json | 1342 +++++------------------------------------ package.json | 21 +- types/models/index.ts | 2 +- 3 files changed, 159 insertions(+), 1206 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6377aab..cbe5645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,50 +1,45 @@ { - "name": "stagelinq", - "version": "1.0.7", - "lockfileVersion": 2, + "name": "StageLinqJS", + "version": "2.0.0-Beta", + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "stagelinq", - "version": "1.0.7", + "name": "StageLinqJS", + "version": "2.0.0-Beta", "license": "GNU GPLv3", "dependencies": { "@types/filesystem": "^0.0.32", - "@types/uuid": "^8.3.4", - "better-sqlite3": "^7.5.0", + "@types/uuid": "^9.0.1", "console-stamp": "^3.0.3", - "file-type": "^16.5.3", "ip": "^1.1.5", - "minimist": "^1.2.5", - "promise-socket": "^7.0.0" + "minimist": "^1.2.5" }, "devDependencies": { "@types/assert": "^1.5.5", - "@types/better-sqlite3": "^7.4.0", + "@types/better-sqlite3": "^7.6.3", "@types/ip": "^1.1.0", - "@types/minimist": "^1.2.2", - "@types/node": "^16.4.0", + "@types/node": "^18.15.11", + "better-sqlite3": "^8.2.0", "prettier": "^2.5.1", "typedoc": "^0.23.28", - "typescript": "^4.6.2" + "typescript": "^5.0.3" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, "node_modules/@types/assert": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.5.tgz", - "integrity": "sha512-myz5KWf6ox66Ou1m0KiLZpitk7W6Vly2LFRx7AXHSLeMUM6bmDIStIBk0xd7I2vXcAQEuhegdpjPuypmP5ui0Q==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.6.tgz", + "integrity": "sha512-Y7gDJiIqb9qKUHfBQYOWGngUpLORtirAVPuj/CWJrU2C6ZM4/y3XLwuwfGMF8s7QzW746LQZx23m0+1FSgjfug==", "dev": true }, "node_modules/@types/better-sqlite3": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.4.0.tgz", - "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", - "dev": true + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz", + "integrity": "sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/filesystem": { "version": "0.0.32", @@ -68,30 +63,16 @@ "@types/node": "*" } }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, "node_modules/@types/node": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.0.tgz", - "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", "dev": true }, "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==" }, "node_modules/ansi-sequence-parser": { "version": "1.1.0", @@ -113,20 +94,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -137,6 +104,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -153,19 +121,21 @@ ] }, "node_modules/better-sqlite3": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", - "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", + "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", + "dev": true, "hasInstallScript": true, "dependencies": { "bindings": "^1.5.0", - "prebuild-install": "^7.0.0" + "prebuild-install": "^7.1.0" } }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -174,25 +144,13 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -206,6 +164,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -226,9 +185,9 @@ } }, "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -243,15 +202,8 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", @@ -269,43 +221,22 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, "node_modules/console-stamp": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.3.tgz", - "integrity": "sha512-6ltMcMEVDHb1bqb+qaVfCX7Vf3vEkfZEeKyReG1ny45Rv6YJynCcdv94j7whNVfxj/4/3Ji/QBHY6p4JI51Ucw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/console-stamp/-/console-stamp-3.1.1.tgz", + "integrity": "sha512-NTbqQ9X57xffQKTJbAm4h/ro7JNR2uD3369NeTjmRdfPJ2QmkmCUnMvC1QSxZPQOof3WPrkuA6DQV5+n35ZiIA==", "dependencies": { - "chalk": "^4.1.1", - "dateformat": "^4.5.1" + "chalk": "^4.1.2", + "dateformat": "^4.6.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node": ">=12" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, "node_modules/dateformat": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", - "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "engines": { "node": "*" } @@ -314,6 +245,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -328,19 +260,16 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "engines": { "node": ">=4.0.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "node_modules/detect-libc": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, "engines": { "node": ">=8" } @@ -349,6 +278,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -357,55 +287,28 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true }, "node_modules/has-flag": { "version": "4.0.0", @@ -415,15 +318,11 @@ "node": ">=8" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -442,33 +341,19 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" }, "node_modules/jsonc-parser": { "version": "3.2.0", @@ -480,6 +365,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -509,6 +395,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "engines": { "node": ">=10" }, @@ -517,9 +404,9 @@ } }, "node_modules/minimatch": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", - "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.5.tgz", + "integrity": "sha512-OzOamaOmNBJZUv2qqY1OSWa+++4YPpOkLgkc0w30Oov5ufKlWWXnFUl0l4dgmSv5Shq/zRVkEOXAe2NaqO4l5Q==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -532,24 +419,30 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true }, "node_modules/node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", + "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", + "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -557,57 +450,20 @@ "node": ">=10" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/peek-readable": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz", - "integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -616,7 +472,6 @@ "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", "node-abi": "^3.3.0", - "npmlog": "^4.0.1", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", @@ -631,70 +486,25 @@ } }, "node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-duplex": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz", - "integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==", - "dependencies": { - "core-js": "^3.6.5", - "promise-readable": "^6.0.0", - "promise-writable": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-readable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz", - "integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==", - "dependencies": { - "core-js": "^3.6.5" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-socket": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz", - "integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==", - "dependencies": { - "promise-duplex": "^6.0.0", - "tslib": "^2.0.1" }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/promise-writable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz", - "integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==", - "engines": { - "node": ">=10.0.0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -704,6 +514,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -715,38 +526,10 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -757,14 +540,30 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -775,11 +574,6 @@ "node": ">=10" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "node_modules/shiki": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", @@ -792,15 +586,11 @@ "vscode-textmate": "^8.0.0" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, "funding": [ { "type": "github", @@ -820,6 +610,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, "funding": [ { "type": "github", @@ -841,61 +632,23 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.2.0" } }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/strtok3": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz", - "integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -911,6 +664,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -922,6 +676,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -933,44 +688,11 @@ "node": ">=6" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/token-types": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz", - "integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -1000,22 +722,23 @@ } }, "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/vscode-oniguruma": { "version": "1.7.0", @@ -1029,784 +752,17 @@ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, - "dependencies": { - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@types/assert": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.5.tgz", - "integrity": "sha512-myz5KWf6ox66Ou1m0KiLZpitk7W6Vly2LFRx7AXHSLeMUM6bmDIStIBk0xd7I2vXcAQEuhegdpjPuypmP5ui0Q==", - "dev": true - }, - "@types/better-sqlite3": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.4.0.tgz", - "integrity": "sha512-tmSORlztb2cdWZDy4V81mRDgL+q7bd+ext4pI+Wj8EtJ5EHIZ6v7yiWbJ6A5eKVtoz77EsBEm7amwAzfqR/kAw==", - "dev": true - }, - "@types/filesystem": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", - "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", - "requires": { - "@types/filewriter": "*" - } - }, - "@types/filewriter": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", - "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==" - }, - "@types/ip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", - "integrity": "sha512-dwNe8gOoF70VdL6WJBwVHtQmAX4RMd62M+mAB9HQFjG1/qiCLM/meRy95Pd14FYBbEDwCq7jgJs89cHpLBu4HQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.0.tgz", - "integrity": "sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg==", - "dev": true - }, - "@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "better-sqlite3": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.0.tgz", - "integrity": "sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==", - "requires": { - "bindings": "^1.5.0", - "prebuild-install": "^7.0.0" - } - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "console-stamp": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/console-stamp/-/console-stamp-3.0.3.tgz", - "integrity": "sha512-6ltMcMEVDHb1bqb+qaVfCX7Vf3vEkfZEeKyReG1ny45Rv6YJynCcdv94j7whNVfxj/4/3Ji/QBHY6p4JI51Ucw==", - "requires": { - "chalk": "^4.1.1", - "dateformat": "^4.5.1" - } - }, - "core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "dateformat": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", - "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==" - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "minimatch": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", - "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", - "requires": { - "semver": "^7.3.5" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "peek-readable": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz", - "integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==" - }, - "prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-duplex": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz", - "integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==", - "requires": { - "core-js": "^3.6.5", - "promise-readable": "^6.0.0", - "promise-writable": "^6.0.0" - } - }, - "promise-readable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz", - "integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==", - "requires": { - "core-js": "^3.6.5" - } - }, - "promise-socket": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz", - "integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==", - "requires": { - "promise-duplex": "^6.0.0", - "tslib": "^2.0.1" - } - }, - "promise-writable": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz", - "integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "shiki": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", - "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", - "dev": true, - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "strtok3": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz", - "integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "token-types": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz", - "integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", - "dev": true, - "requires": { - "lunr": "^2.3.9", - "marked": "^4.2.12", - "minimatch": "^7.1.3", - "shiki": "^0.14.1" - } - }, - "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index c77fb67..0a23416 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,32 @@ { - "name": "stagelinq", + "name": "StageLinqJS", "version": "2.0.0-Beta", "description": "Typescript library to connect to Denon StageLinq devices", - "homepage": "https://github.com/chrisle/StageLinq", + "homepage": "https://github.com/honusz/StageLinq", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node dist/cli/index.js", "build": "tsc --build tsconfig.json", "watch": "tsc --build tsconfig.json -w" }, - "author": "Chris Le (TRIODE)", + "author": "honusz", "license": "GNU GPLv3", "main": "index.ts", "dependencies": { "@types/filesystem": "^0.0.32", - "@types/uuid": "^8.3.4", - "better-sqlite3": "^7.5.0", + "@types/uuid": "^9.0.1", "console-stamp": "^3.0.3", - "file-type": "^16.5.3", "ip": "^1.1.5", - "minimist": "^1.2.5", - "promise-socket": "^7.0.0" + "minimist": "^1.2.5" }, "devDependencies": { "@types/assert": "^1.5.5", - "@types/better-sqlite3": "^7.4.0", + "@types/better-sqlite3": "^7.6.3", "@types/ip": "^1.1.0", - "@types/minimist": "^1.2.2", - "@types/node": "^16.4.0", + "@types/node": "^18.15.11", + "better-sqlite3": "^8.2.0", "prettier": "^2.5.1", "typedoc": "^0.23.28", - "typescript": "^4.6.2" + "typescript": "^5.0.3" } } diff --git a/types/models/index.ts b/types/models/index.ts index e8c01aa..2d15012 100644 --- a/types/models/index.ts +++ b/types/models/index.ts @@ -1,2 +1,2 @@ -export * from './track'; +export * from './Track'; //export * from './state'; \ No newline at end of file From c3c3b2ada920dec017e12f4055bf91f4decb6957 Mon Sep 17 00:00:00 2001 From: honusz Date: Mon, 3 Apr 2023 16:15:01 -0400 Subject: [PATCH 101/146] add /docs to repo --- .gitignore | 1 - docs/.nojekyll | 1 + docs/assets/highlight.css | 99 ++ docs/assets/main.js | 58 + docs/assets/search.js | 1 + docs/assets/style.css | 1279 +++++++++++++++++ docs/classes/BeatInfo.html | 1105 +++++++++++++++ docs/classes/BeatInfoHandler.html | 1020 ++++++++++++++ docs/classes/Context.html | 192 +++ docs/classes/Databases.html | 812 +++++++++++ docs/classes/DbConnection.html | 184 +++ docs/classes/Device.html | 839 +++++++++++ docs/classes/DeviceId.html | 128 ++ docs/classes/Devices.html | 903 ++++++++++++ docs/classes/Directory.html | 1077 ++++++++++++++ docs/classes/DirectoryHandler.html | 944 +++++++++++++ docs/classes/Discovery.html | 1105 +++++++++++++++ docs/classes/FileTransfer.html | 1327 ++++++++++++++++++ docs/classes/FileTransferHandler.html | 946 +++++++++++++ docs/classes/ReadContext.html | 357 +++++ docs/classes/Service.html | 1069 ++++++++++++++ docs/classes/ServiceHandler.html | 960 +++++++++++++ docs/classes/Sources.html | 906 ++++++++++++ docs/classes/StageLinq.html | 1006 +++++++++++++ docs/classes/StateMap.html | 1103 +++++++++++++++ docs/classes/StateMapHandler.html | 955 +++++++++++++ docs/classes/TimeSynchronization.html | 1122 +++++++++++++++ docs/classes/TimeSynchronizationHandler.html | 946 +++++++++++++ docs/classes/WriteContext.html | 364 +++++ docs/enums/Action.html | 71 + docs/enums/DeviceType.html | 78 + docs/enums/MessageId.html | 78 + docs/enums/ServiceList.html | 92 ++ docs/functions/getTempFilePath.html | 124 ++ docs/functions/sleep.html | 118 ++ docs/index.html | 171 +++ docs/interfaces/BeatData.html | 82 ++ docs/interfaces/ConnectionInfo.html | 148 ++ docs/interfaces/DirectoryData.html | 68 + docs/interfaces/DiscoveryMessage.html | 112 ++ docs/interfaces/DiscoveryMessageOptions.html | 96 ++ docs/interfaces/FileTransferInfo.html | 75 + docs/interfaces/FileTransferProgress.html | 89 ++ docs/interfaces/PlayerLayerState.html | 152 ++ docs/interfaces/PlayerStatus.html | 222 +++ docs/interfaces/ServiceHandlers.html | 115 ++ docs/interfaces/ServiceMessage.html | 94 ++ docs/interfaces/Source.html | 110 ++ docs/interfaces/StageLinqOptions.html | 89 ++ docs/interfaces/StateData.html | 100 ++ docs/interfaces/TimeSyncData.html | 75 + docs/interfaces/Track.html | 397 ++++++ docs/modules.html | 187 +++ docs/types/IpAddress.html | 109 ++ docs/types/IpAddressPort.html | 109 ++ docs/types/Mixer.html | 109 ++ docs/types/Player.html | 109 ++ docs/types/PlayerDeck.html | 109 ++ docs/types/ServiceData.html | 120 ++ docs/types/StateMapDevice.html | 109 ++ docs/variables/ANNOUNCEMENT_INTERVAL.html | 109 ++ docs/variables/ActingAsDevice.html | 114 ++ docs/variables/CHUNK_SIZE.html | 109 ++ docs/variables/CONNECT_TIMEOUT.html | 109 ++ docs/variables/DISCOVERY_MESSAGE_MARKER.html | 109 ++ docs/variables/DOWNLOAD_TIMEOUT.html | 109 ++ docs/variables/LISTEN_PORT.html | 109 ++ docs/variables/LISTEN_TIMEOUT.html | 109 ++ docs/variables/MESSAGE_TIMEOUT.html | 109 ++ docs/variables/StageLinqValueObj.html | 504 +++++++ docs/variables/deviceTypes.html | 109 ++ index.ts | 2 + services/StateMap.ts | 9 + 73 files changed, 26135 insertions(+), 1 deletion(-) create mode 100644 docs/.nojekyll create mode 100644 docs/assets/highlight.css create mode 100644 docs/assets/main.js create mode 100644 docs/assets/search.js create mode 100644 docs/assets/style.css create mode 100644 docs/classes/BeatInfo.html create mode 100644 docs/classes/BeatInfoHandler.html create mode 100644 docs/classes/Context.html create mode 100644 docs/classes/Databases.html create mode 100644 docs/classes/DbConnection.html create mode 100644 docs/classes/Device.html create mode 100644 docs/classes/DeviceId.html create mode 100644 docs/classes/Devices.html create mode 100644 docs/classes/Directory.html create mode 100644 docs/classes/DirectoryHandler.html create mode 100644 docs/classes/Discovery.html create mode 100644 docs/classes/FileTransfer.html create mode 100644 docs/classes/FileTransferHandler.html create mode 100644 docs/classes/ReadContext.html create mode 100644 docs/classes/Service.html create mode 100644 docs/classes/ServiceHandler.html create mode 100644 docs/classes/Sources.html create mode 100644 docs/classes/StageLinq.html create mode 100644 docs/classes/StateMap.html create mode 100644 docs/classes/StateMapHandler.html create mode 100644 docs/classes/TimeSynchronization.html create mode 100644 docs/classes/TimeSynchronizationHandler.html create mode 100644 docs/classes/WriteContext.html create mode 100644 docs/enums/Action.html create mode 100644 docs/enums/DeviceType.html create mode 100644 docs/enums/MessageId.html create mode 100644 docs/enums/ServiceList.html create mode 100644 docs/functions/getTempFilePath.html create mode 100644 docs/functions/sleep.html create mode 100644 docs/index.html create mode 100644 docs/interfaces/BeatData.html create mode 100644 docs/interfaces/ConnectionInfo.html create mode 100644 docs/interfaces/DirectoryData.html create mode 100644 docs/interfaces/DiscoveryMessage.html create mode 100644 docs/interfaces/DiscoveryMessageOptions.html create mode 100644 docs/interfaces/FileTransferInfo.html create mode 100644 docs/interfaces/FileTransferProgress.html create mode 100644 docs/interfaces/PlayerLayerState.html create mode 100644 docs/interfaces/PlayerStatus.html create mode 100644 docs/interfaces/ServiceHandlers.html create mode 100644 docs/interfaces/ServiceMessage.html create mode 100644 docs/interfaces/Source.html create mode 100644 docs/interfaces/StageLinqOptions.html create mode 100644 docs/interfaces/StateData.html create mode 100644 docs/interfaces/TimeSyncData.html create mode 100644 docs/interfaces/Track.html create mode 100644 docs/modules.html create mode 100644 docs/types/IpAddress.html create mode 100644 docs/types/IpAddressPort.html create mode 100644 docs/types/Mixer.html create mode 100644 docs/types/Player.html create mode 100644 docs/types/PlayerDeck.html create mode 100644 docs/types/ServiceData.html create mode 100644 docs/types/StateMapDevice.html create mode 100644 docs/variables/ANNOUNCEMENT_INTERVAL.html create mode 100644 docs/variables/ActingAsDevice.html create mode 100644 docs/variables/CHUNK_SIZE.html create mode 100644 docs/variables/CONNECT_TIMEOUT.html create mode 100644 docs/variables/DISCOVERY_MESSAGE_MARKER.html create mode 100644 docs/variables/DOWNLOAD_TIMEOUT.html create mode 100644 docs/variables/LISTEN_PORT.html create mode 100644 docs/variables/LISTEN_TIMEOUT.html create mode 100644 docs/variables/MESSAGE_TIMEOUT.html create mode 100644 docs/variables/StageLinqValueObj.html create mode 100644 docs/variables/deviceTypes.html diff --git a/.gitignore b/.gitignore index ca91068..9827b2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ /localdb /dist -/docs .clinic/ # Logs diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e2ac661 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 0000000..e3ea874 --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,99 @@ +:root { + --light-hl-0: #0000FF; + --dark-hl-0: #569CD6; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #0070C1; + --dark-hl-2: #4FC1FF; + --light-hl-3: #267F99; + --dark-hl-3: #4EC9B0; + --light-hl-4: #001080; + --dark-hl-4: #9CDCFE; + --light-hl-5: #098658; + --dark-hl-5: #B5CEA8; + --light-hl-6: #795E26; + --dark-hl-6: #DCDCAA; + --light-hl-7: #A31515; + --dark-hl-7: #CE9178; + --light-hl-8: #000000FF; + --dark-hl-8: #D4D4D4; + --light-hl-9: #008000; + --dark-hl-9: #6A9955; + --light-hl-10: #AF00DB; + --dark-hl-10: #C586C0; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 0000000..f7c8366 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,58 @@ +"use strict"; +"use strict";(()=>{var Qe=Object.create;var ae=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var _e=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Me=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ce(e))!Re.call(t,i)&&i!==n&&ae(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Qe(Oe(t)):{},Me(e||!t||!t.__esModule?ae(n,"default",{value:t,enumerable:!0}):n,t));var de=_e((ce,he)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var h=t.utils.clone(n)||{};h.position=[a,l],h.index=s.length,s.push(new t.Token(r.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(n+=r[l+1]*i[h+1],l+=2,h+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),m=s.str.charAt(1),v;m in s.node.edges?v=s.node.edges[m]:(v=new t.TokenSet,s.node.edges[m]=v),s.str.length==1&&(v.final=!0),i.push({node:v,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ce=="object"?he.exports=n():e.lunr=n()}(this,function(){return t})})()});var le=[];function B(t,e){le.push({selector:e,constructor:t})}var Y=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){le.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureFocusedElementVisible(){this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null);let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}};var I=class{constructor(e){this.el=e.el,this.app=e.app}};var J=class{constructor(){this.listeners={}}addEventListener(e,n){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(n)}removeEventListener(e,n){if(!(e in this.listeners))return;let r=this.listeners[e];for(let i=0,s=r.length;i{let n=Date.now();return(...r)=>{n+e-Date.now()<0&&(t(...r),n=Date.now())}};var re=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.navigation=document.querySelector(".col-menu"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.searchInput=document.querySelector("#tsd-search input"),this.searchInput&&this.searchInput.addEventListener("focus",()=>{this.hideShowToolbar()}),this.onResize(),this.onScroll()}triggerResize(){let n=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(n)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let n=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(n)}onScroll(){this.scrollTop=window.scrollY||0;let n=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(n),this.hideShowToolbar()}hideShowToolbar(){let n=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0||!!this.searchInput&&this.searchInput===document.activeElement,n!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.navigation?.classList.toggle("col-menu--hide")),this.lastY=this.scrollTop}},R=re;R.instance=new re;var X=class extends I{constructor(n){super(n);this.anchors=[];this.index=-1;R.instance.addEventListener("resize",()=>this.onResize()),R.instance.addEventListener("scroll",r=>this.onScroll(r)),this.createAnchors()}createAnchors(){let n=window.location.href;n.indexOf("#")!=-1&&(n=n.substring(0,n.indexOf("#"))),this.el.querySelectorAll("a").forEach(r=>{let i=r.href;if(i.indexOf("#")==-1||i.substring(0,n.length)!=n)return;let s=i.substring(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=r.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let n;for(let i=0,s=this.anchors.length;ii.position-s.position);let r=new CustomEvent("scroll",{detail:{scrollTop:R.instance.scrollTop}});this.onScroll(r)}onScroll(n){let r=n.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>r;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var ue=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var me=De(de());function ve(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let n=document.querySelector("#tsd-search input"),r=document.querySelector("#tsd-search .results");if(!n||!r)throw new Error("The input field or the result list wrapper was not found");let i=!1;r.addEventListener("mousedown",()=>i=!0),r.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),n.addEventListener("focus",()=>t.classList.add("has-focus")),n.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Fe(t,r,n,s)}function Fe(t,e,n,r){n.addEventListener("input",ue(()=>{He(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?pe(e,-1):s.key==="ArrowDown"?pe(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ae(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=me.Index.load(window.searchData.index))}function He(t,e,n,r){if(Ae(r,t),!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s=i?r.index.search(`*${i}*`):[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o${fe(u.parent,i)}.${l}`);let h=document.createElement("li");h.classList.value=u.classes??"";let m=document.createElement("a");m.href=r.base+u.url,m.innerHTML=l,h.append(m),e.appendChild(h)}}function pe(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function fe(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ie(t.substring(s,o)),`${ie(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ie(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function ie(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var F="mousedown",ye="mousemove",j="mouseup",Z={x:0,y:0},ge=!1,se=!1,Be=!1,A=!1,xe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(xe?"is-mobile":"not-mobile");xe&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",ye="touchmove",j="touchend");document.addEventListener(F,t=>{se=!0,A=!1;let e=F=="touchstart"?t.targetTouches[0]:t;Z.y=e.pageY||0,Z.x=e.pageX||0});document.addEventListener(ye,t=>{if(se&&!A){let e=F=="touchstart"?t.targetTouches[0]:t,n=Z.x-(e.pageX||0),r=Z.y-(e.pageY||0);A=Math.sqrt(n*n+r*r)>10}});document.addEventListener(j,()=>{se=!1});document.addEventListener("click",t=>{ge&&(t.preventDefault(),t.stopImmediatePropagation(),ge=!1)});var K=class extends I{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(j,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(j,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){A||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!A&&this.active&&n.target.closest(".col-menu")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var oe;try{oe=localStorage}catch{oe={getItem(){return null},setItem(){}}}var Q=oe;var Le=document.head.appendChild(document.createElement("style"));Le.dataset.for="filters";var ee=class extends I{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),Le.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var te=class extends I{constructor(n){super(n);this.calculateHeights(),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.textContent.replace(/\s+/g,"-").toLowerCase()}`,this.setLocalStorage(this.fromLocalStorage(),!0),this.summary.addEventListener("click",r=>this.toggleVisibility(r)),this.icon.style.transform=this.getIconRotation()}getIconRotation(n=this.el.open){return`rotate(${n?0:-90}deg)`}calculateHeights(){let n=this.el.open,{position:r,left:i}=this.el.style;this.el.style.position="fixed",this.el.style.left="-9999px",this.el.open=!0,this.expandedHeight=this.el.offsetHeight+"px",this.el.open=!1,this.collapsedHeight=this.el.offsetHeight+"px",this.el.open=n,this.el.style.height=n?this.expandedHeight:this.collapsedHeight,this.el.style.position=r,this.el.style.left=i}toggleVisibility(n){n.preventDefault(),this.el.style.overflow="hidden",this.el.open?this.collapse():this.expand()}expand(n=!0){this.el.open=!0,this.animate(this.collapsedHeight,this.expandedHeight,{opening:!0,duration:n?300:0})}collapse(n=!0){this.animate(this.expandedHeight,this.collapsedHeight,{opening:!1,duration:n?300:0})}animate(n,r,{opening:i,duration:s=300}){if(this.animation)return;let o={duration:s,easing:"ease"};this.animation=this.el.animate({height:[n,r]},o),this.icon.animate({transform:[this.icon.style.transform||this.getIconRotation(!i),this.getIconRotation(i)]},o).addEventListener("finish",()=>{this.icon.style.transform=this.getIconRotation(i)}),this.animation.addEventListener("finish",()=>this.animationEnd(i))}animationEnd(n){this.el.open=n,this.animation=void 0,this.el.style.height="auto",this.el.style.overflow="visible",this.setLocalStorage(n)}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.open}setLocalStorage(n,r=!1){this.fromLocalStorage()===n&&!r||(Q.setItem(this.key,n.toString()),this.el.open=n,this.handleValueChange(r))}handleValueChange(n=!1){this.fromLocalStorage()===this.el.open&&!n||(this.fromLocalStorage()?this.expand(!1):this.collapse(!1))}};function be(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,Ee(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),Ee(t.value)})}function Ee(t){document.documentElement.dataset.theme=t}ve();B(X,".menu-highlight");B(K,"a[data-toggle]");B(te,".tsd-index-accordion");B(ee,".tsd-filter-item input[type=checkbox]");var we=document.getElementById("theme");we&&be(we);var je=new Y;Object.defineProperty(window,"app",{value:je});})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 0000000..ef083cf --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = JSON.parse("{\"kinds\":{\"8\":\"Enumeration\",\"16\":\"Enumeration Member\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":256,\"name\":\"DiscoveryMessageOptions\",\"url\":\"interfaces/DiscoveryMessageOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessageOptions.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessageOptions.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessageOptions.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessageOptions.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessageOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":128,\"name\":\"Discovery\",\"url\":\"classes/Discovery.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Discovery.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Discovery.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Discovery.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Discovery.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"classes/Discovery.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"broadcastAddress\",\"url\":\"classes/Discovery.html#broadcastAddress\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Discovery.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"peers\",\"url\":\"classes/Discovery.html#peers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Discovery.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"announceTimer\",\"url\":\"classes/Discovery.html#announceTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"hasLooped\",\"url\":\"classes/Discovery.html#hasLooped\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getConnectionInfo\",\"url\":\"classes/Discovery.html#getConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"setConnectionInfo\",\"url\":\"classes/Discovery.html#setConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"hasConnectionInfo\",\"url\":\"classes/Discovery.html#hasConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDeviceList\",\"url\":\"classes/Discovery.html#getDeviceList\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/Discovery.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Discovery.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"announce\",\"url\":\"classes/Discovery.html#announce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"unannounce\",\"url\":\"classes/Discovery.html#unannounce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"broadcastMessage\",\"url\":\"classes/Discovery.html#broadcastMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listenForDevices\",\"url\":\"classes/Discovery.html#listenForDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"readConnectionInfo\",\"url\":\"classes/Discovery.html#readConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"createDiscoveryMessage\",\"url\":\"classes/Discovery.html#createDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"writeDiscoveryMessage\",\"url\":\"classes/Discovery.html#writeDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"findBroadcastIPs\",\"url\":\"classes/Discovery.html#findBroadcastIPs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":32,\"name\":\"CHUNK_SIZE\",\"url\":\"variables/CHUNK_SIZE.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"FileTransferProgress\",\"url\":\"interfaces/FileTransferProgress.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"sizeLeft\",\"url\":\"interfaces/FileTransferProgress.html#sizeLeft\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/FileTransferProgress.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"bytesDownloaded\",\"url\":\"interfaces/FileTransferProgress.html#bytesDownloaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"percentComplete\",\"url\":\"interfaces/FileTransferProgress.html#percentComplete\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":128,\"name\":\"FileTransfer\",\"url\":\"classes/FileTransfer.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransfer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/FileTransfer.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransfer.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"receivedFile\",\"url\":\"classes/FileTransfer.html#receivedFile\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#txid\",\"url\":\"classes/FileTransfer.html#_txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#isAvailable\",\"url\":\"classes/FileTransfer.html#_isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":262144,\"name\":\"txid\",\"url\":\"classes/FileTransfer.html#txid\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/FileTransfer.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/FileTransfer.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getFile\",\"url\":\"classes/FileTransfer.html#getFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"updateSources\",\"url\":\"classes/FileTransfer.html#updateSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/FileTransfer.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestStat\",\"url\":\"classes/FileTransfer.html#requestStat\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestSources\",\"url\":\"classes/FileTransfer.html#requestSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestFileTransferId\",\"url\":\"classes/FileTransfer.html#requestFileTransferId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestChunkRange\",\"url\":\"classes/FileTransfer.html#requestChunkRange\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"signalTransferComplete\",\"url\":\"classes/FileTransfer.html#signalTransferComplete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"sendNoSourcesReply\",\"url\":\"classes/FileTransfer.html#sendNoSourcesReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"isAvailable\",\"url\":\"classes/FileTransfer.html#isAvailable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/FileTransfer.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/FileTransfer.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/FileTransfer.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/FileTransfer.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/FileTransfer.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/FileTransfer.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/FileTransfer.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransfer.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/FileTransfer.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/FileTransfer.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/FileTransfer.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/FileTransfer.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/FileTransfer.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/FileTransfer.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/FileTransfer.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/FileTransfer.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/FileTransfer.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":128,\"name\":\"FileTransferHandler\",\"url\":\"classes/FileTransferHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransferHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransferHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/FileTransferHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransferHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/FileTransferHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/FileTransferHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/FileTransferHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/FileTransferHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/FileTransferHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/FileTransferHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":4194304,\"name\":\"ServiceData\",\"url\":\"types/ServiceData.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/ServiceData.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"ServiceData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"types/ServiceData.html#__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"types/ServiceData.html#__type.socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"types/ServiceData.html#__type.deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"types/ServiceData.html#__type.service\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":128,\"name\":\"ServiceHandler\",\"url\":\"classes/ServiceHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ServiceHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/ServiceHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/ServiceHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"_devices\",\"url\":\"classes/ServiceHandler.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/ServiceHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/ServiceHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/ServiceHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/ServiceHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/ServiceHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/ServiceHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/ServiceHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":128,\"name\":\"Service\",\"url\":\"classes/Service.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Service.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Service.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Service.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Service.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Service.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Service.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Service.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Service.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Service.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Service.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Service.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Service.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"messageBuffer\",\"url\":\"classes/Service.html#messageBuffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Service.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Service.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Service.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"subMessageTest\",\"url\":\"classes/Service.html#subMessageTest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"dataHandler\",\"url\":\"classes/Service.html#dataHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Service.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Service.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Service.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Service.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Service.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Service.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":4194304,\"name\":\"Player\",\"url\":\"types/Player.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"PlayerDeck\",\"url\":\"types/PlayerDeck.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"Mixer\",\"url\":\"types/Mixer.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"StateMapDevice\",\"url\":\"types/StateMapDevice.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"StateData\",\"url\":\"interfaces/StateData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/StateData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/StateData.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"json\",\"url\":\"interfaces/StateData.html#json\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/StateData.html#json.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateData.json\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/StateData.html#json.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"string\",\"url\":\"interfaces/StateData.html#json.__type.string\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/StateData.html#json.__type.value\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"state\",\"url\":\"interfaces/StateData.html#json.__type.state\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"interval\",\"url\":\"interfaces/StateData.html#interval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":128,\"name\":\"StateMapHandler\",\"url\":\"classes/StateMapHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMapHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMapHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"deviceTrackRegister\",\"url\":\"classes/StateMapHandler.html#deviceTrackRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/StateMapHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMapHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/StateMapHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/StateMapHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/StateMapHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/StateMapHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/StateMapHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/StateMapHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":128,\"name\":\"StateMap\",\"url\":\"classes/StateMap.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMap.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMap.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/StateMap.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"hasReceivedState\",\"url\":\"classes/StateMap.html#hasReceivedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribe\",\"url\":\"classes/StateMap.html#subscribe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/StateMap.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/StateMap.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"sendStateResponse\",\"url\":\"classes/StateMap.html#sendStateResponse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribeState\",\"url\":\"classes/StateMap.html#subscribeState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/StateMap.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/StateMap.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/StateMap.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/StateMap.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/StateMap.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/StateMap.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/StateMap.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMap.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/StateMap.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/StateMap.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/StateMap.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/StateMap.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/StateMap.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/StateMap.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/StateMap.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/StateMap.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/StateMap.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":256,\"name\":\"DirectoryData\",\"url\":\"interfaces/DirectoryData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DirectoryData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DirectoryData\"},{\"kind\":128,\"name\":\"DirectoryHandler\",\"url\":\"classes/DirectoryHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DirectoryHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/DirectoryHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/DirectoryHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/DirectoryHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/DirectoryHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/DirectoryHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/DirectoryHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/DirectoryHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/DirectoryHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/DirectoryHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":128,\"name\":\"Directory\",\"url\":\"classes/Directory.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Directory.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Directory.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Directory.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeAlive\",\"url\":\"classes/Directory.html#timeAlive\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Directory.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Directory.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendServiceAnnouncement\",\"url\":\"classes/Directory.html#sendServiceAnnouncement\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendTimeStampReply\",\"url\":\"classes/Directory.html#sendTimeStampReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Directory.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Directory.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Directory.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Directory.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Directory.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Directory.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Directory.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Directory.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Directory.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Directory.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Directory.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Directory.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Directory.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Directory.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Directory.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Directory.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":256,\"name\":\"BeatData\",\"url\":\"interfaces/BeatData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"clock\",\"url\":\"interfaces/BeatData.html#clock\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deckCount\",\"url\":\"interfaces/BeatData.html#deckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/BeatData.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":128,\"name\":\"BeatInfoHandler\",\"url\":\"classes/BeatInfoHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfoHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfoHandler.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfoHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"#beatRegister\",\"url\":\"classes/BeatInfoHandler.html#_beatRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfoHandler.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setBeatData\",\"url\":\"classes/BeatInfoHandler.html#setBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/BeatInfoHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfoHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/BeatInfoHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/BeatInfoHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/BeatInfoHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/BeatInfoHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/BeatInfoHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/BeatInfoHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":128,\"name\":\"BeatInfo\",\"url\":\"classes/BeatInfo.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfo.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfo.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfo.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/BeatInfo.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatCallback\",\"url\":\"classes/BeatInfo.html#_userBeatCallback\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatOptions\",\"url\":\"classes/BeatInfo.html#_userBeatOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_currentBeatData\",\"url\":\"classes/BeatInfo.html#_currentBeatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/BeatInfo.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfo.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"startBeatInfo\",\"url\":\"classes/BeatInfo.html#startBeatInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"sendBeatInfoRequest\",\"url\":\"classes/BeatInfo.html#sendBeatInfoRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/BeatInfo.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/BeatInfo.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/BeatInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/BeatInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/BeatInfo.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/BeatInfo.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/BeatInfo.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/BeatInfo.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfo.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/BeatInfo.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/BeatInfo.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/BeatInfo.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/BeatInfo.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/BeatInfo.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/BeatInfo.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/BeatInfo.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/BeatInfo.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/BeatInfo.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":256,\"name\":\"TimeSyncData\",\"url\":\"interfaces/TimeSyncData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"msgs\",\"url\":\"interfaces/TimeSyncData.html#msgs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/TimeSyncData.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":128,\"name\":\"TimeSynchronizationHandler\",\"url\":\"classes/TimeSynchronizationHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronizationHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronizationHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/TimeSynchronizationHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronizationHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/TimeSynchronizationHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":128,\"name\":\"TimeSynchronization\",\"url\":\"classes/TimeSynchronization.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronization.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronization.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/TimeSynchronization.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"localTime\",\"url\":\"classes/TimeSynchronization.html#localTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"remoteTime\",\"url\":\"classes/TimeSynchronization.html#remoteTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"avgTimeArray\",\"url\":\"classes/TimeSynchronization.html#avgTimeArray\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncRequest\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeSyncMsgHelper\",\"url\":\"classes/TimeSynchronization.html#timeSyncMsgHelper\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"getTimeStamp\",\"url\":\"classes/TimeSynchronization.html#getTimeStamp\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncQuery\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncQuery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/TimeSynchronization.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeAvg\",\"url\":\"classes/TimeSynchronization.html#timeAvg\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/TimeSynchronization.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/TimeSynchronization.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/TimeSynchronization.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/TimeSynchronization.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/TimeSynchronization.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/TimeSynchronization.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/TimeSynchronization.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronization.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/TimeSynchronization.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/TimeSynchronization.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/TimeSynchronization.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/TimeSynchronization.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/TimeSynchronization.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/TimeSynchronization.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/TimeSynchronization.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/TimeSynchronization.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/TimeSynchronization.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":256,\"name\":\"ServiceHandlers\",\"url\":\"interfaces/ServiceHandlers.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":128,\"name\":\"StageLinq\",\"url\":\"classes/StageLinq.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StageLinq.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/StageLinq.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/StageLinq.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/StageLinq.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/StageLinq.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/StageLinq.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"discovery\",\"url\":\"classes/StageLinq.html#discovery\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"stateMap\",\"url\":\"classes/StageLinq.html#stateMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"fileTransfer\",\"url\":\"classes/StageLinq.html#fileTransfer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"beatInfo\",\"url\":\"classes/StageLinq.html#beatInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"timeSync\",\"url\":\"classes/StageLinq.html#timeSync\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"databases\",\"url\":\"classes/StageLinq.html#databases\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"classes/StageLinq.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"classes/StageLinq.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"directory\",\"url\":\"classes/StageLinq.html#directory\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"servers\",\"url\":\"classes/StageLinq.html#servers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"addServer\",\"url\":\"classes/StageLinq.html#addServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"deleteServer\",\"url\":\"classes/StageLinq.html#deleteServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"getServers\",\"url\":\"classes/StageLinq.html#getServers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/StageLinq.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"disconnect\",\"url\":\"classes/StageLinq.html#disconnect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":256,\"name\":\"DiscoveryMessage\",\"url\":\"interfaces/DiscoveryMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessage.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessage.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/DiscoveryMessage.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/DiscoveryMessage.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"DiscoveryMessage.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessage.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":8,\"name\":\"DeviceType\",\"url\":\"enums/DeviceType.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Player\",\"url\":\"enums/DeviceType.html#Player\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":16,\"name\":\"Mixer\",\"url\":\"enums/DeviceType.html#Mixer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":16,\"name\":\"Controller\",\"url\":\"enums/DeviceType.html#Controller\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":256,\"name\":\"ConnectionInfo\",\"url\":\"interfaces/ConnectionInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/ConnectionInfo.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/ConnectionInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#device.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.device\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"decks\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.decks\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"addressPort\",\"url\":\"interfaces/ConnectionInfo.html#addressPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/ConnectionInfo.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ConnectionInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/ConnectionInfo.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/ConnectionInfo.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/ConnectionInfo.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ConnectionInfo.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":256,\"name\":\"ServiceMessage\",\"url\":\"interfaces/ServiceMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ServiceMessage.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"message\",\"url\":\"interfaces/ServiceMessage.html#message\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"interfaces/ServiceMessage.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ServiceMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":256,\"name\":\"Source\",\"url\":\"interfaces/Source.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/Source.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/Source.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/Source.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"database\",\"url\":\"interfaces/Source.html#database\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/Source.html#database.__type.size\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"connection\",\"url\":\"interfaces/Source.html#database.__type.connection\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"remote\",\"url\":\"interfaces/Source.html#database.__type.remote\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.remote\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.device\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"local\",\"url\":\"interfaces/Source.html#database.__type.local\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.local\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":256,\"name\":\"FileTransferInfo\",\"url\":\"interfaces/FileTransferInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"txid\",\"url\":\"interfaces/FileTransferInfo.html#txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferInfo\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/FileTransferInfo.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferInfo\"},{\"kind\":4194304,\"name\":\"IpAddress\",\"url\":\"types/IpAddress.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"IpAddressPort\",\"url\":\"types/IpAddressPort.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":8,\"name\":\"ServiceList\",\"url\":\"enums/ServiceList.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"StateMap\",\"url\":\"enums/ServiceList.html#StateMap\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"FileTransfer\",\"url\":\"enums/ServiceList.html#FileTransfer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"BeatInfo\",\"url\":\"enums/ServiceList.html#BeatInfo\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"TimeSynchronization\",\"url\":\"enums/ServiceList.html#TimeSynchronization\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"Directory\",\"url\":\"enums/ServiceList.html#Directory\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":256,\"name\":\"StageLinqOptions\",\"url\":\"interfaces/StageLinqOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"maxRetries\",\"url\":\"interfaces/StageLinqOptions.html#maxRetries\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"actingAs\",\"url\":\"interfaces/StageLinqOptions.html#actingAs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"downloadDbSources\",\"url\":\"interfaces/StageLinqOptions.html#downloadDbSources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"interfaces/StageLinqOptions.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":32,\"name\":\"deviceTypes\",\"url\":\"variables/deviceTypes.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"ANNOUNCEMENT_INTERVAL\",\"url\":\"variables/ANNOUNCEMENT_INTERVAL.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_PORT\",\"url\":\"variables/LISTEN_PORT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_TIMEOUT\",\"url\":\"variables/LISTEN_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"MESSAGE_TIMEOUT\",\"url\":\"variables/MESSAGE_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"CONNECT_TIMEOUT\",\"url\":\"variables/CONNECT_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DOWNLOAD_TIMEOUT\",\"url\":\"variables/DOWNLOAD_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DISCOVERY_MESSAGE_MARKER\",\"url\":\"variables/DISCOVERY_MESSAGE_MARKER.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":8,\"name\":\"Action\",\"url\":\"enums/Action.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Login\",\"url\":\"enums/Action.html#Login\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":16,\"name\":\"Logout\",\"url\":\"enums/Action.html#Logout\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":8,\"name\":\"MessageId\",\"url\":\"enums/MessageId.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"ServicesAnnouncement\",\"url\":\"enums/MessageId.html#ServicesAnnouncement\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"TimeStamp\",\"url\":\"enums/MessageId.html#TimeStamp\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"ServicesRequest\",\"url\":\"enums/MessageId.html#ServicesRequest\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":32,\"name\":\"StageLinqValueObj\",\"url\":\"variables/StageLinqValueObj.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"StageLinqValueObj\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"variables/StageLinqValueObj.html#__type.player\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StageLinqValueObj.__type.player\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkMasterStatus\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineSyncNetworkMasterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineMasterMasterTempo\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineMasterMasterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeckCount\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"mixer\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StageLinqValueObj.__type.mixer\"},{\"kind\":1024,\"name\":\"MixerCH1faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH1faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH2faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH2faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH3faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH3faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH4faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH4faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCrossfaderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCrossfaderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment1\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment2\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment3\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment4\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerNumberOfChannels\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerNumberOfChannels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":256,\"name\":\"PlayerStatus\",\"url\":\"interfaces/PlayerStatus.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/PlayerStatus.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/PlayerStatus.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"currentBpm\",\"url\":\"interfaces/PlayerStatus.html#currentBpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/PlayerStatus.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/PlayerStatus.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"externalMixerVolume\",\"url\":\"interfaces/PlayerStatus.html#externalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"fileLocation\",\"url\":\"interfaces/PlayerStatus.html#fileLocation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"hasTrackData\",\"url\":\"interfaces/PlayerStatus.html#hasTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"jogColor\",\"url\":\"interfaces/PlayerStatus.html#jogColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"layer\",\"url\":\"interfaces/PlayerStatus.html#layer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"masterStatus\",\"url\":\"interfaces/PlayerStatus.html#masterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"masterTempo\",\"url\":\"interfaces/PlayerStatus.html#masterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"play\",\"url\":\"interfaces/PlayerStatus.html#play\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"interfaces/PlayerStatus.html#player\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"playState\",\"url\":\"interfaces/PlayerStatus.html#playState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/PlayerStatus.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"songLoaded\",\"url\":\"interfaces/PlayerStatus.html#songLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/PlayerStatus.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackNetworkPath\",\"url\":\"interfaces/PlayerStatus.html#trackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/PlayerStatus.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"dbSourceName\",\"url\":\"interfaces/PlayerStatus.html#dbSourceName\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackPath\",\"url\":\"interfaces/PlayerStatus.html#trackPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackPathAbsolute\",\"url\":\"interfaces/PlayerStatus.html#trackPathAbsolute\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":256,\"name\":\"PlayerLayerState\",\"url\":\"interfaces/PlayerLayerState.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"layer\",\"url\":\"interfaces/PlayerLayerState.html#layer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/PlayerLayerState.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"currentBpm\",\"url\":\"interfaces/PlayerLayerState.html#currentBpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"externalMixerVolume\",\"url\":\"interfaces/PlayerLayerState.html#externalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"fileLocation\",\"url\":\"interfaces/PlayerLayerState.html#fileLocation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"hasTrackData\",\"url\":\"interfaces/PlayerLayerState.html#hasTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"jogColor\",\"url\":\"interfaces/PlayerLayerState.html#jogColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"play\",\"url\":\"interfaces/PlayerLayerState.html#play\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"interfaces/PlayerLayerState.html#player\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"playState\",\"url\":\"interfaces/PlayerLayerState.html#playState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"songLoaded\",\"url\":\"interfaces/PlayerLayerState.html#songLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/PlayerLayerState.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"trackNetworkPath\",\"url\":\"interfaces/PlayerLayerState.html#trackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":32,\"name\":\"ActingAsDevice\",\"url\":\"variables/ActingAsDevice.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/ActingAsDevice.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"ActingAsDevice\"},{\"kind\":256,\"name\":\"Track\",\"url\":\"interfaces/Track.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/Track.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playOrder\",\"url\":\"interfaces/Track.html#playOrder\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"length\",\"url\":\"interfaces/Track.html#length\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpm\",\"url\":\"interfaces/Track.html#bpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"year\",\"url\":\"interfaces/Track.html#year\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Track.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"filename\",\"url\":\"interfaces/Track.html#filename\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bitrate\",\"url\":\"interfaces/Track.html#bitrate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpmAnalyzed\",\"url\":\"interfaces/Track.html#bpmAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArtId\",\"url\":\"interfaces/Track.html#albumArtId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileBytes\",\"url\":\"interfaces/Track.html#fileBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/Track.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/Track.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"album\",\"url\":\"interfaces/Track.html#album\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"genre\",\"url\":\"interfaces/Track.html#genre\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"comment\",\"url\":\"interfaces/Track.html#comment\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/Track.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"composer\",\"url\":\"interfaces/Track.html#composer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"remixer\",\"url\":\"interfaces/Track.html#remixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/Track.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"rating\",\"url\":\"interfaces/Track.html#rating\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArt\",\"url\":\"interfaces/Track.html#albumArt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"timeLastPlayed\",\"url\":\"interfaces/Track.html#timeLastPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPlayed\",\"url\":\"interfaces/Track.html#isPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileType\",\"url\":\"interfaces/Track.html#fileType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAnalyzed\",\"url\":\"interfaces/Track.html#isAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateCreated\",\"url\":\"interfaces/Track.html#dateCreated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateAdded\",\"url\":\"interfaces/Track.html#dateAdded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAvailable\",\"url\":\"interfaces/Track.html#isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isMetadataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPerfomanceDataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isPerfomanceDataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playedIndicator\",\"url\":\"interfaces/Track.html#playedIndicator\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataImported\",\"url\":\"interfaces/Track.html#isMetadataImported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"pdbImportKey\",\"url\":\"interfaces/Track.html#pdbImportKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingSource\",\"url\":\"interfaces/Track.html#streamingSource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"uri\",\"url\":\"interfaces/Track.html#uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isBeatGridLocked\",\"url\":\"interfaces/Track.html#isBeatGridLocked\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originDatabaseUuid\",\"url\":\"interfaces/Track.html#originDatabaseUuid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originTrackId\",\"url\":\"interfaces/Track.html#originTrackId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"trackData\",\"url\":\"interfaces/Track.html#trackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"overviewWaveFormData\",\"url\":\"interfaces/Track.html#overviewWaveFormData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"beatData\",\"url\":\"interfaces/Track.html#beatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"quickCues\",\"url\":\"interfaces/Track.html#quickCues\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"loops\",\"url\":\"interfaces/Track.html#loops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"thirdPartySourceId\",\"url\":\"interfaces/Track.html#thirdPartySourceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingFlags\",\"url\":\"interfaces/Track.html#streamingFlags\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"explicitLyrics\",\"url\":\"interfaces/Track.html#explicitLyrics\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"activeOnLoadLoops\",\"url\":\"interfaces/Track.html#activeOnLoadLoops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":128,\"name\":\"Context\",\"url\":\"classes/Context.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Context.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/Context.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/Context.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/Context.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/Context.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/Context.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/Context.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/Context.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/Context.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/Context.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/Context.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":64,\"name\":\"getTempFilePath\",\"url\":\"functions/getTempFilePath.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"ReadContext\",\"url\":\"classes/ReadContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ReadContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"read\",\"url\":\"classes/ReadContext.html#read\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"peek\",\"url\":\"classes/ReadContext.html#peek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemaining\",\"url\":\"classes/ReadContext.html#readRemaining\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewArrayBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewArrayBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewCtx\",\"url\":\"classes/ReadContext.html#readRemainingAsNewCtx\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/ReadContext.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readNetworkStringUTF16\",\"url\":\"classes/ReadContext.html#readNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readFloat64\",\"url\":\"classes/ReadContext.html#readFloat64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt64\",\"url\":\"classes/ReadContext.html#readUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt32\",\"url\":\"classes/ReadContext.html#readUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readInt32\",\"url\":\"classes/ReadContext.html#readInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt16\",\"url\":\"classes/ReadContext.html#readUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt8\",\"url\":\"classes/ReadContext.html#readUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/ReadContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/ReadContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/ReadContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/ReadContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/ReadContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/ReadContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/ReadContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/ReadContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/ReadContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/ReadContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":128,\"name\":\"WriteContext\",\"url\":\"classes/WriteContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WriteContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"autoGrow\",\"url\":\"classes/WriteContext.html#autoGrow\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"getBuffer\",\"url\":\"classes/WriteContext.html#getBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/WriteContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"checkSize\",\"url\":\"classes/WriteContext.html#checkSize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"resize\",\"url\":\"classes/WriteContext.html#resize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/WriteContext.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeFixedSizedString\",\"url\":\"classes/WriteContext.html#writeFixedSizedString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeNetworkStringUTF16\",\"url\":\"classes/WriteContext.html#writeNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt64\",\"url\":\"classes/WriteContext.html#writeUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt32\",\"url\":\"classes/WriteContext.html#writeUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeInt32\",\"url\":\"classes/WriteContext.html#writeInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt16\",\"url\":\"classes/WriteContext.html#writeUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt8\",\"url\":\"classes/WriteContext.html#writeUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/WriteContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/WriteContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/WriteContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/WriteContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/WriteContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/WriteContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/WriteContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/WriteContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/WriteContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":64,\"name\":\"sleep\",\"url\":\"functions/sleep.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"DeviceId\",\"url\":\"classes/DeviceId.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DeviceId.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_str\",\"url\":\"classes/DeviceId.html#m_str\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_array\",\"url\":\"classes/DeviceId.html#m_array\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"string\",\"url\":\"classes/DeviceId.html#string\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"array\",\"url\":\"classes/DeviceId.html#array\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":128,\"name\":\"Devices\",\"url\":\"classes/Devices.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Devices.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":1024,\"name\":\"#devices\",\"url\":\"classes/Devices.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/Devices.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Devices.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"device\",\"url\":\"classes/Devices.html#device\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/Devices.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasNewInfo\",\"url\":\"classes/Devices.html#hasNewInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"updateDeviceInfo\",\"url\":\"classes/Devices.html#updateDeviceInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Devices.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Devices.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Device.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"classes/Device.html#info\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/Device.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Device.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Device.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":128,\"name\":\"Databases\",\"url\":\"classes/Databases.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Databases.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Databases.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Databases.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"downloadDb\",\"url\":\"classes/Databases.html#downloadDb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":128,\"name\":\"DbConnection\",\"url\":\"classes/DbConnection.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DbConnection.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"db\",\"url\":\"classes/DbConnection.html#db\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"dbPath\",\"url\":\"classes/DbConnection.html#dbPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"querySource\",\"url\":\"classes/DbConnection.html#querySource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"zInflate\",\"url\":\"classes/DbConnection.html#zInflate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"getTrackInfo\",\"url\":\"classes/DbConnection.html#getTrackInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"close\",\"url\":\"classes/DbConnection.html#close\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":128,\"name\":\"Sources\",\"url\":\"classes/Sources.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Sources.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Sources.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"_sources\",\"url\":\"classes/Sources.html#_sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Sources.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSource\",\"url\":\"classes/Sources.html#hasSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSourceAndDB\",\"url\":\"classes/Sources.html#hasSourceAndDB\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSource\",\"url\":\"classes/Sources.html#getSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/Sources.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"setSource\",\"url\":\"classes/Sources.html#setSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"deleteSource\",\"url\":\"classes/Sources.html#deleteSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadFile\",\"url\":\"classes/Sources.html#downloadFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,63.063]],[\"comment/0\",[]],[\"name/1\",[1,37.413]],[\"comment/1\",[]],[\"name/2\",[2,54.59]],[\"comment/2\",[]],[\"name/3\",[3,50.07]],[\"comment/3\",[]],[\"name/4\",[4,54.59]],[\"comment/4\",[]],[\"name/5\",[5,52.077]],[\"comment/5\",[]],[\"name/6\",[6,57.954]],[\"comment/6\",[]],[\"name/7\",[7,35.982]],[\"comment/7\",[]],[\"name/8\",[8,45.717]],[\"comment/8\",[]],[\"name/9\",[9,39.084]],[\"comment/9\",[]],[\"name/10\",[10,44.604]],[\"comment/10\",[]],[\"name/11\",[11,54.59]],[\"comment/11\",[]],[\"name/12\",[12,63.063]],[\"comment/12\",[]],[\"name/13\",[13,57.954]],[\"comment/13\",[]],[\"name/14\",[14,63.063]],[\"comment/14\",[]],[\"name/15\",[15,39.084]],[\"comment/15\",[]],[\"name/16\",[16,63.063]],[\"comment/16\",[]],[\"name/17\",[17,63.063]],[\"comment/17\",[]],[\"name/18\",[18,63.063]],[\"comment/18\",[]],[\"name/19\",[19,63.063]],[\"comment/19\",[]],[\"name/20\",[20,63.063]],[\"comment/20\",[]],[\"name/21\",[21,63.063]],[\"comment/21\",[]],[\"name/22\",[22,46.968]],[\"comment/22\",[]],[\"name/23\",[23,46.968]],[\"comment/23\",[]],[\"name/24\",[24,63.063]],[\"comment/24\",[]],[\"name/25\",[25,63.063]],[\"comment/25\",[]],[\"name/26\",[26,63.063]],[\"comment/26\",[]],[\"name/27\",[27,63.063]],[\"comment/27\",[]],[\"name/28\",[28,63.063]],[\"comment/28\",[]],[\"name/29\",[29,63.063]],[\"comment/29\",[]],[\"name/30\",[30,63.063]],[\"comment/30\",[]],[\"name/31\",[31,63.063]],[\"comment/31\",[]],[\"name/32\",[32,63.063]],[\"comment/32\",[]],[\"name/33\",[33,63.063]],[\"comment/33\",[]],[\"name/34\",[34,52.077]],[\"comment/34\",[]],[\"name/35\",[35,63.063]],[\"comment/35\",[]],[\"name/36\",[36,63.063]],[\"comment/36\",[]],[\"name/37\",[37,63.063]],[\"comment/37\",[]],[\"name/38\",[38,54.59]],[\"comment/38\",[]],[\"name/39\",[7,35.982]],[\"comment/39\",[]],[\"name/40\",[8,45.717]],[\"comment/40\",[]],[\"name/41\",[1,37.413]],[\"comment/41\",[]],[\"name/42\",[39,63.063]],[\"comment/42\",[]],[\"name/43\",[40,54.59]],[\"comment/43\",[]],[\"name/44\",[41,54.59]],[\"comment/44\",[]],[\"name/45\",[40,54.59]],[\"comment/45\",[]],[\"name/46\",[42,48.399]],[\"comment/46\",[]],[\"name/47\",[43,48.399]],[\"comment/47\",[]],[\"name/48\",[44,63.063]],[\"comment/48\",[]],[\"name/49\",[45,63.063]],[\"comment/49\",[]],[\"name/50\",[46,57.954]],[\"comment/50\",[]],[\"name/51\",[47,63.063]],[\"comment/51\",[]],[\"name/52\",[48,63.063]],[\"comment/52\",[]],[\"name/53\",[49,63.063]],[\"comment/53\",[]],[\"name/54\",[50,63.063]],[\"comment/54\",[]],[\"name/55\",[51,63.063]],[\"comment/55\",[]],[\"name/56\",[52,63.063]],[\"comment/56\",[]],[\"name/57\",[41,54.59]],[\"comment/57\",[]],[\"name/58\",[53,43.604]],[\"comment/58\",[]],[\"name/59\",[15,39.084]],[\"comment/59\",[]],[\"name/60\",[54,48.399]],[\"comment/60\",[]],[\"name/61\",[55,48.399]],[\"comment/61\",[]],[\"name/62\",[56,48.399]],[\"comment/62\",[]],[\"name/63\",[10,44.604]],[\"comment/63\",[]],[\"name/64\",[57,48.399]],[\"comment/64\",[]],[\"name/65\",[9,39.084]],[\"comment/65\",[]],[\"name/66\",[58,48.399]],[\"comment/66\",[]],[\"name/67\",[59,48.399]],[\"comment/67\",[]],[\"name/68\",[60,48.399]],[\"comment/68\",[]],[\"name/69\",[23,46.968]],[\"comment/69\",[]],[\"name/70\",[61,48.399]],[\"comment/70\",[]],[\"name/71\",[62,48.399]],[\"comment/71\",[]],[\"name/72\",[63,46.968]],[\"comment/72\",[]],[\"name/73\",[64,48.399]],[\"comment/73\",[]],[\"name/74\",[65,48.399]],[\"comment/74\",[]],[\"name/75\",[66,63.063]],[\"comment/75\",[]],[\"name/76\",[7,35.982]],[\"comment/76\",[]],[\"name/77\",[1,37.413]],[\"comment/77\",[]],[\"name/78\",[67,48.399]],[\"comment/78\",[]],[\"name/79\",[9,39.084]],[\"comment/79\",[]],[\"name/80\",[68,46.968]],[\"comment/80\",[]],[\"name/81\",[69,46.968]],[\"comment/81\",[]],[\"name/82\",[22,46.968]],[\"comment/82\",[]],[\"name/83\",[70,46.968]],[\"comment/83\",[]],[\"name/84\",[71,48.399]],[\"comment/84\",[]],[\"name/85\",[72,48.399]],[\"comment/85\",[]],[\"name/86\",[73,63.063]],[\"comment/86\",[]],[\"name/87\",[74,41.86]],[\"comment/87\",[]],[\"name/88\",[1,37.413]],[\"comment/88\",[]],[\"name/89\",[10,44.604]],[\"comment/89\",[]],[\"name/90\",[15,39.084]],[\"comment/90\",[]],[\"name/91\",[75,52.077]],[\"comment/91\",[]],[\"name/92\",[76,63.063]],[\"comment/92\",[]],[\"name/93\",[7,35.982]],[\"comment/93\",[]],[\"name/94\",[1,37.413]],[\"comment/94\",[]],[\"name/95\",[9,39.084]],[\"comment/95\",[]],[\"name/96\",[77,63.063]],[\"comment/96\",[]],[\"name/97\",[68,46.968]],[\"comment/97\",[]],[\"name/98\",[69,46.968]],[\"comment/98\",[]],[\"name/99\",[22,46.968]],[\"comment/99\",[]],[\"name/100\",[70,46.968]],[\"comment/100\",[]],[\"name/101\",[71,48.399]],[\"comment/101\",[]],[\"name/102\",[72,48.399]],[\"comment/102\",[]],[\"name/103\",[67,48.399]],[\"comment/103\",[]],[\"name/104\",[75,52.077]],[\"comment/104\",[]],[\"name/105\",[7,35.982]],[\"comment/105\",[]],[\"name/106\",[1,37.413]],[\"comment/106\",[]],[\"name/107\",[53,43.604]],[\"comment/107\",[]],[\"name/108\",[15,39.084]],[\"comment/108\",[]],[\"name/109\",[54,48.399]],[\"comment/109\",[]],[\"name/110\",[55,48.399]],[\"comment/110\",[]],[\"name/111\",[56,48.399]],[\"comment/111\",[]],[\"name/112\",[10,44.604]],[\"comment/112\",[]],[\"name/113\",[57,48.399]],[\"comment/113\",[]],[\"name/114\",[9,39.084]],[\"comment/114\",[]],[\"name/115\",[58,48.399]],[\"comment/115\",[]],[\"name/116\",[59,48.399]],[\"comment/116\",[]],[\"name/117\",[78,63.063]],[\"comment/117\",[]],[\"name/118\",[60,48.399]],[\"comment/118\",[]],[\"name/119\",[23,46.968]],[\"comment/119\",[]],[\"name/120\",[61,48.399]],[\"comment/120\",[]],[\"name/121\",[79,63.063]],[\"comment/121\",[]],[\"name/122\",[80,63.063]],[\"comment/122\",[]],[\"name/123\",[62,48.399]],[\"comment/123\",[]],[\"name/124\",[63,46.968]],[\"comment/124\",[]],[\"name/125\",[64,48.399]],[\"comment/125\",[]],[\"name/126\",[65,48.399]],[\"comment/126\",[]],[\"name/127\",[42,48.399]],[\"comment/127\",[]],[\"name/128\",[43,48.399]],[\"comment/128\",[]],[\"name/129\",[81,50.07]],[\"comment/129\",[]],[\"name/130\",[82,63.063]],[\"comment/130\",[]],[\"name/131\",[83,54.59]],[\"comment/131\",[]],[\"name/132\",[84,63.063]],[\"comment/132\",[]],[\"name/133\",[85,63.063]],[\"comment/133\",[]],[\"name/134\",[75,52.077]],[\"comment/134\",[]],[\"name/135\",[1,37.413]],[\"comment/135\",[]],[\"name/136\",[86,63.063]],[\"comment/136\",[]],[\"name/137\",[74,41.86]],[\"comment/137\",[]],[\"name/138\",[87,57.954]],[\"comment/138\",[]],[\"name/139\",[88,57.954]],[\"comment/139\",[]],[\"name/140\",[89,63.063]],[\"comment/140\",[]],[\"name/141\",[90,63.063]],[\"comment/141\",[]],[\"name/142\",[91,63.063]],[\"comment/142\",[]],[\"name/143\",[92,63.063]],[\"comment/143\",[]],[\"name/144\",[7,35.982]],[\"comment/144\",[]],[\"name/145\",[1,37.413]],[\"comment/145\",[]],[\"name/146\",[93,63.063]],[\"comment/146\",[]],[\"name/147\",[67,48.399]],[\"comment/147\",[]],[\"name/148\",[9,39.084]],[\"comment/148\",[]],[\"name/149\",[68,46.968]],[\"comment/149\",[]],[\"name/150\",[69,46.968]],[\"comment/150\",[]],[\"name/151\",[22,46.968]],[\"comment/151\",[]],[\"name/152\",[70,46.968]],[\"comment/152\",[]],[\"name/153\",[71,48.399]],[\"comment/153\",[]],[\"name/154\",[72,48.399]],[\"comment/154\",[]],[\"name/155\",[94,54.59]],[\"comment/155\",[]],[\"name/156\",[7,35.982]],[\"comment/156\",[]],[\"name/157\",[1,37.413]],[\"comment/157\",[]],[\"name/158\",[95,57.954]],[\"comment/158\",[]],[\"name/159\",[96,63.063]],[\"comment/159\",[]],[\"name/160\",[97,63.063]],[\"comment/160\",[]],[\"name/161\",[42,48.399]],[\"comment/161\",[]],[\"name/162\",[43,48.399]],[\"comment/162\",[]],[\"name/163\",[98,63.063]],[\"comment/163\",[]],[\"name/164\",[99,63.063]],[\"comment/164\",[]],[\"name/165\",[53,43.604]],[\"comment/165\",[]],[\"name/166\",[15,39.084]],[\"comment/166\",[]],[\"name/167\",[54,48.399]],[\"comment/167\",[]],[\"name/168\",[55,48.399]],[\"comment/168\",[]],[\"name/169\",[56,48.399]],[\"comment/169\",[]],[\"name/170\",[10,44.604]],[\"comment/170\",[]],[\"name/171\",[57,48.399]],[\"comment/171\",[]],[\"name/172\",[9,39.084]],[\"comment/172\",[]],[\"name/173\",[58,48.399]],[\"comment/173\",[]],[\"name/174\",[59,48.399]],[\"comment/174\",[]],[\"name/175\",[60,48.399]],[\"comment/175\",[]],[\"name/176\",[23,46.968]],[\"comment/176\",[]],[\"name/177\",[61,48.399]],[\"comment/177\",[]],[\"name/178\",[62,48.399]],[\"comment/178\",[]],[\"name/179\",[63,46.968]],[\"comment/179\",[]],[\"name/180\",[64,48.399]],[\"comment/180\",[]],[\"name/181\",[65,48.399]],[\"comment/181\",[]],[\"name/182\",[100,63.063]],[\"comment/182\",[]],[\"name/183\",[15,39.084]],[\"comment/183\",[]],[\"name/184\",[101,63.063]],[\"comment/184\",[]],[\"name/185\",[7,35.982]],[\"comment/185\",[]],[\"name/186\",[1,37.413]],[\"comment/186\",[]],[\"name/187\",[67,48.399]],[\"comment/187\",[]],[\"name/188\",[9,39.084]],[\"comment/188\",[]],[\"name/189\",[68,46.968]],[\"comment/189\",[]],[\"name/190\",[69,46.968]],[\"comment/190\",[]],[\"name/191\",[22,46.968]],[\"comment/191\",[]],[\"name/192\",[70,46.968]],[\"comment/192\",[]],[\"name/193\",[71,48.399]],[\"comment/193\",[]],[\"name/194\",[72,48.399]],[\"comment/194\",[]],[\"name/195\",[102,54.59]],[\"comment/195\",[]],[\"name/196\",[7,35.982]],[\"comment/196\",[]],[\"name/197\",[1,37.413]],[\"comment/197\",[]],[\"name/198\",[57,48.399]],[\"comment/198\",[]],[\"name/199\",[103,63.063]],[\"comment/199\",[]],[\"name/200\",[42,48.399]],[\"comment/200\",[]],[\"name/201\",[43,48.399]],[\"comment/201\",[]],[\"name/202\",[104,63.063]],[\"comment/202\",[]],[\"name/203\",[105,63.063]],[\"comment/203\",[]],[\"name/204\",[53,43.604]],[\"comment/204\",[]],[\"name/205\",[15,39.084]],[\"comment/205\",[]],[\"name/206\",[54,48.399]],[\"comment/206\",[]],[\"name/207\",[55,48.399]],[\"comment/207\",[]],[\"name/208\",[56,48.399]],[\"comment/208\",[]],[\"name/209\",[10,44.604]],[\"comment/209\",[]],[\"name/210\",[9,39.084]],[\"comment/210\",[]],[\"name/211\",[58,48.399]],[\"comment/211\",[]],[\"name/212\",[59,48.399]],[\"comment/212\",[]],[\"name/213\",[60,48.399]],[\"comment/213\",[]],[\"name/214\",[23,46.968]],[\"comment/214\",[]],[\"name/215\",[61,48.399]],[\"comment/215\",[]],[\"name/216\",[62,48.399]],[\"comment/216\",[]],[\"name/217\",[63,46.968]],[\"comment/217\",[]],[\"name/218\",[64,48.399]],[\"comment/218\",[]],[\"name/219\",[65,48.399]],[\"comment/219\",[]],[\"name/220\",[106,57.954]],[\"comment/220\",[]],[\"name/221\",[107,63.063]],[\"comment/221\",[]],[\"name/222\",[108,63.063]],[\"comment/222\",[]],[\"name/223\",[109,57.954]],[\"comment/223\",[]],[\"name/224\",[110,63.063]],[\"comment/224\",[]],[\"name/225\",[7,35.982]],[\"comment/225\",[]],[\"name/226\",[8,45.717]],[\"comment/226\",[]],[\"name/227\",[1,37.413]],[\"comment/227\",[]],[\"name/228\",[111,63.063]],[\"comment/228\",[]],[\"name/229\",[112,57.954]],[\"comment/229\",[]],[\"name/230\",[113,63.063]],[\"comment/230\",[]],[\"name/231\",[67,48.399]],[\"comment/231\",[]],[\"name/232\",[9,39.084]],[\"comment/232\",[]],[\"name/233\",[68,46.968]],[\"comment/233\",[]],[\"name/234\",[69,46.968]],[\"comment/234\",[]],[\"name/235\",[22,46.968]],[\"comment/235\",[]],[\"name/236\",[70,46.968]],[\"comment/236\",[]],[\"name/237\",[71,48.399]],[\"comment/237\",[]],[\"name/238\",[72,48.399]],[\"comment/238\",[]],[\"name/239\",[114,54.59]],[\"comment/239\",[]],[\"name/240\",[7,35.982]],[\"comment/240\",[]],[\"name/241\",[8,45.717]],[\"comment/241\",[]],[\"name/242\",[1,37.413]],[\"comment/242\",[]],[\"name/243\",[95,57.954]],[\"comment/243\",[]],[\"name/244\",[115,63.063]],[\"comment/244\",[]],[\"name/245\",[116,63.063]],[\"comment/245\",[]],[\"name/246\",[117,63.063]],[\"comment/246\",[]],[\"name/247\",[57,48.399]],[\"comment/247\",[]],[\"name/248\",[112,57.954]],[\"comment/248\",[]],[\"name/249\",[118,63.063]],[\"comment/249\",[]],[\"name/250\",[119,63.063]],[\"comment/250\",[]],[\"name/251\",[42,48.399]],[\"comment/251\",[]],[\"name/252\",[43,48.399]],[\"comment/252\",[]],[\"name/253\",[53,43.604]],[\"comment/253\",[]],[\"name/254\",[15,39.084]],[\"comment/254\",[]],[\"name/255\",[54,48.399]],[\"comment/255\",[]],[\"name/256\",[55,48.399]],[\"comment/256\",[]],[\"name/257\",[56,48.399]],[\"comment/257\",[]],[\"name/258\",[10,44.604]],[\"comment/258\",[]],[\"name/259\",[9,39.084]],[\"comment/259\",[]],[\"name/260\",[58,48.399]],[\"comment/260\",[]],[\"name/261\",[59,48.399]],[\"comment/261\",[]],[\"name/262\",[60,48.399]],[\"comment/262\",[]],[\"name/263\",[23,46.968]],[\"comment/263\",[]],[\"name/264\",[61,48.399]],[\"comment/264\",[]],[\"name/265\",[62,48.399]],[\"comment/265\",[]],[\"name/266\",[63,46.968]],[\"comment/266\",[]],[\"name/267\",[64,48.399]],[\"comment/267\",[]],[\"name/268\",[65,48.399]],[\"comment/268\",[]],[\"name/269\",[120,63.063]],[\"comment/269\",[]],[\"name/270\",[121,63.063]],[\"comment/270\",[]],[\"name/271\",[122,57.954]],[\"comment/271\",[]],[\"name/272\",[123,63.063]],[\"comment/272\",[]],[\"name/273\",[7,35.982]],[\"comment/273\",[]],[\"name/274\",[1,37.413]],[\"comment/274\",[]],[\"name/275\",[67,48.399]],[\"comment/275\",[]],[\"name/276\",[9,39.084]],[\"comment/276\",[]],[\"name/277\",[68,46.968]],[\"comment/277\",[]],[\"name/278\",[69,46.968]],[\"comment/278\",[]],[\"name/279\",[22,46.968]],[\"comment/279\",[]],[\"name/280\",[70,46.968]],[\"comment/280\",[]],[\"name/281\",[71,48.399]],[\"comment/281\",[]],[\"name/282\",[72,48.399]],[\"comment/282\",[]],[\"name/283\",[124,57.954]],[\"comment/283\",[]],[\"name/284\",[7,35.982]],[\"comment/284\",[]],[\"name/285\",[1,37.413]],[\"comment/285\",[]],[\"name/286\",[57,48.399]],[\"comment/286\",[]],[\"name/287\",[125,63.063]],[\"comment/287\",[]],[\"name/288\",[126,63.063]],[\"comment/288\",[]],[\"name/289\",[127,63.063]],[\"comment/289\",[]],[\"name/290\",[128,63.063]],[\"comment/290\",[]],[\"name/291\",[129,63.063]],[\"comment/291\",[]],[\"name/292\",[130,63.063]],[\"comment/292\",[]],[\"name/293\",[131,63.063]],[\"comment/293\",[]],[\"name/294\",[42,48.399]],[\"comment/294\",[]],[\"name/295\",[132,63.063]],[\"comment/295\",[]],[\"name/296\",[43,48.399]],[\"comment/296\",[]],[\"name/297\",[53,43.604]],[\"comment/297\",[]],[\"name/298\",[15,39.084]],[\"comment/298\",[]],[\"name/299\",[54,48.399]],[\"comment/299\",[]],[\"name/300\",[55,48.399]],[\"comment/300\",[]],[\"name/301\",[56,48.399]],[\"comment/301\",[]],[\"name/302\",[10,44.604]],[\"comment/302\",[]],[\"name/303\",[9,39.084]],[\"comment/303\",[]],[\"name/304\",[58,48.399]],[\"comment/304\",[]],[\"name/305\",[59,48.399]],[\"comment/305\",[]],[\"name/306\",[60,48.399]],[\"comment/306\",[]],[\"name/307\",[23,46.968]],[\"comment/307\",[]],[\"name/308\",[61,48.399]],[\"comment/308\",[]],[\"name/309\",[62,48.399]],[\"comment/309\",[]],[\"name/310\",[63,46.968]],[\"comment/310\",[]],[\"name/311\",[64,48.399]],[\"comment/311\",[]],[\"name/312\",[65,48.399]],[\"comment/312\",[]],[\"name/313\",[133,63.063]],[\"comment/313\",[]],[\"name/314\",[134,63.063]],[\"comment/314\",[]],[\"name/315\",[7,35.982]],[\"comment/315\",[]],[\"name/316\",[8,45.717]],[\"comment/316\",[]],[\"name/317\",[13,57.954]],[\"comment/317\",[]],[\"name/318\",[135,54.59]],[\"comment/318\",[]],[\"name/319\",[136,54.59]],[\"comment/319\",[]],[\"name/320\",[137,63.063]],[\"comment/320\",[]],[\"name/321\",[6,57.954]],[\"comment/321\",[]],[\"name/322\",[94,54.59]],[\"comment/322\",[]],[\"name/323\",[38,54.59]],[\"comment/323\",[]],[\"name/324\",[114,54.59]],[\"comment/324\",[]],[\"name/325\",[138,63.063]],[\"comment/325\",[]],[\"name/326\",[139,57.954]],[\"comment/326\",[]],[\"name/327\",[140,57.954]],[\"comment/327\",[]],[\"name/328\",[141,63.063]],[\"comment/328\",[]],[\"name/329\",[102,54.59]],[\"comment/329\",[]],[\"name/330\",[142,63.063]],[\"comment/330\",[]],[\"name/331\",[143,63.063]],[\"comment/331\",[]],[\"name/332\",[144,63.063]],[\"comment/332\",[]],[\"name/333\",[145,63.063]],[\"comment/333\",[]],[\"name/334\",[146,63.063]],[\"comment/334\",[]],[\"name/335\",[147,63.063]],[\"comment/335\",[]],[\"name/336\",[148,63.063]],[\"comment/336\",[]],[\"name/337\",[4,54.59]],[\"comment/337\",[]],[\"name/338\",[15,39.084]],[\"comment/338\",[]],[\"name/339\",[3,50.07]],[\"comment/339\",[]],[\"name/340\",[149,54.59]],[\"comment/340\",[]],[\"name/341\",[150,57.954]],[\"comment/341\",[]],[\"name/342\",[74,41.86]],[\"comment/342\",[]],[\"name/343\",[1,37.413]],[\"comment/343\",[]],[\"name/344\",[2,54.59]],[\"comment/344\",[]],[\"name/345\",[5,52.077]],[\"comment/345\",[]],[\"name/346\",[151,63.063]],[\"comment/346\",[]],[\"name/347\",[81,50.07]],[\"comment/347\",[]],[\"name/348\",[83,54.59]],[\"comment/348\",[]],[\"name/349\",[152,63.063]],[\"comment/349\",[]],[\"name/350\",[153,63.063]],[\"comment/350\",[]],[\"name/351\",[11,54.59]],[\"comment/351\",[]],[\"name/352\",[53,43.604]],[\"comment/352\",[]],[\"name/353\",[74,41.86]],[\"comment/353\",[]],[\"name/354\",[1,37.413]],[\"comment/354\",[]],[\"name/355\",[87,57.954]],[\"comment/355\",[]],[\"name/356\",[154,63.063]],[\"comment/356\",[]],[\"name/357\",[155,63.063]],[\"comment/357\",[]],[\"name/358\",[4,54.59]],[\"comment/358\",[]],[\"name/359\",[15,39.084]],[\"comment/359\",[]],[\"name/360\",[3,50.07]],[\"comment/360\",[]],[\"name/361\",[149,54.59]],[\"comment/361\",[]],[\"name/362\",[150,57.954]],[\"comment/362\",[]],[\"name/363\",[74,41.86]],[\"comment/363\",[]],[\"name/364\",[1,37.413]],[\"comment/364\",[]],[\"name/365\",[2,54.59]],[\"comment/365\",[]],[\"name/366\",[5,52.077]],[\"comment/366\",[]],[\"name/367\",[156,63.063]],[\"comment/367\",[]],[\"name/368\",[157,57.954]],[\"comment/368\",[]],[\"name/369\",[158,63.063]],[\"comment/369\",[]],[\"name/370\",[10,44.604]],[\"comment/370\",[]],[\"name/371\",[15,39.084]],[\"comment/371\",[]],[\"name/372\",[3,50.07]],[\"comment/372\",[]],[\"name/373\",[1,37.413]],[\"comment/373\",[]],[\"name/374\",[15,39.084]],[\"comment/374\",[]],[\"name/375\",[75,52.077]],[\"comment/375\",[]],[\"name/376\",[159,63.063]],[\"comment/376\",[]],[\"name/377\",[74,41.86]],[\"comment/377\",[]],[\"name/378\",[160,57.954]],[\"comment/378\",[]],[\"name/379\",[161,57.954]],[\"comment/379\",[]],[\"name/380\",[162,63.063]],[\"comment/380\",[]],[\"name/381\",[163,63.063]],[\"comment/381\",[]],[\"name/382\",[74,41.86]],[\"comment/382\",[]],[\"name/383\",[160,57.954]],[\"comment/383\",[]],[\"name/384\",[53,43.604]],[\"comment/384\",[]],[\"name/385\",[164,63.063]],[\"comment/385\",[]],[\"name/386\",[74,41.86]],[\"comment/386\",[]],[\"name/387\",[165,57.954]],[\"comment/387\",[]],[\"name/388\",[166,63.063]],[\"comment/388\",[]],[\"name/389\",[40,54.59]],[\"comment/389\",[]],[\"name/390\",[161,57.954]],[\"comment/390\",[]],[\"name/391\",[167,63.063]],[\"comment/391\",[]],[\"name/392\",[168,63.063]],[\"comment/392\",[]],[\"name/393\",[169,63.063]],[\"comment/393\",[]],[\"name/394\",[94,54.59]],[\"comment/394\",[]],[\"name/395\",[38,54.59]],[\"comment/395\",[]],[\"name/396\",[114,54.59]],[\"comment/396\",[]],[\"name/397\",[124,57.954]],[\"comment/397\",[]],[\"name/398\",[102,54.59]],[\"comment/398\",[]],[\"name/399\",[170,63.063]],[\"comment/399\",[]],[\"name/400\",[171,63.063]],[\"comment/400\",[]],[\"name/401\",[172,63.063]],[\"comment/401\",[]],[\"name/402\",[173,63.063]],[\"comment/402\",[]],[\"name/403\",[135,54.59]],[\"comment/403\",[]],[\"name/404\",[174,63.063]],[\"comment/404\",[]],[\"name/405\",[175,63.063]],[\"comment/405\",[]],[\"name/406\",[176,63.063]],[\"comment/406\",[]],[\"name/407\",[177,63.063]],[\"comment/407\",[]],[\"name/408\",[178,63.063]],[\"comment/408\",[]],[\"name/409\",[179,63.063]],[\"comment/409\",[]],[\"name/410\",[180,63.063]],[\"comment/410\",[]],[\"name/411\",[181,63.063]],[\"comment/411\",[]],[\"name/412\",[149,54.59]],[\"comment/412\",[]],[\"name/413\",[182,63.063]],[\"comment/413\",[]],[\"name/414\",[183,63.063]],[\"comment/414\",[]],[\"name/415\",[184,63.063]],[\"comment/415\",[]],[\"name/416\",[185,63.063]],[\"comment/416\",[]],[\"name/417\",[122,57.954]],[\"comment/417\",[]],[\"name/418\",[186,63.063]],[\"comment/418\",[]],[\"name/419\",[187,63.063]],[\"comment/419\",[]],[\"name/420\",[74,41.86]],[\"comment/420\",[]],[\"name/421\",[81,50.07]],[\"comment/421\",[]],[\"name/422\",[74,41.86]],[\"comment/422\",[]],[\"name/423\",[188,63.063]],[\"comment/423\",[]],[\"name/424\",[189,63.063]],[\"comment/424\",[]],[\"name/425\",[190,63.063]],[\"comment/425\",[]],[\"name/426\",[191,63.063]],[\"comment/426\",[]],[\"name/427\",[192,63.063]],[\"comment/427\",[]],[\"name/428\",[193,63.063]],[\"comment/428\",[]],[\"name/429\",[194,63.063]],[\"comment/429\",[]],[\"name/430\",[195,63.063]],[\"comment/430\",[]],[\"name/431\",[196,63.063]],[\"comment/431\",[]],[\"name/432\",[197,63.063]],[\"comment/432\",[]],[\"name/433\",[198,63.063]],[\"comment/433\",[]],[\"name/434\",[199,63.063]],[\"comment/434\",[]],[\"name/435\",[200,63.063]],[\"comment/435\",[]],[\"name/436\",[201,63.063]],[\"comment/436\",[]],[\"name/437\",[202,63.063]],[\"comment/437\",[]],[\"name/438\",[203,63.063]],[\"comment/438\",[]],[\"name/439\",[204,63.063]],[\"comment/439\",[]],[\"name/440\",[205,63.063]],[\"comment/440\",[]],[\"name/441\",[206,63.063]],[\"comment/441\",[]],[\"name/442\",[207,63.063]],[\"comment/442\",[]],[\"name/443\",[208,63.063]],[\"comment/443\",[]],[\"name/444\",[209,63.063]],[\"comment/444\",[]],[\"name/445\",[210,63.063]],[\"comment/445\",[]],[\"name/446\",[211,63.063]],[\"comment/446\",[]],[\"name/447\",[212,63.063]],[\"comment/447\",[]],[\"name/448\",[213,63.063]],[\"comment/448\",[]],[\"name/449\",[214,63.063]],[\"comment/449\",[]],[\"name/450\",[215,63.063]],[\"comment/450\",[]],[\"name/451\",[216,63.063]],[\"comment/451\",[]],[\"name/452\",[217,63.063]],[\"comment/452\",[]],[\"name/453\",[218,63.063]],[\"comment/453\",[]],[\"name/454\",[219,63.063]],[\"comment/454\",[]],[\"name/455\",[220,63.063]],[\"comment/455\",[]],[\"name/456\",[221,63.063]],[\"comment/456\",[]],[\"name/457\",[222,63.063]],[\"comment/457\",[]],[\"name/458\",[223,63.063]],[\"comment/458\",[]],[\"name/459\",[224,63.063]],[\"comment/459\",[]],[\"name/460\",[225,63.063]],[\"comment/460\",[]],[\"name/461\",[226,63.063]],[\"comment/461\",[]],[\"name/462\",[227,63.063]],[\"comment/462\",[]],[\"name/463\",[228,63.063]],[\"comment/463\",[]],[\"name/464\",[229,63.063]],[\"comment/464\",[]],[\"name/465\",[230,63.063]],[\"comment/465\",[]],[\"name/466\",[231,63.063]],[\"comment/466\",[]],[\"name/467\",[232,63.063]],[\"comment/467\",[]],[\"name/468\",[233,63.063]],[\"comment/468\",[]],[\"name/469\",[234,63.063]],[\"comment/469\",[]],[\"name/470\",[235,63.063]],[\"comment/470\",[]],[\"name/471\",[236,63.063]],[\"comment/471\",[]],[\"name/472\",[237,63.063]],[\"comment/472\",[]],[\"name/473\",[238,63.063]],[\"comment/473\",[]],[\"name/474\",[239,63.063]],[\"comment/474\",[]],[\"name/475\",[240,63.063]],[\"comment/475\",[]],[\"name/476\",[241,63.063]],[\"comment/476\",[]],[\"name/477\",[242,63.063]],[\"comment/477\",[]],[\"name/478\",[243,63.063]],[\"comment/478\",[]],[\"name/479\",[244,63.063]],[\"comment/479\",[]],[\"name/480\",[245,63.063]],[\"comment/480\",[]],[\"name/481\",[246,63.063]],[\"comment/481\",[]],[\"name/482\",[247,63.063]],[\"comment/482\",[]],[\"name/483\",[248,63.063]],[\"comment/483\",[]],[\"name/484\",[249,63.063]],[\"comment/484\",[]],[\"name/485\",[250,63.063]],[\"comment/485\",[]],[\"name/486\",[251,63.063]],[\"comment/486\",[]],[\"name/487\",[252,63.063]],[\"comment/487\",[]],[\"name/488\",[253,63.063]],[\"comment/488\",[]],[\"name/489\",[254,63.063]],[\"comment/489\",[]],[\"name/490\",[255,63.063]],[\"comment/490\",[]],[\"name/491\",[256,63.063]],[\"comment/491\",[]],[\"name/492\",[257,63.063]],[\"comment/492\",[]],[\"name/493\",[258,63.063]],[\"comment/493\",[]],[\"name/494\",[259,63.063]],[\"comment/494\",[]],[\"name/495\",[260,63.063]],[\"comment/495\",[]],[\"name/496\",[261,63.063]],[\"comment/496\",[]],[\"name/497\",[262,63.063]],[\"comment/497\",[]],[\"name/498\",[263,63.063]],[\"comment/498\",[]],[\"name/499\",[264,63.063]],[\"comment/499\",[]],[\"name/500\",[265,63.063]],[\"comment/500\",[]],[\"name/501\",[266,63.063]],[\"comment/501\",[]],[\"name/502\",[267,63.063]],[\"comment/502\",[]],[\"name/503\",[268,63.063]],[\"comment/503\",[]],[\"name/504\",[269,63.063]],[\"comment/504\",[]],[\"name/505\",[270,63.063]],[\"comment/505\",[]],[\"name/506\",[271,63.063]],[\"comment/506\",[]],[\"name/507\",[272,63.063]],[\"comment/507\",[]],[\"name/508\",[273,63.063]],[\"comment/508\",[]],[\"name/509\",[274,63.063]],[\"comment/509\",[]],[\"name/510\",[275,63.063]],[\"comment/510\",[]],[\"name/511\",[276,63.063]],[\"comment/511\",[]],[\"name/512\",[277,63.063]],[\"comment/512\",[]],[\"name/513\",[278,63.063]],[\"comment/513\",[]],[\"name/514\",[279,63.063]],[\"comment/514\",[]],[\"name/515\",[280,63.063]],[\"comment/515\",[]],[\"name/516\",[281,63.063]],[\"comment/516\",[]],[\"name/517\",[282,63.063]],[\"comment/517\",[]],[\"name/518\",[283,63.063]],[\"comment/518\",[]],[\"name/519\",[284,63.063]],[\"comment/519\",[]],[\"name/520\",[285,63.063]],[\"comment/520\",[]],[\"name/521\",[286,63.063]],[\"comment/521\",[]],[\"name/522\",[287,63.063]],[\"comment/522\",[]],[\"name/523\",[288,63.063]],[\"comment/523\",[]],[\"name/524\",[289,63.063]],[\"comment/524\",[]],[\"name/525\",[290,63.063]],[\"comment/525\",[]],[\"name/526\",[291,63.063]],[\"comment/526\",[]],[\"name/527\",[292,63.063]],[\"comment/527\",[]],[\"name/528\",[293,63.063]],[\"comment/528\",[]],[\"name/529\",[294,63.063]],[\"comment/529\",[]],[\"name/530\",[295,63.063]],[\"comment/530\",[]],[\"name/531\",[296,63.063]],[\"comment/531\",[]],[\"name/532\",[297,63.063]],[\"comment/532\",[]],[\"name/533\",[298,63.063]],[\"comment/533\",[]],[\"name/534\",[299,63.063]],[\"comment/534\",[]],[\"name/535\",[300,63.063]],[\"comment/535\",[]],[\"name/536\",[301,63.063]],[\"comment/536\",[]],[\"name/537\",[302,63.063]],[\"comment/537\",[]],[\"name/538\",[303,63.063]],[\"comment/538\",[]],[\"name/539\",[304,63.063]],[\"comment/539\",[]],[\"name/540\",[305,63.063]],[\"comment/540\",[]],[\"name/541\",[306,63.063]],[\"comment/541\",[]],[\"name/542\",[307,63.063]],[\"comment/542\",[]],[\"name/543\",[308,63.063]],[\"comment/543\",[]],[\"name/544\",[309,63.063]],[\"comment/544\",[]],[\"name/545\",[310,63.063]],[\"comment/545\",[]],[\"name/546\",[311,63.063]],[\"comment/546\",[]],[\"name/547\",[312,63.063]],[\"comment/547\",[]],[\"name/548\",[313,63.063]],[\"comment/548\",[]],[\"name/549\",[314,63.063]],[\"comment/549\",[]],[\"name/550\",[315,63.063]],[\"comment/550\",[]],[\"name/551\",[316,63.063]],[\"comment/551\",[]],[\"name/552\",[317,63.063]],[\"comment/552\",[]],[\"name/553\",[318,63.063]],[\"comment/553\",[]],[\"name/554\",[319,63.063]],[\"comment/554\",[]],[\"name/555\",[320,63.063]],[\"comment/555\",[]],[\"name/556\",[321,63.063]],[\"comment/556\",[]],[\"name/557\",[322,63.063]],[\"comment/557\",[]],[\"name/558\",[323,63.063]],[\"comment/558\",[]],[\"name/559\",[324,63.063]],[\"comment/559\",[]],[\"name/560\",[325,63.063]],[\"comment/560\",[]],[\"name/561\",[326,63.063]],[\"comment/561\",[]],[\"name/562\",[327,63.063]],[\"comment/562\",[]],[\"name/563\",[328,63.063]],[\"comment/563\",[]],[\"name/564\",[329,63.063]],[\"comment/564\",[]],[\"name/565\",[330,63.063]],[\"comment/565\",[]],[\"name/566\",[331,63.063]],[\"comment/566\",[]],[\"name/567\",[332,63.063]],[\"comment/567\",[]],[\"name/568\",[333,63.063]],[\"comment/568\",[]],[\"name/569\",[334,63.063]],[\"comment/569\",[]],[\"name/570\",[335,63.063]],[\"comment/570\",[]],[\"name/571\",[336,63.063]],[\"comment/571\",[]],[\"name/572\",[337,63.063]],[\"comment/572\",[]],[\"name/573\",[338,63.063]],[\"comment/573\",[]],[\"name/574\",[339,63.063]],[\"comment/574\",[]],[\"name/575\",[340,63.063]],[\"comment/575\",[]],[\"name/576\",[341,63.063]],[\"comment/576\",[]],[\"name/577\",[342,63.063]],[\"comment/577\",[]],[\"name/578\",[343,63.063]],[\"comment/578\",[]],[\"name/579\",[344,63.063]],[\"comment/579\",[]],[\"name/580\",[345,63.063]],[\"comment/580\",[]],[\"name/581\",[346,63.063]],[\"comment/581\",[]],[\"name/582\",[347,63.063]],[\"comment/582\",[]],[\"name/583\",[348,63.063]],[\"comment/583\",[]],[\"name/584\",[349,63.063]],[\"comment/584\",[]],[\"name/585\",[350,63.063]],[\"comment/585\",[]],[\"name/586\",[351,63.063]],[\"comment/586\",[]],[\"name/587\",[352,63.063]],[\"comment/587\",[]],[\"name/588\",[353,63.063]],[\"comment/588\",[]],[\"name/589\",[354,63.063]],[\"comment/589\",[]],[\"name/590\",[355,63.063]],[\"comment/590\",[]],[\"name/591\",[356,63.063]],[\"comment/591\",[]],[\"name/592\",[357,63.063]],[\"comment/592\",[]],[\"name/593\",[358,63.063]],[\"comment/593\",[]],[\"name/594\",[359,63.063]],[\"comment/594\",[]],[\"name/595\",[360,63.063]],[\"comment/595\",[]],[\"name/596\",[361,63.063]],[\"comment/596\",[]],[\"name/597\",[362,63.063]],[\"comment/597\",[]],[\"name/598\",[363,63.063]],[\"comment/598\",[]],[\"name/599\",[364,63.063]],[\"comment/599\",[]],[\"name/600\",[365,63.063]],[\"comment/600\",[]],[\"name/601\",[366,63.063]],[\"comment/601\",[]],[\"name/602\",[367,63.063]],[\"comment/602\",[]],[\"name/603\",[368,63.063]],[\"comment/603\",[]],[\"name/604\",[369,63.063]],[\"comment/604\",[]],[\"name/605\",[370,63.063]],[\"comment/605\",[]],[\"name/606\",[83,54.59]],[\"comment/606\",[]],[\"name/607\",[74,41.86]],[\"comment/607\",[]],[\"name/608\",[371,63.063]],[\"comment/608\",[]],[\"name/609\",[372,63.063]],[\"comment/609\",[]],[\"name/610\",[373,63.063]],[\"comment/610\",[]],[\"name/611\",[374,63.063]],[\"comment/611\",[]],[\"name/612\",[375,63.063]],[\"comment/612\",[]],[\"name/613\",[376,63.063]],[\"comment/613\",[]],[\"name/614\",[377,63.063]],[\"comment/614\",[]],[\"name/615\",[378,63.063]],[\"comment/615\",[]],[\"name/616\",[379,63.063]],[\"comment/616\",[]],[\"name/617\",[380,63.063]],[\"comment/617\",[]],[\"name/618\",[381,63.063]],[\"comment/618\",[]],[\"name/619\",[11,54.59]],[\"comment/619\",[]],[\"name/620\",[382,54.59]],[\"comment/620\",[]],[\"name/621\",[383,57.954]],[\"comment/621\",[]],[\"name/622\",[109,57.954]],[\"comment/622\",[]],[\"name/623\",[15,39.084]],[\"comment/623\",[]],[\"name/624\",[384,57.954]],[\"comment/624\",[]],[\"name/625\",[385,57.954]],[\"comment/625\",[]],[\"name/626\",[386,57.954]],[\"comment/626\",[]],[\"name/627\",[387,57.954]],[\"comment/627\",[]],[\"name/628\",[388,57.954]],[\"comment/628\",[]],[\"name/629\",[389,63.063]],[\"comment/629\",[]],[\"name/630\",[390,63.063]],[\"comment/630\",[]],[\"name/631\",[391,57.954]],[\"comment/631\",[]],[\"name/632\",[81,50.07]],[\"comment/632\",[]],[\"name/633\",[392,57.954]],[\"comment/633\",[]],[\"name/634\",[5,52.077]],[\"comment/634\",[]],[\"name/635\",[393,57.954]],[\"comment/635\",[]],[\"name/636\",[394,54.59]],[\"comment/636\",[]],[\"name/637\",[395,57.954]],[\"comment/637\",[]],[\"name/638\",[3,50.07]],[\"comment/638\",[]],[\"name/639\",[396,63.063]],[\"comment/639\",[]],[\"name/640\",[397,63.063]],[\"comment/640\",[]],[\"name/641\",[398,63.063]],[\"comment/641\",[]],[\"name/642\",[399,63.063]],[\"comment/642\",[]],[\"name/643\",[388,57.954]],[\"comment/643\",[]],[\"name/644\",[382,54.59]],[\"comment/644\",[]],[\"name/645\",[383,57.954]],[\"comment/645\",[]],[\"name/646\",[384,57.954]],[\"comment/646\",[]],[\"name/647\",[385,57.954]],[\"comment/647\",[]],[\"name/648\",[386,57.954]],[\"comment/648\",[]],[\"name/649\",[387,57.954]],[\"comment/649\",[]],[\"name/650\",[391,57.954]],[\"comment/650\",[]],[\"name/651\",[81,50.07]],[\"comment/651\",[]],[\"name/652\",[392,57.954]],[\"comment/652\",[]],[\"name/653\",[393,57.954]],[\"comment/653\",[]],[\"name/654\",[394,54.59]],[\"comment/654\",[]],[\"name/655\",[395,57.954]],[\"comment/655\",[]],[\"name/656\",[400,63.063]],[\"comment/656\",[]],[\"name/657\",[74,41.86]],[\"comment/657\",[]],[\"name/658\",[401,63.063]],[\"comment/658\",[]],[\"name/659\",[157,57.954]],[\"comment/659\",[]],[\"name/660\",[402,63.063]],[\"comment/660\",[]],[\"name/661\",[403,63.063]],[\"comment/661\",[]],[\"name/662\",[404,63.063]],[\"comment/662\",[]],[\"name/663\",[405,63.063]],[\"comment/663\",[]],[\"name/664\",[165,57.954]],[\"comment/664\",[]],[\"name/665\",[406,63.063]],[\"comment/665\",[]],[\"name/666\",[407,63.063]],[\"comment/666\",[]],[\"name/667\",[408,63.063]],[\"comment/667\",[]],[\"name/668\",[409,63.063]],[\"comment/668\",[]],[\"name/669\",[410,63.063]],[\"comment/669\",[]],[\"name/670\",[394,54.59]],[\"comment/670\",[]],[\"name/671\",[382,54.59]],[\"comment/671\",[]],[\"name/672\",[411,63.063]],[\"comment/672\",[]],[\"name/673\",[412,63.063]],[\"comment/673\",[]],[\"name/674\",[413,63.063]],[\"comment/674\",[]],[\"name/675\",[414,63.063]],[\"comment/675\",[]],[\"name/676\",[415,63.063]],[\"comment/676\",[]],[\"name/677\",[416,63.063]],[\"comment/677\",[]],[\"name/678\",[417,63.063]],[\"comment/678\",[]],[\"name/679\",[418,63.063]],[\"comment/679\",[]],[\"name/680\",[419,63.063]],[\"comment/680\",[]],[\"name/681\",[420,63.063]],[\"comment/681\",[]],[\"name/682\",[421,63.063]],[\"comment/682\",[]],[\"name/683\",[422,63.063]],[\"comment/683\",[]],[\"name/684\",[423,63.063]],[\"comment/684\",[]],[\"name/685\",[424,63.063]],[\"comment/685\",[]],[\"name/686\",[425,63.063]],[\"comment/686\",[]],[\"name/687\",[41,54.59]],[\"comment/687\",[]],[\"name/688\",[426,63.063]],[\"comment/688\",[]],[\"name/689\",[427,63.063]],[\"comment/689\",[]],[\"name/690\",[428,63.063]],[\"comment/690\",[]],[\"name/691\",[429,63.063]],[\"comment/691\",[]],[\"name/692\",[430,63.063]],[\"comment/692\",[]],[\"name/693\",[431,63.063]],[\"comment/693\",[]],[\"name/694\",[432,63.063]],[\"comment/694\",[]],[\"name/695\",[433,63.063]],[\"comment/695\",[]],[\"name/696\",[434,63.063]],[\"comment/696\",[]],[\"name/697\",[435,63.063]],[\"comment/697\",[]],[\"name/698\",[436,63.063]],[\"comment/698\",[]],[\"name/699\",[437,63.063]],[\"comment/699\",[]],[\"name/700\",[106,57.954]],[\"comment/700\",[]],[\"name/701\",[438,63.063]],[\"comment/701\",[]],[\"name/702\",[439,63.063]],[\"comment/702\",[]],[\"name/703\",[440,63.063]],[\"comment/703\",[]],[\"name/704\",[441,63.063]],[\"comment/704\",[]],[\"name/705\",[442,63.063]],[\"comment/705\",[]],[\"name/706\",[443,63.063]],[\"comment/706\",[]],[\"name/707\",[444,63.063]],[\"comment/707\",[]],[\"name/708\",[7,35.982]],[\"comment/708\",[]],[\"name/709\",[445,54.59]],[\"comment/709\",[]],[\"name/710\",[446,54.59]],[\"comment/710\",[]],[\"name/711\",[447,54.59]],[\"comment/711\",[]],[\"name/712\",[34,52.077]],[\"comment/712\",[]],[\"name/713\",[448,54.59]],[\"comment/713\",[]],[\"name/714\",[449,54.59]],[\"comment/714\",[]],[\"name/715\",[450,54.59]],[\"comment/715\",[]],[\"name/716\",[451,54.59]],[\"comment/716\",[]],[\"name/717\",[452,54.59]],[\"comment/717\",[]],[\"name/718\",[453,54.59]],[\"comment/718\",[]],[\"name/719\",[454,63.063]],[\"comment/719\",[]],[\"name/720\",[455,63.063]],[\"comment/720\",[]],[\"name/721\",[7,35.982]],[\"comment/721\",[]],[\"name/722\",[456,63.063]],[\"comment/722\",[]],[\"name/723\",[457,63.063]],[\"comment/723\",[]],[\"name/724\",[458,63.063]],[\"comment/724\",[]],[\"name/725\",[459,63.063]],[\"comment/725\",[]],[\"name/726\",[460,63.063]],[\"comment/726\",[]],[\"name/727\",[461,63.063]],[\"comment/727\",[]],[\"name/728\",[462,63.063]],[\"comment/728\",[]],[\"name/729\",[463,63.063]],[\"comment/729\",[]],[\"name/730\",[464,63.063]],[\"comment/730\",[]],[\"name/731\",[465,63.063]],[\"comment/731\",[]],[\"name/732\",[466,63.063]],[\"comment/732\",[]],[\"name/733\",[467,63.063]],[\"comment/733\",[]],[\"name/734\",[468,63.063]],[\"comment/734\",[]],[\"name/735\",[469,63.063]],[\"comment/735\",[]],[\"name/736\",[445,54.59]],[\"comment/736\",[]],[\"name/737\",[446,54.59]],[\"comment/737\",[]],[\"name/738\",[447,54.59]],[\"comment/738\",[]],[\"name/739\",[34,52.077]],[\"comment/739\",[]],[\"name/740\",[448,54.59]],[\"comment/740\",[]],[\"name/741\",[449,54.59]],[\"comment/741\",[]],[\"name/742\",[450,54.59]],[\"comment/742\",[]],[\"name/743\",[451,54.59]],[\"comment/743\",[]],[\"name/744\",[452,54.59]],[\"comment/744\",[]],[\"name/745\",[453,54.59]],[\"comment/745\",[]],[\"name/746\",[470,63.063]],[\"comment/746\",[]],[\"name/747\",[7,35.982]],[\"comment/747\",[]],[\"name/748\",[471,63.063]],[\"comment/748\",[]],[\"name/749\",[472,63.063]],[\"comment/749\",[]],[\"name/750\",[34,52.077]],[\"comment/750\",[]],[\"name/751\",[473,63.063]],[\"comment/751\",[]],[\"name/752\",[474,63.063]],[\"comment/752\",[]],[\"name/753\",[63,46.968]],[\"comment/753\",[]],[\"name/754\",[475,63.063]],[\"comment/754\",[]],[\"name/755\",[476,63.063]],[\"comment/755\",[]],[\"name/756\",[477,63.063]],[\"comment/756\",[]],[\"name/757\",[478,63.063]],[\"comment/757\",[]],[\"name/758\",[479,63.063]],[\"comment/758\",[]],[\"name/759\",[480,63.063]],[\"comment/759\",[]],[\"name/760\",[481,63.063]],[\"comment/760\",[]],[\"name/761\",[445,54.59]],[\"comment/761\",[]],[\"name/762\",[446,54.59]],[\"comment/762\",[]],[\"name/763\",[447,54.59]],[\"comment/763\",[]],[\"name/764\",[448,54.59]],[\"comment/764\",[]],[\"name/765\",[449,54.59]],[\"comment/765\",[]],[\"name/766\",[450,54.59]],[\"comment/766\",[]],[\"name/767\",[451,54.59]],[\"comment/767\",[]],[\"name/768\",[452,54.59]],[\"comment/768\",[]],[\"name/769\",[453,54.59]],[\"comment/769\",[]],[\"name/770\",[482,63.063]],[\"comment/770\",[]],[\"name/771\",[15,39.084]],[\"comment/771\",[]],[\"name/772\",[7,35.982]],[\"comment/772\",[]],[\"name/773\",[483,63.063]],[\"comment/773\",[]],[\"name/774\",[484,63.063]],[\"comment/774\",[]],[\"name/775\",[88,57.954]],[\"comment/775\",[]],[\"name/776\",[485,63.063]],[\"comment/776\",[]],[\"name/777\",[136,54.59]],[\"comment/777\",[]],[\"name/778\",[8,45.717]],[\"comment/778\",[]],[\"name/779\",[136,54.59]],[\"comment/779\",[]],[\"name/780\",[70,46.968]],[\"comment/780\",[]],[\"name/781\",[69,46.968]],[\"comment/781\",[]],[\"name/782\",[53,43.604]],[\"comment/782\",[]],[\"name/783\",[68,46.968]],[\"comment/783\",[]],[\"name/784\",[486,63.063]],[\"comment/784\",[]],[\"name/785\",[487,63.063]],[\"comment/785\",[]],[\"name/786\",[488,57.954]],[\"comment/786\",[]],[\"name/787\",[489,57.954]],[\"comment/787\",[]],[\"name/788\",[53,43.604]],[\"comment/788\",[]],[\"name/789\",[7,35.982]],[\"comment/789\",[]],[\"name/790\",[9,39.084]],[\"comment/790\",[]],[\"name/791\",[15,39.084]],[\"comment/791\",[]],[\"name/792\",[490,63.063]],[\"comment/792\",[]],[\"name/793\",[135,54.59]],[\"comment/793\",[]],[\"name/794\",[488,57.954]],[\"comment/794\",[]],[\"name/795\",[489,57.954]],[\"comment/795\",[]],[\"name/796\",[139,57.954]],[\"comment/796\",[]],[\"name/797\",[7,35.982]],[\"comment/797\",[]],[\"name/798\",[8,45.717]],[\"comment/798\",[]],[\"name/799\",[9,39.084]],[\"comment/799\",[]],[\"name/800\",[491,63.063]],[\"comment/800\",[]],[\"name/801\",[492,63.063]],[\"comment/801\",[]],[\"name/802\",[7,35.982]],[\"comment/802\",[]],[\"name/803\",[493,63.063]],[\"comment/803\",[]],[\"name/804\",[494,63.063]],[\"comment/804\",[]],[\"name/805\",[495,63.063]],[\"comment/805\",[]],[\"name/806\",[496,63.063]],[\"comment/806\",[]],[\"name/807\",[497,63.063]],[\"comment/807\",[]],[\"name/808\",[498,63.063]],[\"comment/808\",[]],[\"name/809\",[140,57.954]],[\"comment/809\",[]],[\"name/810\",[7,35.982]],[\"comment/810\",[]],[\"name/811\",[8,45.717]],[\"comment/811\",[]],[\"name/812\",[499,63.063]],[\"comment/812\",[]],[\"name/813\",[9,39.084]],[\"comment/813\",[]],[\"name/814\",[500,63.063]],[\"comment/814\",[]],[\"name/815\",[501,63.063]],[\"comment/815\",[]],[\"name/816\",[502,63.063]],[\"comment/816\",[]],[\"name/817\",[46,57.954]],[\"comment/817\",[]],[\"name/818\",[503,63.063]],[\"comment/818\",[]],[\"name/819\",[504,63.063]],[\"comment/819\",[]],[\"name/820\",[505,63.063]],[\"comment/820\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":74,\"name\":{\"87\":{},\"137\":{},\"342\":{},\"353\":{},\"363\":{},\"377\":{},\"382\":{},\"386\":{},\"420\":{},\"422\":{},\"607\":{},\"657\":{}},\"comment\":{}}],[\"_currentbeatdata\",{\"_index\":117,\"name\":{\"246\":{}},\"comment\":{}}],[\"_devices\",{\"_index\":77,\"name\":{\"96\":{}},\"comment\":{}}],[\"_handler\",{\"_index\":58,\"name\":{\"66\":{},\"115\":{},\"173\":{},\"211\":{},\"260\":{},\"304\":{}},\"comment\":{}}],[\"_sources\",{\"_index\":499,\"name\":{\"812\":{}},\"comment\":{}}],[\"_userbeatcallback\",{\"_index\":115,\"name\":{\"244\":{}},\"comment\":{}}],[\"_userbeatoptions\",{\"_index\":116,\"name\":{\"245\":{}},\"comment\":{}}],[\"actingas\",{\"_index\":172,\"name\":{\"401\":{}},\"comment\":{}}],[\"actingasdevice\",{\"_index\":400,\"name\":{\"656\":{}},\"comment\":{}}],[\"action\",{\"_index\":149,\"name\":{\"340\":{},\"361\":{},\"412\":{}},\"comment\":{}}],[\"activeonloadloops\",{\"_index\":443,\"name\":{\"706\":{}},\"comment\":{}}],[\"adddevice\",{\"_index\":70,\"name\":{\"83\":{},\"100\":{},\"152\":{},\"192\":{},\"236\":{},\"280\":{},\"780\":{}},\"comment\":{}}],[\"address\",{\"_index\":11,\"name\":{\"11\":{},\"351\":{},\"619\":{}},\"comment\":{}}],[\"addressport\",{\"_index\":155,\"name\":{\"357\":{}},\"comment\":{}}],[\"addserver\",{\"_index\":143,\"name\":{\"331\":{}},\"comment\":{}}],[\"addservice\",{\"_index\":488,\"name\":{\"786\":{},\"794\":{}},\"comment\":{}}],[\"album\",{\"_index\":411,\"name\":{\"672\":{}},\"comment\":{}}],[\"albumart\",{\"_index\":419,\"name\":{\"680\":{}},\"comment\":{}}],[\"albumartid\",{\"_index\":409,\"name\":{\"668\":{}},\"comment\":{}}],[\"announce\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"announcement_interval\",{\"_index\":175,\"name\":{\"405\":{}},\"comment\":{}}],[\"announcetimer\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"array\",{\"_index\":485,\"name\":{\"776\":{}},\"comment\":{}}],[\"artist\",{\"_index\":382,\"name\":{\"620\":{},\"644\":{},\"671\":{}},\"comment\":{}}],[\"autogrow\",{\"_index\":471,\"name\":{\"748\":{}},\"comment\":{}}],[\"avgtimearray\",{\"_index\":127,\"name\":{\"289\":{}},\"comment\":{}}],[\"beatdata\",{\"_index\":106,\"name\":{\"220\":{},\"700\":{}},\"comment\":{}}],[\"beatinfo\",{\"_index\":114,\"name\":{\"239\":{},\"324\":{},\"396\":{}},\"comment\":{}}],[\"beatinfohandler\",{\"_index\":110,\"name\":{\"224\":{}},\"comment\":{}}],[\"beatregister\",{\"_index\":111,\"name\":{\"228\":{}},\"comment\":{}}],[\"bitrate\",{\"_index\":407,\"name\":{\"666\":{}},\"comment\":{}}],[\"bpm\",{\"_index\":404,\"name\":{\"662\":{}},\"comment\":{}}],[\"bpmanalyzed\",{\"_index\":408,\"name\":{\"667\":{}},\"comment\":{}}],[\"broadcastaddress\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"broadcastmessage\",{\"_index\":26,\"name\":{\"26\":{}},\"comment\":{}}],[\"buffer\",{\"_index\":445,\"name\":{\"709\":{},\"736\":{},\"761\":{}},\"comment\":{}}],[\"bytesdownloaded\",{\"_index\":36,\"name\":{\"36\":{}},\"comment\":{}}],[\"checksize\",{\"_index\":473,\"name\":{\"751\":{}},\"comment\":{}}],[\"chunk_size\",{\"_index\":32,\"name\":{\"32\":{}},\"comment\":{}}],[\"clock\",{\"_index\":107,\"name\":{\"221\":{}},\"comment\":{}}],[\"close\",{\"_index\":498,\"name\":{\"808\":{}},\"comment\":{}}],[\"closeserver\",{\"_index\":61,\"name\":{\"70\":{},\"120\":{},\"177\":{},\"215\":{},\"264\":{},\"308\":{}},\"comment\":{}}],[\"closeservice\",{\"_index\":65,\"name\":{\"74\":{},\"126\":{},\"181\":{},\"219\":{},\"268\":{},\"312\":{}},\"comment\":{}}],[\"comment\",{\"_index\":413,\"name\":{\"674\":{}},\"comment\":{}}],[\"composer\",{\"_index\":415,\"name\":{\"676\":{}},\"comment\":{}}],[\"connect\",{\"_index\":146,\"name\":{\"334\":{}},\"comment\":{}}],[\"connect_timeout\",{\"_index\":179,\"name\":{\"409\":{}},\"comment\":{}}],[\"connection\",{\"_index\":162,\"name\":{\"380\":{}},\"comment\":{}}],[\"connectioninfo\",{\"_index\":153,\"name\":{\"350\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":7,\"name\":{\"7\":{},\"39\":{},\"76\":{},\"93\":{},\"105\":{},\"144\":{},\"156\":{},\"185\":{},\"196\":{},\"225\":{},\"240\":{},\"273\":{},\"284\":{},\"315\":{},\"708\":{},\"721\":{},\"747\":{},\"772\":{},\"789\":{},\"797\":{},\"802\":{},\"810\":{}},\"comment\":{}}],[\"context\",{\"_index\":444,\"name\":{\"707\":{}},\"comment\":{}}],[\"controller\",{\"_index\":152,\"name\":{\"349\":{}},\"comment\":{}}],[\"creatediscoverymessage\",{\"_index\":29,\"name\":{\"29\":{}},\"comment\":{}}],[\"createserver\",{\"_index\":60,\"name\":{\"68\":{},\"118\":{},\"175\":{},\"213\":{},\"262\":{},\"306\":{}},\"comment\":{}}],[\"currentbpm\",{\"_index\":383,\"name\":{\"621\":{},\"645\":{}},\"comment\":{}}],[\"database\",{\"_index\":159,\"name\":{\"376\":{}},\"comment\":{}}],[\"databases\",{\"_index\":139,\"name\":{\"326\":{},\"796\":{}},\"comment\":{}}],[\"datahandler\",{\"_index\":80,\"name\":{\"122\":{}},\"comment\":{}}],[\"dateadded\",{\"_index\":425,\"name\":{\"686\":{}},\"comment\":{}}],[\"datecreated\",{\"_index\":424,\"name\":{\"685\":{}},\"comment\":{}}],[\"db\",{\"_index\":493,\"name\":{\"803\":{}},\"comment\":{}}],[\"dbconnection\",{\"_index\":492,\"name\":{\"801\":{}},\"comment\":{}}],[\"dbpath\",{\"_index\":494,\"name\":{\"804\":{}},\"comment\":{}}],[\"dbsourcename\",{\"_index\":396,\"name\":{\"639\":{}},\"comment\":{}}],[\"deck\",{\"_index\":109,\"name\":{\"223\":{},\"622\":{}},\"comment\":{}}],[\"deckcount\",{\"_index\":108,\"name\":{\"222\":{}},\"comment\":{}}],[\"decks\",{\"_index\":154,\"name\":{\"356\":{}},\"comment\":{}}],[\"deletedevice\",{\"_index\":71,\"name\":{\"84\":{},\"101\":{},\"153\":{},\"193\":{},\"237\":{},\"281\":{}},\"comment\":{}}],[\"deleteserver\",{\"_index\":144,\"name\":{\"332\":{}},\"comment\":{}}],[\"deleteservice\",{\"_index\":489,\"name\":{\"787\":{},\"795\":{}},\"comment\":{}}],[\"deletesource\",{\"_index\":504,\"name\":{\"819\":{}},\"comment\":{}}],[\"device\",{\"_index\":53,\"name\":{\"58\":{},\"107\":{},\"165\":{},\"204\":{},\"253\":{},\"297\":{},\"352\":{},\"384\":{},\"782\":{},\"788\":{}},\"comment\":{}}],[\"deviceid\",{\"_index\":15,\"name\":{\"15\":{},\"59\":{},\"90\":{},\"108\":{},\"166\":{},\"183\":{},\"205\":{},\"254\":{},\"298\":{},\"338\":{},\"359\":{},\"371\":{},\"374\":{},\"623\":{},\"771\":{},\"791\":{}},\"comment\":{}}],[\"devices\",{\"_index\":136,\"name\":{\"319\":{},\"777\":{},\"779\":{}},\"comment\":{}}],[\"devicetrackregister\",{\"_index\":93,\"name\":{\"146\":{}},\"comment\":{}}],[\"devicetype\",{\"_index\":151,\"name\":{\"346\":{}},\"comment\":{}}],[\"devicetypes\",{\"_index\":174,\"name\":{\"404\":{}},\"comment\":{}}],[\"directory\",{\"_index\":102,\"name\":{\"195\":{},\"329\":{},\"398\":{}},\"comment\":{}}],[\"directorydata\",{\"_index\":100,\"name\":{\"182\":{}},\"comment\":{}}],[\"directoryhandler\",{\"_index\":101,\"name\":{\"184\":{}},\"comment\":{}}],[\"disconnect\",{\"_index\":147,\"name\":{\"335\":{}},\"comment\":{}}],[\"discovery\",{\"_index\":6,\"name\":{\"6\":{},\"321\":{}},\"comment\":{}}],[\"discovery_message_marker\",{\"_index\":181,\"name\":{\"411\":{}},\"comment\":{}}],[\"discoverymessage\",{\"_index\":148,\"name\":{\"336\":{}},\"comment\":{}}],[\"discoverymessageoptions\",{\"_index\":0,\"name\":{\"0\":{}},\"comment\":{}}],[\"download_timeout\",{\"_index\":180,\"name\":{\"410\":{}},\"comment\":{}}],[\"downloaddb\",{\"_index\":491,\"name\":{\"800\":{}},\"comment\":{}}],[\"downloaddbsources\",{\"_index\":173,\"name\":{\"402\":{}},\"comment\":{}}],[\"downloadfile\",{\"_index\":505,\"name\":{\"820\":{}},\"comment\":{}}],[\"enginedeck1currentbpm\",{\"_index\":191,\"name\":{\"426\":{}},\"comment\":{}}],[\"enginedeck1externalmixervolume\",{\"_index\":192,\"name\":{\"427\":{}},\"comment\":{}}],[\"enginedeck1externalscratchwheeltouch\",{\"_index\":193,\"name\":{\"428\":{}},\"comment\":{}}],[\"enginedeck1padsview\",{\"_index\":194,\"name\":{\"429\":{}},\"comment\":{}}],[\"enginedeck1play\",{\"_index\":195,\"name\":{\"430\":{}},\"comment\":{}}],[\"enginedeck1playstate\",{\"_index\":196,\"name\":{\"431\":{}},\"comment\":{}}],[\"enginedeck1playstatepath\",{\"_index\":197,\"name\":{\"432\":{}},\"comment\":{}}],[\"enginedeck1speed\",{\"_index\":198,\"name\":{\"433\":{}},\"comment\":{}}],[\"enginedeck1speedneutral\",{\"_index\":199,\"name\":{\"434\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetdown\",{\"_index\":200,\"name\":{\"435\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetup\",{\"_index\":201,\"name\":{\"436\":{}},\"comment\":{}}],[\"enginedeck1speedrange\",{\"_index\":202,\"name\":{\"437\":{}},\"comment\":{}}],[\"enginedeck1speedstate\",{\"_index\":203,\"name\":{\"438\":{}},\"comment\":{}}],[\"enginedeck1syncmode\",{\"_index\":204,\"name\":{\"439\":{}},\"comment\":{}}],[\"enginedeck1trackartistname\",{\"_index\":205,\"name\":{\"440\":{}},\"comment\":{}}],[\"enginedeck1trackbleep\",{\"_index\":206,\"name\":{\"441\":{}},\"comment\":{}}],[\"enginedeck1trackcueposition\",{\"_index\":207,\"name\":{\"442\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentbpm\",{\"_index\":208,\"name\":{\"443\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentkeyindex\",{\"_index\":209,\"name\":{\"444\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopinposition\",{\"_index\":210,\"name\":{\"445\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopoutposition\",{\"_index\":211,\"name\":{\"446\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopsizeinbeats\",{\"_index\":212,\"name\":{\"447\":{}},\"comment\":{}}],[\"enginedeck1trackkeylock\",{\"_index\":213,\"name\":{\"448\":{}},\"comment\":{}}],[\"enginedeck1trackloopenablestate\",{\"_index\":214,\"name\":{\"449\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop1\",{\"_index\":215,\"name\":{\"450\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop2\",{\"_index\":216,\"name\":{\"451\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop3\",{\"_index\":217,\"name\":{\"452\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop4\",{\"_index\":218,\"name\":{\"453\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop5\",{\"_index\":219,\"name\":{\"454\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop6\",{\"_index\":220,\"name\":{\"455\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop7\",{\"_index\":221,\"name\":{\"456\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop8\",{\"_index\":222,\"name\":{\"457\":{}},\"comment\":{}}],[\"enginedeck1trackplaypauseledstate\",{\"_index\":223,\"name\":{\"458\":{}},\"comment\":{}}],[\"enginedeck1tracksamplerate\",{\"_index\":224,\"name\":{\"459\":{}},\"comment\":{}}],[\"enginedeck1tracksonganalyzed\",{\"_index\":225,\"name\":{\"460\":{}},\"comment\":{}}],[\"enginedeck1tracksongloaded\",{\"_index\":226,\"name\":{\"461\":{}},\"comment\":{}}],[\"enginedeck1tracksongname\",{\"_index\":227,\"name\":{\"462\":{}},\"comment\":{}}],[\"enginedeck1tracksoundswitchguid\",{\"_index\":228,\"name\":{\"463\":{}},\"comment\":{}}],[\"enginedeck1tracktrackbytes\",{\"_index\":229,\"name\":{\"464\":{}},\"comment\":{}}],[\"enginedeck1tracktrackdata\",{\"_index\":230,\"name\":{\"465\":{}},\"comment\":{}}],[\"enginedeck1tracktracklength\",{\"_index\":231,\"name\":{\"466\":{}},\"comment\":{}}],[\"enginedeck1tracktrackname\",{\"_index\":232,\"name\":{\"467\":{}},\"comment\":{}}],[\"enginedeck1tracktracknetworkpath\",{\"_index\":233,\"name\":{\"468\":{}},\"comment\":{}}],[\"enginedeck1tracktrackuri\",{\"_index\":234,\"name\":{\"469\":{}},\"comment\":{}}],[\"enginedeck1tracktrackwasplayed\",{\"_index\":235,\"name\":{\"470\":{}},\"comment\":{}}],[\"enginedeck2currentbpm\",{\"_index\":236,\"name\":{\"471\":{}},\"comment\":{}}],[\"enginedeck2externalmixervolume\",{\"_index\":237,\"name\":{\"472\":{}},\"comment\":{}}],[\"enginedeck2externalscratchwheeltouch\",{\"_index\":238,\"name\":{\"473\":{}},\"comment\":{}}],[\"enginedeck2padsview\",{\"_index\":239,\"name\":{\"474\":{}},\"comment\":{}}],[\"enginedeck2play\",{\"_index\":240,\"name\":{\"475\":{}},\"comment\":{}}],[\"enginedeck2playstate\",{\"_index\":241,\"name\":{\"476\":{}},\"comment\":{}}],[\"enginedeck2playstatepath\",{\"_index\":242,\"name\":{\"477\":{}},\"comment\":{}}],[\"enginedeck2speed\",{\"_index\":243,\"name\":{\"478\":{}},\"comment\":{}}],[\"enginedeck2speedneutral\",{\"_index\":244,\"name\":{\"479\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetdown\",{\"_index\":245,\"name\":{\"480\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetup\",{\"_index\":246,\"name\":{\"481\":{}},\"comment\":{}}],[\"enginedeck2speedrange\",{\"_index\":247,\"name\":{\"482\":{}},\"comment\":{}}],[\"enginedeck2speedstate\",{\"_index\":248,\"name\":{\"483\":{}},\"comment\":{}}],[\"enginedeck2syncmode\",{\"_index\":249,\"name\":{\"484\":{}},\"comment\":{}}],[\"enginedeck2trackartistname\",{\"_index\":250,\"name\":{\"485\":{}},\"comment\":{}}],[\"enginedeck2trackbleep\",{\"_index\":251,\"name\":{\"486\":{}},\"comment\":{}}],[\"enginedeck2trackcueposition\",{\"_index\":252,\"name\":{\"487\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentbpm\",{\"_index\":253,\"name\":{\"488\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentkeyindex\",{\"_index\":254,\"name\":{\"489\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopinposition\",{\"_index\":255,\"name\":{\"490\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopoutposition\",{\"_index\":256,\"name\":{\"491\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopsizeinbeats\",{\"_index\":257,\"name\":{\"492\":{}},\"comment\":{}}],[\"enginedeck2trackkeylock\",{\"_index\":258,\"name\":{\"493\":{}},\"comment\":{}}],[\"enginedeck2trackloopenablestate\",{\"_index\":259,\"name\":{\"494\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop1\",{\"_index\":260,\"name\":{\"495\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop2\",{\"_index\":261,\"name\":{\"496\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop3\",{\"_index\":262,\"name\":{\"497\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop4\",{\"_index\":263,\"name\":{\"498\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop5\",{\"_index\":264,\"name\":{\"499\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop6\",{\"_index\":265,\"name\":{\"500\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop7\",{\"_index\":266,\"name\":{\"501\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop8\",{\"_index\":267,\"name\":{\"502\":{}},\"comment\":{}}],[\"enginedeck2trackplaypauseledstate\",{\"_index\":268,\"name\":{\"503\":{}},\"comment\":{}}],[\"enginedeck2tracksamplerate\",{\"_index\":269,\"name\":{\"504\":{}},\"comment\":{}}],[\"enginedeck2tracksonganalyzed\",{\"_index\":270,\"name\":{\"505\":{}},\"comment\":{}}],[\"enginedeck2tracksongloaded\",{\"_index\":271,\"name\":{\"506\":{}},\"comment\":{}}],[\"enginedeck2tracksongname\",{\"_index\":272,\"name\":{\"507\":{}},\"comment\":{}}],[\"enginedeck2tracksoundswitchguid\",{\"_index\":273,\"name\":{\"508\":{}},\"comment\":{}}],[\"enginedeck2tracktrackbytes\",{\"_index\":274,\"name\":{\"509\":{}},\"comment\":{}}],[\"enginedeck2tracktrackdata\",{\"_index\":275,\"name\":{\"510\":{}},\"comment\":{}}],[\"enginedeck2tracktracklength\",{\"_index\":276,\"name\":{\"511\":{}},\"comment\":{}}],[\"enginedeck2tracktrackname\",{\"_index\":277,\"name\":{\"512\":{}},\"comment\":{}}],[\"enginedeck2tracktracknetworkpath\",{\"_index\":278,\"name\":{\"513\":{}},\"comment\":{}}],[\"enginedeck2tracktrackuri\",{\"_index\":279,\"name\":{\"514\":{}},\"comment\":{}}],[\"enginedeck2tracktrackwasplayed\",{\"_index\":280,\"name\":{\"515\":{}},\"comment\":{}}],[\"enginedeck3currentbpm\",{\"_index\":281,\"name\":{\"516\":{}},\"comment\":{}}],[\"enginedeck3externalmixervolume\",{\"_index\":282,\"name\":{\"517\":{}},\"comment\":{}}],[\"enginedeck3externalscratchwheeltouch\",{\"_index\":283,\"name\":{\"518\":{}},\"comment\":{}}],[\"enginedeck3padsview\",{\"_index\":284,\"name\":{\"519\":{}},\"comment\":{}}],[\"enginedeck3play\",{\"_index\":285,\"name\":{\"520\":{}},\"comment\":{}}],[\"enginedeck3playstate\",{\"_index\":286,\"name\":{\"521\":{}},\"comment\":{}}],[\"enginedeck3playstatepath\",{\"_index\":287,\"name\":{\"522\":{}},\"comment\":{}}],[\"enginedeck3speed\",{\"_index\":288,\"name\":{\"523\":{}},\"comment\":{}}],[\"enginedeck3speedneutral\",{\"_index\":289,\"name\":{\"524\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetdown\",{\"_index\":290,\"name\":{\"525\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetup\",{\"_index\":291,\"name\":{\"526\":{}},\"comment\":{}}],[\"enginedeck3speedrange\",{\"_index\":292,\"name\":{\"527\":{}},\"comment\":{}}],[\"enginedeck3speedstate\",{\"_index\":293,\"name\":{\"528\":{}},\"comment\":{}}],[\"enginedeck3syncmode\",{\"_index\":294,\"name\":{\"529\":{}},\"comment\":{}}],[\"enginedeck3trackartistname\",{\"_index\":295,\"name\":{\"530\":{}},\"comment\":{}}],[\"enginedeck3trackbleep\",{\"_index\":296,\"name\":{\"531\":{}},\"comment\":{}}],[\"enginedeck3trackcueposition\",{\"_index\":297,\"name\":{\"532\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentbpm\",{\"_index\":298,\"name\":{\"533\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentkeyindex\",{\"_index\":299,\"name\":{\"534\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopinposition\",{\"_index\":300,\"name\":{\"535\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopoutposition\",{\"_index\":301,\"name\":{\"536\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopsizeinbeats\",{\"_index\":302,\"name\":{\"537\":{}},\"comment\":{}}],[\"enginedeck3trackkeylock\",{\"_index\":303,\"name\":{\"538\":{}},\"comment\":{}}],[\"enginedeck3trackloopenablestate\",{\"_index\":304,\"name\":{\"539\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop1\",{\"_index\":305,\"name\":{\"540\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop2\",{\"_index\":306,\"name\":{\"541\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop3\",{\"_index\":307,\"name\":{\"542\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop4\",{\"_index\":308,\"name\":{\"543\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop5\",{\"_index\":309,\"name\":{\"544\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop6\",{\"_index\":310,\"name\":{\"545\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop7\",{\"_index\":311,\"name\":{\"546\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop8\",{\"_index\":312,\"name\":{\"547\":{}},\"comment\":{}}],[\"enginedeck3trackplaypauseledstate\",{\"_index\":313,\"name\":{\"548\":{}},\"comment\":{}}],[\"enginedeck3tracksamplerate\",{\"_index\":314,\"name\":{\"549\":{}},\"comment\":{}}],[\"enginedeck3tracksonganalyzed\",{\"_index\":315,\"name\":{\"550\":{}},\"comment\":{}}],[\"enginedeck3tracksongloaded\",{\"_index\":316,\"name\":{\"551\":{}},\"comment\":{}}],[\"enginedeck3tracksongname\",{\"_index\":317,\"name\":{\"552\":{}},\"comment\":{}}],[\"enginedeck3tracksoundswitchguid\",{\"_index\":318,\"name\":{\"553\":{}},\"comment\":{}}],[\"enginedeck3tracktrackbytes\",{\"_index\":319,\"name\":{\"554\":{}},\"comment\":{}}],[\"enginedeck3tracktrackdata\",{\"_index\":320,\"name\":{\"555\":{}},\"comment\":{}}],[\"enginedeck3tracktracklength\",{\"_index\":321,\"name\":{\"556\":{}},\"comment\":{}}],[\"enginedeck3tracktrackname\",{\"_index\":322,\"name\":{\"557\":{}},\"comment\":{}}],[\"enginedeck3tracktracknetworkpath\",{\"_index\":323,\"name\":{\"558\":{}},\"comment\":{}}],[\"enginedeck3tracktrackuri\",{\"_index\":324,\"name\":{\"559\":{}},\"comment\":{}}],[\"enginedeck3tracktrackwasplayed\",{\"_index\":325,\"name\":{\"560\":{}},\"comment\":{}}],[\"enginedeck4currentbpm\",{\"_index\":326,\"name\":{\"561\":{}},\"comment\":{}}],[\"enginedeck4externalmixervolume\",{\"_index\":327,\"name\":{\"562\":{}},\"comment\":{}}],[\"enginedeck4externalscratchwheeltouch\",{\"_index\":328,\"name\":{\"563\":{}},\"comment\":{}}],[\"enginedeck4padsview\",{\"_index\":329,\"name\":{\"564\":{}},\"comment\":{}}],[\"enginedeck4play\",{\"_index\":330,\"name\":{\"565\":{}},\"comment\":{}}],[\"enginedeck4playstate\",{\"_index\":331,\"name\":{\"566\":{}},\"comment\":{}}],[\"enginedeck4playstatepath\",{\"_index\":332,\"name\":{\"567\":{}},\"comment\":{}}],[\"enginedeck4speed\",{\"_index\":333,\"name\":{\"568\":{}},\"comment\":{}}],[\"enginedeck4speedneutral\",{\"_index\":334,\"name\":{\"569\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetdown\",{\"_index\":335,\"name\":{\"570\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetup\",{\"_index\":336,\"name\":{\"571\":{}},\"comment\":{}}],[\"enginedeck4speedrange\",{\"_index\":337,\"name\":{\"572\":{}},\"comment\":{}}],[\"enginedeck4speedstate\",{\"_index\":338,\"name\":{\"573\":{}},\"comment\":{}}],[\"enginedeck4syncmode\",{\"_index\":339,\"name\":{\"574\":{}},\"comment\":{}}],[\"enginedeck4trackartistname\",{\"_index\":340,\"name\":{\"575\":{}},\"comment\":{}}],[\"enginedeck4trackbleep\",{\"_index\":341,\"name\":{\"576\":{}},\"comment\":{}}],[\"enginedeck4trackcueposition\",{\"_index\":342,\"name\":{\"577\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentbpm\",{\"_index\":343,\"name\":{\"578\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentkeyindex\",{\"_index\":344,\"name\":{\"579\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopinposition\",{\"_index\":345,\"name\":{\"580\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopoutposition\",{\"_index\":346,\"name\":{\"581\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopsizeinbeats\",{\"_index\":347,\"name\":{\"582\":{}},\"comment\":{}}],[\"enginedeck4trackkeylock\",{\"_index\":348,\"name\":{\"583\":{}},\"comment\":{}}],[\"enginedeck4trackloopenablestate\",{\"_index\":349,\"name\":{\"584\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop1\",{\"_index\":350,\"name\":{\"585\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop2\",{\"_index\":351,\"name\":{\"586\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop3\",{\"_index\":352,\"name\":{\"587\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop4\",{\"_index\":353,\"name\":{\"588\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop5\",{\"_index\":354,\"name\":{\"589\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop6\",{\"_index\":355,\"name\":{\"590\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop7\",{\"_index\":356,\"name\":{\"591\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop8\",{\"_index\":357,\"name\":{\"592\":{}},\"comment\":{}}],[\"enginedeck4trackplaypauseledstate\",{\"_index\":358,\"name\":{\"593\":{}},\"comment\":{}}],[\"enginedeck4tracksamplerate\",{\"_index\":359,\"name\":{\"594\":{}},\"comment\":{}}],[\"enginedeck4tracksonganalyzed\",{\"_index\":360,\"name\":{\"595\":{}},\"comment\":{}}],[\"enginedeck4tracksongloaded\",{\"_index\":361,\"name\":{\"596\":{}},\"comment\":{}}],[\"enginedeck4tracksongname\",{\"_index\":362,\"name\":{\"597\":{}},\"comment\":{}}],[\"enginedeck4tracksoundswitchguid\",{\"_index\":363,\"name\":{\"598\":{}},\"comment\":{}}],[\"enginedeck4tracktrackbytes\",{\"_index\":364,\"name\":{\"599\":{}},\"comment\":{}}],[\"enginedeck4tracktrackdata\",{\"_index\":365,\"name\":{\"600\":{}},\"comment\":{}}],[\"enginedeck4tracktracklength\",{\"_index\":366,\"name\":{\"601\":{}},\"comment\":{}}],[\"enginedeck4tracktrackname\",{\"_index\":367,\"name\":{\"602\":{}},\"comment\":{}}],[\"enginedeck4tracktracknetworkpath\",{\"_index\":368,\"name\":{\"603\":{}},\"comment\":{}}],[\"enginedeck4tracktrackuri\",{\"_index\":369,\"name\":{\"604\":{}},\"comment\":{}}],[\"enginedeck4tracktrackwasplayed\",{\"_index\":370,\"name\":{\"605\":{}},\"comment\":{}}],[\"enginedeckcount\",{\"_index\":190,\"name\":{\"425\":{}},\"comment\":{}}],[\"enginemastermastertempo\",{\"_index\":189,\"name\":{\"424\":{}},\"comment\":{}}],[\"enginesyncnetworkmasterstatus\",{\"_index\":188,\"name\":{\"423\":{}},\"comment\":{}}],[\"explicitlyrics\",{\"_index\":442,\"name\":{\"705\":{}},\"comment\":{}}],[\"externalmixervolume\",{\"_index\":384,\"name\":{\"624\":{},\"646\":{}},\"comment\":{}}],[\"filebytes\",{\"_index\":410,\"name\":{\"669\":{}},\"comment\":{}}],[\"filelocation\",{\"_index\":385,\"name\":{\"625\":{},\"647\":{}},\"comment\":{}}],[\"filename\",{\"_index\":406,\"name\":{\"665\":{}},\"comment\":{}}],[\"filetransfer\",{\"_index\":38,\"name\":{\"38\":{},\"323\":{},\"395\":{}},\"comment\":{}}],[\"filetransferhandler\",{\"_index\":66,\"name\":{\"75\":{}},\"comment\":{}}],[\"filetransferinfo\",{\"_index\":166,\"name\":{\"388\":{}},\"comment\":{}}],[\"filetransferprogress\",{\"_index\":33,\"name\":{\"33\":{}},\"comment\":{}}],[\"filetype\",{\"_index\":422,\"name\":{\"683\":{}},\"comment\":{}}],[\"findbroadcastips\",{\"_index\":31,\"name\":{\"31\":{}},\"comment\":{}}],[\"genre\",{\"_index\":412,\"name\":{\"673\":{}},\"comment\":{}}],[\"getbeatdata\",{\"_index\":112,\"name\":{\"229\":{},\"248\":{}},\"comment\":{}}],[\"getbuffer\",{\"_index\":472,\"name\":{\"749\":{}},\"comment\":{}}],[\"getconnectioninfo\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"getdevice\",{\"_index\":69,\"name\":{\"81\":{},\"98\":{},\"150\":{},\"190\":{},\"234\":{},\"278\":{},\"781\":{}},\"comment\":{}}],[\"getdevicelist\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"getdevices\",{\"_index\":22,\"name\":{\"22\":{},\"82\":{},\"99\":{},\"151\":{},\"191\":{},\"235\":{},\"279\":{}},\"comment\":{}}],[\"getfile\",{\"_index\":44,\"name\":{\"48\":{}},\"comment\":{}}],[\"getservers\",{\"_index\":145,\"name\":{\"333\":{}},\"comment\":{}}],[\"getsource\",{\"_index\":502,\"name\":{\"816\":{}},\"comment\":{}}],[\"getsources\",{\"_index\":46,\"name\":{\"50\":{},\"817\":{}},\"comment\":{}}],[\"getstring\",{\"_index\":462,\"name\":{\"728\":{}},\"comment\":{}}],[\"gettempfilepath\",{\"_index\":454,\"name\":{\"719\":{}},\"comment\":{}}],[\"gettimestamp\",{\"_index\":130,\"name\":{\"292\":{}},\"comment\":{}}],[\"gettrackinfo\",{\"_index\":497,\"name\":{\"807\":{}},\"comment\":{}}],[\"handler\",{\"_index\":95,\"name\":{\"158\":{},\"243\":{}},\"comment\":{}}],[\"hasconnectioninfo\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"hasdevice\",{\"_index\":68,\"name\":{\"80\":{},\"97\":{},\"149\":{},\"189\":{},\"233\":{},\"277\":{},\"783\":{}},\"comment\":{}}],[\"haslooped\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"hasnewinfo\",{\"_index\":486,\"name\":{\"784\":{}},\"comment\":{}}],[\"hasreceivedstate\",{\"_index\":96,\"name\":{\"159\":{}},\"comment\":{}}],[\"hassource\",{\"_index\":500,\"name\":{\"814\":{}},\"comment\":{}}],[\"hassourceanddb\",{\"_index\":501,\"name\":{\"815\":{}},\"comment\":{}}],[\"hastrackdata\",{\"_index\":386,\"name\":{\"626\":{},\"648\":{}},\"comment\":{}}],[\"id\",{\"_index\":157,\"name\":{\"368\":{},\"659\":{}},\"comment\":{}}],[\"info\",{\"_index\":490,\"name\":{\"792\":{}},\"comment\":{}}],[\"interval\",{\"_index\":91,\"name\":{\"142\":{}},\"comment\":{}}],[\"ipaddress\",{\"_index\":167,\"name\":{\"391\":{}},\"comment\":{}}],[\"ipaddressport\",{\"_index\":168,\"name\":{\"392\":{}},\"comment\":{}}],[\"isanalyzed\",{\"_index\":423,\"name\":{\"684\":{}},\"comment\":{}}],[\"isavailable\",{\"_index\":41,\"name\":{\"44\":{},\"57\":{},\"687\":{}},\"comment\":{}}],[\"isbeatgridlocked\",{\"_index\":433,\"name\":{\"695\":{}},\"comment\":{}}],[\"isbufferedservice\",{\"_index\":57,\"name\":{\"64\":{},\"113\":{},\"171\":{},\"198\":{},\"247\":{},\"286\":{}},\"comment\":{}}],[\"iseof\",{\"_index\":451,\"name\":{\"716\":{},\"743\":{},\"767\":{}},\"comment\":{}}],[\"islittleendian\",{\"_index\":452,\"name\":{\"717\":{},\"744\":{},\"768\":{}},\"comment\":{}}],[\"ismetadataimported\",{\"_index\":429,\"name\":{\"691\":{}},\"comment\":{}}],[\"ismetadataofpackedtrackchanged\",{\"_index\":426,\"name\":{\"688\":{}},\"comment\":{}}],[\"isperfomancedataofpackedtrackchanged\",{\"_index\":427,\"name\":{\"689\":{}},\"comment\":{}}],[\"isplayed\",{\"_index\":421,\"name\":{\"682\":{}},\"comment\":{}}],[\"jogcolor\",{\"_index\":387,\"name\":{\"627\":{},\"649\":{}},\"comment\":{}}],[\"json\",{\"_index\":86,\"name\":{\"136\":{}},\"comment\":{}}],[\"key\",{\"_index\":417,\"name\":{\"678\":{}},\"comment\":{}}],[\"label\",{\"_index\":414,\"name\":{\"675\":{}},\"comment\":{}}],[\"layer\",{\"_index\":388,\"name\":{\"628\":{},\"643\":{}},\"comment\":{}}],[\"length\",{\"_index\":403,\"name\":{\"661\":{}},\"comment\":{}}],[\"listen\",{\"_index\":23,\"name\":{\"23\":{},\"69\":{},\"119\":{},\"176\":{},\"214\":{},\"263\":{},\"307\":{}},\"comment\":{}}],[\"listen_port\",{\"_index\":176,\"name\":{\"406\":{}},\"comment\":{}}],[\"listen_timeout\",{\"_index\":177,\"name\":{\"407\":{}},\"comment\":{}}],[\"listenfordevices\",{\"_index\":27,\"name\":{\"27\":{}},\"comment\":{}}],[\"littleendian\",{\"_index\":447,\"name\":{\"711\":{},\"738\":{},\"763\":{}},\"comment\":{}}],[\"local\",{\"_index\":164,\"name\":{\"385\":{}},\"comment\":{}}],[\"localtime\",{\"_index\":125,\"name\":{\"287\":{}},\"comment\":{}}],[\"location\",{\"_index\":160,\"name\":{\"378\":{},\"383\":{}},\"comment\":{}}],[\"logger\",{\"_index\":137,\"name\":{\"320\":{}},\"comment\":{}}],[\"login\",{\"_index\":182,\"name\":{\"413\":{}},\"comment\":{}}],[\"logout\",{\"_index\":183,\"name\":{\"414\":{}},\"comment\":{}}],[\"loops\",{\"_index\":439,\"name\":{\"702\":{}},\"comment\":{}}],[\"m_array\",{\"_index\":484,\"name\":{\"774\":{}},\"comment\":{}}],[\"m_str\",{\"_index\":483,\"name\":{\"773\":{}},\"comment\":{}}],[\"masterstatus\",{\"_index\":389,\"name\":{\"629\":{}},\"comment\":{}}],[\"mastertempo\",{\"_index\":390,\"name\":{\"630\":{}},\"comment\":{}}],[\"maxretries\",{\"_index\":171,\"name\":{\"400\":{}},\"comment\":{}}],[\"message\",{\"_index\":158,\"name\":{\"369\":{}},\"comment\":{}}],[\"message_timeout\",{\"_index\":178,\"name\":{\"408\":{}},\"comment\":{}}],[\"messagebuffer\",{\"_index\":78,\"name\":{\"117\":{}},\"comment\":{}}],[\"messagehandler\",{\"_index\":43,\"name\":{\"47\":{},\"128\":{},\"162\":{},\"201\":{},\"252\":{},\"296\":{}},\"comment\":{}}],[\"messageid\",{\"_index\":184,\"name\":{\"415\":{}},\"comment\":{}}],[\"mixer\",{\"_index\":83,\"name\":{\"131\":{},\"348\":{},\"606\":{}},\"comment\":{}}],[\"mixerch1faderposition\",{\"_index\":371,\"name\":{\"608\":{}},\"comment\":{}}],[\"mixerch2faderposition\",{\"_index\":372,\"name\":{\"609\":{}},\"comment\":{}}],[\"mixerch3faderposition\",{\"_index\":373,\"name\":{\"610\":{}},\"comment\":{}}],[\"mixerch4faderposition\",{\"_index\":374,\"name\":{\"611\":{}},\"comment\":{}}],[\"mixerchannelassignment1\",{\"_index\":376,\"name\":{\"613\":{}},\"comment\":{}}],[\"mixerchannelassignment2\",{\"_index\":377,\"name\":{\"614\":{}},\"comment\":{}}],[\"mixerchannelassignment3\",{\"_index\":378,\"name\":{\"615\":{}},\"comment\":{}}],[\"mixerchannelassignment4\",{\"_index\":379,\"name\":{\"616\":{}},\"comment\":{}}],[\"mixercrossfaderposition\",{\"_index\":375,\"name\":{\"612\":{}},\"comment\":{}}],[\"mixernumberofchannels\",{\"_index\":380,\"name\":{\"617\":{}},\"comment\":{}}],[\"msgs\",{\"_index\":121,\"name\":{\"270\":{}},\"comment\":{}}],[\"name\",{\"_index\":1,\"name\":{\"1\":{},\"41\":{},\"77\":{},\"88\":{},\"94\":{},\"106\":{},\"135\":{},\"145\":{},\"157\":{},\"186\":{},\"197\":{},\"227\":{},\"242\":{},\"274\":{},\"285\":{},\"343\":{},\"354\":{},\"364\":{},\"373\":{}},\"comment\":{}}],[\"on\",{\"_index\":8,\"name\":{\"8\":{},\"40\":{},\"226\":{},\"241\":{},\"316\":{},\"778\":{},\"798\":{},\"811\":{}},\"comment\":{}}],[\"options\",{\"_index\":13,\"name\":{\"13\":{},\"317\":{}},\"comment\":{}}],[\"origindatabaseuuid\",{\"_index\":434,\"name\":{\"696\":{}},\"comment\":{}}],[\"origintrackid\",{\"_index\":435,\"name\":{\"697\":{}},\"comment\":{}}],[\"overviewwaveformdata\",{\"_index\":437,\"name\":{\"699\":{}},\"comment\":{}}],[\"parent\",{\"_index\":9,\"name\":{\"9\":{},\"65\":{},\"79\":{},\"95\":{},\"114\":{},\"148\":{},\"172\":{},\"188\":{},\"210\":{},\"232\":{},\"259\":{},\"276\":{},\"303\":{},\"790\":{},\"799\":{},\"813\":{}},\"comment\":{}}],[\"parsedata\",{\"_index\":42,\"name\":{\"46\":{},\"127\":{},\"161\":{},\"200\":{},\"251\":{},\"294\":{}},\"comment\":{}}],[\"path\",{\"_index\":165,\"name\":{\"387\":{},\"664\":{}},\"comment\":{}}],[\"pdbimportkey\",{\"_index\":430,\"name\":{\"692\":{}},\"comment\":{}}],[\"peek\",{\"_index\":457,\"name\":{\"723\":{}},\"comment\":{}}],[\"peers\",{\"_index\":14,\"name\":{\"14\":{}},\"comment\":{}}],[\"percentcomplete\",{\"_index\":37,\"name\":{\"37\":{}},\"comment\":{}}],[\"play\",{\"_index\":391,\"name\":{\"631\":{},\"650\":{}},\"comment\":{}}],[\"playedindicator\",{\"_index\":428,\"name\":{\"690\":{}},\"comment\":{}}],[\"player\",{\"_index\":81,\"name\":{\"129\":{},\"347\":{},\"421\":{},\"632\":{},\"651\":{}},\"comment\":{}}],[\"playerdeck\",{\"_index\":82,\"name\":{\"130\":{}},\"comment\":{}}],[\"playerlayerstate\",{\"_index\":399,\"name\":{\"642\":{}},\"comment\":{}}],[\"playerstatus\",{\"_index\":381,\"name\":{\"618\":{}},\"comment\":{}}],[\"playorder\",{\"_index\":402,\"name\":{\"660\":{}},\"comment\":{}}],[\"playstate\",{\"_index\":392,\"name\":{\"633\":{},\"652\":{}},\"comment\":{}}],[\"port\",{\"_index\":5,\"name\":{\"5\":{},\"345\":{},\"366\":{},\"634\":{}},\"comment\":{}}],[\"pos\",{\"_index\":446,\"name\":{\"710\":{},\"737\":{},\"762\":{}},\"comment\":{}}],[\"querysource\",{\"_index\":495,\"name\":{\"805\":{}},\"comment\":{}}],[\"quickcues\",{\"_index\":438,\"name\":{\"701\":{}},\"comment\":{}}],[\"rating\",{\"_index\":418,\"name\":{\"679\":{}},\"comment\":{}}],[\"read\",{\"_index\":456,\"name\":{\"722\":{}},\"comment\":{}}],[\"readconnectioninfo\",{\"_index\":28,\"name\":{\"28\":{}},\"comment\":{}}],[\"readcontext\",{\"_index\":455,\"name\":{\"720\":{}},\"comment\":{}}],[\"readfloat64\",{\"_index\":464,\"name\":{\"730\":{}},\"comment\":{}}],[\"readint32\",{\"_index\":467,\"name\":{\"733\":{}},\"comment\":{}}],[\"readnetworkstringutf16\",{\"_index\":463,\"name\":{\"729\":{}},\"comment\":{}}],[\"readremaining\",{\"_index\":458,\"name\":{\"724\":{}},\"comment\":{}}],[\"readremainingasnewarraybuffer\",{\"_index\":460,\"name\":{\"726\":{}},\"comment\":{}}],[\"readremainingasnewbuffer\",{\"_index\":459,\"name\":{\"725\":{}},\"comment\":{}}],[\"readremainingasnewctx\",{\"_index\":461,\"name\":{\"727\":{}},\"comment\":{}}],[\"readuint16\",{\"_index\":468,\"name\":{\"734\":{}},\"comment\":{}}],[\"readuint32\",{\"_index\":466,\"name\":{\"732\":{}},\"comment\":{}}],[\"readuint64\",{\"_index\":465,\"name\":{\"731\":{}},\"comment\":{}}],[\"readuint8\",{\"_index\":469,\"name\":{\"735\":{}},\"comment\":{}}],[\"receivedfile\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"remixer\",{\"_index\":416,\"name\":{\"677\":{}},\"comment\":{}}],[\"remote\",{\"_index\":163,\"name\":{\"381\":{}},\"comment\":{}}],[\"remotetime\",{\"_index\":126,\"name\":{\"288\":{}},\"comment\":{}}],[\"requestchunkrange\",{\"_index\":50,\"name\":{\"54\":{}},\"comment\":{}}],[\"requestfiletransferid\",{\"_index\":49,\"name\":{\"53\":{}},\"comment\":{}}],[\"requestsources\",{\"_index\":48,\"name\":{\"52\":{}},\"comment\":{}}],[\"requeststat\",{\"_index\":47,\"name\":{\"51\":{}},\"comment\":{}}],[\"resize\",{\"_index\":474,\"name\":{\"752\":{}},\"comment\":{}}],[\"rewind\",{\"_index\":453,\"name\":{\"718\":{},\"745\":{},\"769\":{}},\"comment\":{}}],[\"seek\",{\"_index\":449,\"name\":{\"714\":{},\"741\":{},\"765\":{}},\"comment\":{}}],[\"sendbeatinforequest\",{\"_index\":119,\"name\":{\"250\":{}},\"comment\":{}}],[\"sendnosourcesreply\",{\"_index\":52,\"name\":{\"56\":{}},\"comment\":{}}],[\"sendserviceannouncement\",{\"_index\":104,\"name\":{\"202\":{}},\"comment\":{}}],[\"sendstateresponse\",{\"_index\":98,\"name\":{\"163\":{}},\"comment\":{}}],[\"sendtimestampreply\",{\"_index\":105,\"name\":{\"203\":{}},\"comment\":{}}],[\"sendtimesyncquery\",{\"_index\":131,\"name\":{\"293\":{}},\"comment\":{}}],[\"sendtimesyncrequest\",{\"_index\":128,\"name\":{\"290\":{}},\"comment\":{}}],[\"server\",{\"_index\":54,\"name\":{\"60\":{},\"109\":{},\"167\":{},\"206\":{},\"255\":{},\"299\":{}},\"comment\":{}}],[\"serverinfo\",{\"_index\":55,\"name\":{\"61\":{},\"110\":{},\"168\":{},\"207\":{},\"256\":{},\"300\":{}},\"comment\":{}}],[\"servers\",{\"_index\":142,\"name\":{\"330\":{}},\"comment\":{}}],[\"serverstatus\",{\"_index\":56,\"name\":{\"62\":{},\"111\":{},\"169\":{},\"208\":{},\"257\":{},\"301\":{}},\"comment\":{}}],[\"service\",{\"_index\":75,\"name\":{\"91\":{},\"104\":{},\"134\":{},\"375\":{}},\"comment\":{}}],[\"servicedata\",{\"_index\":73,\"name\":{\"86\":{}},\"comment\":{}}],[\"servicehandler\",{\"_index\":76,\"name\":{\"92\":{}},\"comment\":{}}],[\"servicehandlers\",{\"_index\":133,\"name\":{\"313\":{}},\"comment\":{}}],[\"servicelist\",{\"_index\":169,\"name\":{\"393\":{}},\"comment\":{}}],[\"servicemessage\",{\"_index\":156,\"name\":{\"367\":{}},\"comment\":{}}],[\"services\",{\"_index\":135,\"name\":{\"318\":{},\"403\":{},\"793\":{}},\"comment\":{}}],[\"servicesannouncement\",{\"_index\":185,\"name\":{\"416\":{}},\"comment\":{}}],[\"servicesrequest\",{\"_index\":186,\"name\":{\"418\":{}},\"comment\":{}}],[\"set\",{\"_index\":450,\"name\":{\"715\":{},\"742\":{},\"766\":{}},\"comment\":{}}],[\"setbeatdata\",{\"_index\":113,\"name\":{\"230\":{}},\"comment\":{}}],[\"setconnectioninfo\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"setsource\",{\"_index\":503,\"name\":{\"818\":{}},\"comment\":{}}],[\"setupservice\",{\"_index\":67,\"name\":{\"78\":{},\"103\":{},\"147\":{},\"187\":{},\"231\":{},\"275\":{}},\"comment\":{}}],[\"signaltransfercomplete\",{\"_index\":51,\"name\":{\"55\":{}},\"comment\":{}}],[\"size\",{\"_index\":161,\"name\":{\"379\":{},\"390\":{}},\"comment\":{}}],[\"sizeleft\",{\"_index\":34,\"name\":{\"34\":{},\"712\":{},\"739\":{},\"750\":{}},\"comment\":{}}],[\"sleep\",{\"_index\":482,\"name\":{\"770\":{}},\"comment\":{}}],[\"socket\",{\"_index\":10,\"name\":{\"10\":{},\"63\":{},\"89\":{},\"112\":{},\"170\":{},\"209\":{},\"258\":{},\"302\":{},\"370\":{}},\"comment\":{}}],[\"software\",{\"_index\":150,\"name\":{\"341\":{},\"362\":{}},\"comment\":{}}],[\"songloaded\",{\"_index\":393,\"name\":{\"635\":{},\"653\":{}},\"comment\":{}}],[\"source\",{\"_index\":3,\"name\":{\"3\":{},\"339\":{},\"360\":{},\"372\":{},\"638\":{}},\"comment\":{}}],[\"sources\",{\"_index\":140,\"name\":{\"327\":{},\"809\":{}},\"comment\":{}}],[\"stagelinq\",{\"_index\":134,\"name\":{\"314\":{}},\"comment\":{}}],[\"stagelinqoptions\",{\"_index\":170,\"name\":{\"399\":{}},\"comment\":{}}],[\"stagelinqvalueobj\",{\"_index\":187,\"name\":{\"419\":{}},\"comment\":{}}],[\"startbeatinfo\",{\"_index\":118,\"name\":{\"249\":{}},\"comment\":{}}],[\"startservicelistener\",{\"_index\":72,\"name\":{\"85\":{},\"102\":{},\"154\":{},\"194\":{},\"238\":{},\"282\":{}},\"comment\":{}}],[\"state\",{\"_index\":90,\"name\":{\"141\":{}},\"comment\":{}}],[\"statedata\",{\"_index\":85,\"name\":{\"133\":{}},\"comment\":{}}],[\"statemap\",{\"_index\":94,\"name\":{\"155\":{},\"322\":{},\"394\":{}},\"comment\":{}}],[\"statemapdevice\",{\"_index\":84,\"name\":{\"132\":{}},\"comment\":{}}],[\"statemaphandler\",{\"_index\":92,\"name\":{\"143\":{}},\"comment\":{}}],[\"status\",{\"_index\":141,\"name\":{\"328\":{}},\"comment\":{}}],[\"streamingflags\",{\"_index\":441,\"name\":{\"704\":{}},\"comment\":{}}],[\"streamingsource\",{\"_index\":431,\"name\":{\"693\":{}},\"comment\":{}}],[\"string\",{\"_index\":88,\"name\":{\"139\":{},\"775\":{}},\"comment\":{}}],[\"submessagetest\",{\"_index\":79,\"name\":{\"121\":{}},\"comment\":{}}],[\"subscribe\",{\"_index\":97,\"name\":{\"160\":{}},\"comment\":{}}],[\"subscribestate\",{\"_index\":99,\"name\":{\"164\":{}},\"comment\":{}}],[\"tell\",{\"_index\":448,\"name\":{\"713\":{},\"740\":{},\"764\":{}},\"comment\":{}}],[\"thirdpartysourceid\",{\"_index\":440,\"name\":{\"703\":{}},\"comment\":{}}],[\"timealive\",{\"_index\":103,\"name\":{\"199\":{}},\"comment\":{}}],[\"timeavg\",{\"_index\":132,\"name\":{\"295\":{}},\"comment\":{}}],[\"timelastplayed\",{\"_index\":420,\"name\":{\"681\":{}},\"comment\":{}}],[\"timeout\",{\"_index\":59,\"name\":{\"67\":{},\"116\":{},\"174\":{},\"212\":{},\"261\":{},\"305\":{}},\"comment\":{}}],[\"timestamp\",{\"_index\":122,\"name\":{\"271\":{},\"417\":{}},\"comment\":{}}],[\"timesync\",{\"_index\":138,\"name\":{\"325\":{}},\"comment\":{}}],[\"timesyncdata\",{\"_index\":120,\"name\":{\"269\":{}},\"comment\":{}}],[\"timesynchronization\",{\"_index\":124,\"name\":{\"283\":{},\"397\":{}},\"comment\":{}}],[\"timesynchronizationhandler\",{\"_index\":123,\"name\":{\"272\":{}},\"comment\":{}}],[\"timesyncmsghelper\",{\"_index\":129,\"name\":{\"291\":{}},\"comment\":{}}],[\"title\",{\"_index\":394,\"name\":{\"636\":{},\"654\":{},\"670\":{}},\"comment\":{}}],[\"token\",{\"_index\":4,\"name\":{\"4\":{},\"337\":{},\"358\":{}},\"comment\":{}}],[\"total\",{\"_index\":35,\"name\":{\"35\":{}},\"comment\":{}}],[\"track\",{\"_index\":401,\"name\":{\"658\":{}},\"comment\":{}}],[\"trackdata\",{\"_index\":436,\"name\":{\"698\":{}},\"comment\":{}}],[\"tracknetworkpath\",{\"_index\":395,\"name\":{\"637\":{},\"655\":{}},\"comment\":{}}],[\"trackpath\",{\"_index\":397,\"name\":{\"640\":{}},\"comment\":{}}],[\"trackpathabsolute\",{\"_index\":398,\"name\":{\"641\":{}},\"comment\":{}}],[\"txid\",{\"_index\":40,\"name\":{\"43\":{},\"45\":{},\"389\":{}},\"comment\":{}}],[\"type\",{\"_index\":87,\"name\":{\"138\":{},\"355\":{}},\"comment\":{}}],[\"unannounce\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"updatedeviceinfo\",{\"_index\":487,\"name\":{\"785\":{}},\"comment\":{}}],[\"updatesources\",{\"_index\":45,\"name\":{\"49\":{}},\"comment\":{}}],[\"uri\",{\"_index\":432,\"name\":{\"694\":{}},\"comment\":{}}],[\"value\",{\"_index\":89,\"name\":{\"140\":{}},\"comment\":{}}],[\"version\",{\"_index\":2,\"name\":{\"2\":{},\"344\":{},\"365\":{}},\"comment\":{}}],[\"waitformessage\",{\"_index\":62,\"name\":{\"71\":{},\"123\":{},\"178\":{},\"216\":{},\"265\":{},\"309\":{}},\"comment\":{}}],[\"write\",{\"_index\":63,\"name\":{\"72\":{},\"124\":{},\"179\":{},\"217\":{},\"266\":{},\"310\":{},\"753\":{}},\"comment\":{}}],[\"writecontext\",{\"_index\":470,\"name\":{\"746\":{}},\"comment\":{}}],[\"writediscoverymessage\",{\"_index\":30,\"name\":{\"30\":{}},\"comment\":{}}],[\"writefixedsizedstring\",{\"_index\":475,\"name\":{\"754\":{}},\"comment\":{}}],[\"writeint32\",{\"_index\":479,\"name\":{\"758\":{}},\"comment\":{}}],[\"writenetworkstringutf16\",{\"_index\":476,\"name\":{\"755\":{}},\"comment\":{}}],[\"writeuint16\",{\"_index\":480,\"name\":{\"759\":{}},\"comment\":{}}],[\"writeuint32\",{\"_index\":478,\"name\":{\"757\":{}},\"comment\":{}}],[\"writeuint64\",{\"_index\":477,\"name\":{\"756\":{}},\"comment\":{}}],[\"writeuint8\",{\"_index\":481,\"name\":{\"760\":{}},\"comment\":{}}],[\"writewithlength\",{\"_index\":64,\"name\":{\"73\":{},\"125\":{},\"180\":{},\"218\":{},\"267\":{},\"311\":{}},\"comment\":{}}],[\"year\",{\"_index\":405,\"name\":{\"663\":{}},\"comment\":{}}],[\"zinflate\",{\"_index\":496,\"name\":{\"806\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 0000000..496e66f --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1279 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-text: #222; + --light-color-text-aside: #707070; + --light-color-link: #4da6ff; + --light-color-ts: #db1373; + --light-color-ts-interface: #139d2c; + --light-color-ts-enum: #9c891a; + --light-color-ts-class: #2484e5; + --light-color-ts-function: #572be7; + --light-color-ts-namespace: #b111c9; + --light-color-ts-private: #707070; + --light-color-ts-variable: #4d68ff; + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + --dark-color-ts: #ff6492; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-class: #61b0ff; + --dark-color-ts-function: #9772ff; + --dark-color-ts-namespace: #e14dff; + --dark-color-ts-private: #e2e2e2; + --dark-color-ts-variable: #4d68ff; + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-function: var(--light-color-ts-function); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-private: var(--light-color-ts-private); + --color-ts-variable: var(--light-color-ts-variable); + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-private: var(--dark-color-ts-private); + --color-ts-variable: var(--dark-color-ts-variable); + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-function: var(--light-color-ts-function); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-private: var(--light-color-ts-private); + --color-ts-variable: var(--light-color-ts-variable); + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-private: var(--dark-color-ts-private); + --color-ts-variable: var(--dark-color-ts-variable); + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1600px; + padding: 0 2rem; +} + +@media (min-width: 640px) { + .container { + padding: 0 4rem; + } +} +@media (min-width: 1200px) { + .container { + padding: 0 8rem; + } +} +@media (min-width: 1600px) { + .container { + padding: 0 12rem; + } +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + display: flex; + justify-content: space-between; + position: relative; + margin: 0 auto; +} + +.col-4, +.col-8 { + box-sizing: border-box; + float: left; + padding: 2rem 1rem; +} + +.col-4 { + flex: 0 0 25%; +} +.col-8 { + flex: 1 0; + flex-wrap: wrap; + padding-left: 0; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes shift-to-left { + from { + transform: translate(0, 0); + } + to { + transform: translate(-25%, 0); + } +} +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + padding: 10px; + border: 0.1em solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography h4, +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; + margin: 0; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} + +@media (max-width: 1024px) { + html .col-content { + float: none; + max-width: 100%; + width: 100%; + padding-top: 3rem; + } + html .col-menu { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + max-width: 25rem; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-menu > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu :is(header, footer, .col-content) { + animation: shift-to-left 0.4s; + } + + .to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu :is(header, footer, .col-content) { + animation: unshift-to-left 0.4s; + } + + .from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu :is(header, footer, .col-content) { + transform: translate(-25%, 0); + } + .has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} +.tsd-index-panel a, +.tsd-index-panel a.tsd-parent-kind-module { + color: var(--color-ts); +} +.tsd-index-panel a.tsd-parent-kind-interface { + color: var(--color-ts-interface); +} +.tsd-index-panel a.tsd-parent-kind-enum { + color: var(--color-ts-enum); +} +.tsd-index-panel a.tsd-parent-kind-class { + color: var(--color-ts-class); +} +.tsd-index-panel a.tsd-kind-module { + color: var(--color-ts-namespace); +} +.tsd-index-panel a.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-index-panel a.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-index-panel a.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-index-panel a.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-index-panel a.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-index-panel a.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-index-panel a.tsd-is-private { + color: var(--color-ts-private); +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: absolute; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} +.tsd-member [data-tsd-kind] { + color: var(--color-ts); +} +.tsd-member [data-tsd-kind="Interface"] { + color: var(--color-ts-interface); +} +.tsd-member [data-tsd-kind="Enum"] { + color: var(--color-ts-enum); +} +.tsd-member [data-tsd-kind="Class"] { + color: var(--color-ts-class); +} +.tsd-member [data-tsd-kind="Private"] { + color: var(--color-ts-private); +} + +.tsd-navigation a { + display: block; + margin: 0.4rem 0; + border-left: 2px solid transparent; + color: var(--color-text); + text-decoration: none; + transition: border-left-color 0.1s; +} +.tsd-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li { + padding: 0; +} + +.tsd-navigation.primary .tsd-accordion-details > ul { + margin-top: 0.75rem; +} +.tsd-navigation.primary a { + padding: 0.75rem 0.5rem; + margin: 0; +} +.tsd-navigation.primary ul li a { + margin-left: 0.5rem; +} +.tsd-navigation.primary ul li li a { + margin-left: 1.5rem; +} +.tsd-navigation.primary ul li li li a { + margin-left: 2.5rem; +} +.tsd-navigation.primary ul li li li li a { + margin-left: 3.5rem; +} +.tsd-navigation.primary ul li li li li li a { + margin-left: 4.5rem; +} +.tsd-navigation.primary ul li li li li li li a { + margin-left: 5.5rem; +} +.tsd-navigation.primary li.current > a { + border-left: 0.15rem var(--color-text) solid; +} +.tsd-navigation.primary li.selected > a { + font-weight: bold; + border-left: 0.2rem var(--color-text) solid; +} +.tsd-navigation.primary ul li a:hover { + border-left: 0.2rem var(--color-text-aside) solid; +} +.tsd-navigation.primary li.globals + li > span, +.tsd-navigation.primary li.globals + li > a { + padding-top: 20px; +} + +.tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: 0.5rem; +} +.tsd-navigation.secondary > ul { + display: inline; + padding-right: 0.5rem; + transition: opacity 0.2s; +} +.tsd-navigation.secondary ul li a { + padding-left: 0; +} +.tsd-navigation.secondary ul li li a { + padding-left: 1.1rem; +} +.tsd-navigation.secondary ul li li li a { + padding-left: 2.2rem; +} +.tsd-navigation.secondary ul li li li li a { + padding-left: 3.3rem; +} +.tsd-navigation.secondary ul li li li li li a { + padding-left: 4.4rem; +} +.tsd-navigation.secondary ul li li li li li li a { + padding-left: 5.5rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + margin: 0.25rem 0; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; +} +.tsd-accordion-summary > h1, +.tsd-accordion-summary > h2, +.tsd-accordion-summary > h3, +.tsd-accordion-summary > h4, +.tsd-accordion-summary > h5 { + display: inline-flex; + align-items: center; + vertical-align: middle; + margin-bottom: 0; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} +.tsd-accordion-summary { + display: block; + cursor: pointer; +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; +} +.tsd-index-accordion .tsd-accordion-summary svg { + margin-right: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +@media (min-width: 1025px) { + .col-content { + margin: 2rem auto; + } + + .menu-sticky-wrap { + position: sticky; + height: calc(100vh - 2rem); + top: 4rem; + right: 0; + padding: 0 1.5rem; + padding-top: 1rem; + margin-top: 3rem; + transition: 0.3s ease-in-out; + transition-property: top, padding-top, padding, height; + overflow-y: auto; + } + .col-menu { + border-left: 1px solid var(--color-accent); + } + .col-menu--hide { + top: 1rem; + } + .col-menu .tsd-navigation:not(:last-child) { + padding-bottom: 1.75rem; + } +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + padding: 0 10px; + background-color: var(--color-background); +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current, +#tsd-search .results li:hover { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: block; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-page-toolbar--hide { + transform: translateY(-100%); +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +@media (max-width: 1024px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} diff --git a/docs/classes/BeatInfo.html b/docs/classes/BeatInfo.html new file mode 100644 index 0000000..ce791ea --- /dev/null +++ b/docs/classes/BeatInfo.html @@ -0,0 +1,1105 @@ +BeatInfo | StageLinqJS
+
+ +
+
+
+
+ +

Class BeatInfo

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_currentBeatData: ServiceMessage<BeatData> = null
+
+ +
_handler: ServiceHandler<BeatData> = null
+
+ +
_userBeatCallback: BeatCallback = null
+
+ +
_userBeatOptions: BeatOptions = null
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
+
+ +
isBufferedService: boolean = true
+
+ +
name: "BeatInfo" = "BeatInfo"
+
+ +
parent: StageLinq
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Send Subscribe to BeatInfo message to Device

    +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns BeatInfo

+
+ +
    + +
  • +

    Start BeatInfo

    +
    +
    +

    Parameters

    +
      +
    • +
      options: BeatOptions
    • +
    • +
      Optional beatCB: BeatCallback
      +

      Optional User callback

      +
    +

    Returns void

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/BeatInfoHandler.html b/docs/classes/BeatInfoHandler.html new file mode 100644 index 0000000..9dcfafe --- /dev/null +++ b/docs/classes/BeatInfoHandler.html @@ -0,0 +1,1020 @@ +BeatInfoHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class BeatInfoHandler

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
#beatRegister: Map<string, BeatData> = ...
+
+ +
name: string = 'BeatInfo'
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      event: "newBeatInfoDevice"
      +

      The name of the event.

      +
    • +
    • +
      listener: ((device: Service<BeatData>) => void)
      +

      The callback function

      +
      +
    +

    Returns BeatInfoHandler

  • + +
  • +
    +

    Parameters

    +
    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns BeatInfoHandler

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns BeatInfoHandler

+
+ +
+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns BeatInfoHandler

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Context.html b/docs/classes/Context.html new file mode 100644 index 0000000..8b19f07 --- /dev/null +++ b/docs/classes/Context.html @@ -0,0 +1,192 @@ +Context | StageLinqJS
+
+ +
+
+
+
+ +

Class Context

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_buffer: ArrayBuffer
    • +
    • +
      Optional p_littleEndian: boolean
    +

    Returns Context

+
+

Properties

+
+ +
buffer: ArrayBuffer
+
+ +
littleEndian: boolean
+
+ +
pos: number
+
+

Methods

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_bytes: number
    +

    Returns void

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_offset: number
    +

    Returns void

+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Databases.html b/docs/classes/Databases.html new file mode 100644 index 0000000..5778053 --- /dev/null +++ b/docs/classes/Databases.html @@ -0,0 +1,812 @@ +Databases | StageLinqJS
+
+ +
+
+
+
+ +

Class Databases

+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • Databases
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +

    Download a Database from Device

    +
    +
    +

    Parameters

    +
      +
    • +
      source: Source
      +

      instance of Source

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "dbDownloaded"
    • +
    • +
      listener: ((source: Source) => void)
      +
        +
      • +
          +
        • (source: Source): void
        • +
        • +
          +

          Parameters

          +
          +

          Returns void

    +

    Returns Databases

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "dbDownloading"
    • +
    • +
      listener: ((sourceName: string, dbPath: string) => void)
      +
        +
      • +
          +
        • (sourceName: string, dbPath: string): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            sourceName: string
          • +
          • +
            dbPath: string
          +

          Returns void

    +

    Returns Databases

  • + +
  • +
    +

    Parameters

    +
    +

    Returns Databases

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Databases

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Databases

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Databases

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/DbConnection.html b/docs/classes/DbConnection.html new file mode 100644 index 0000000..745db20 --- /dev/null +++ b/docs/classes/DbConnection.html @@ -0,0 +1,184 @@ +DbConnection | StageLinqJS
+
+ +
+
+
+
+ +

Class DbConnection

+
+

Hierarchy

+
    +
  • DbConnection
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
db: Database
+
+ +
dbPath: string
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Return track's DB entry.

    + +

    Returns

    +
    +

    Parameters

    +
      +
    • +
      _trackPath: string
      +

      Path of track on the source's filesystem.

      +
    +

    Returns Promise<Track>

+
+ +
    + +
  • +

    Execute a SQL query.

    + +

    Returns

    +
    +

    Type Parameters

    +
      +
    • +

      T

    +
    +

    Parameters

    +
      +
    • +
      query: string
      +

      SQL query to execute

      +
    • +
    • +
      Rest ...params: any[]
      +

      Parameters for BetterSqlite3 result.all.

      +
    +

    Returns T[]

+
+ +
    + +
  • +

    Inflate Zlib compressed data

    + +

    Returns

    Zlib inflated data

    +
    +
    +

    Parameters

    +
      +
    • +
      data: Buffer
    +

    Returns Promise<Buffer>

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Device.html b/docs/classes/Device.html new file mode 100644 index 0000000..e523fff --- /dev/null +++ b/docs/classes/Device.html @@ -0,0 +1,839 @@ +Device | StageLinqJS
+
+ +
+
+
+
+ +

Class Device

+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • Device
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
deviceId: DeviceId
+
+ +
+
+ +
parent: Devices
+
+ +
services: Map<string, Service<unknown>> = ...
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
+
+ +
    + +
  • +

    Remove a service

    +
    +
    +

    Parameters

    +
      +
    • +
      serviceName: string
    +

    Returns void

+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Device

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Device

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Device

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/DeviceId.html b/docs/classes/DeviceId.html new file mode 100644 index 0000000..ea59f14 --- /dev/null +++ b/docs/classes/DeviceId.html @@ -0,0 +1,128 @@ +DeviceId | StageLinqJS
+
+ +
+
+
+
+ +

Class DeviceId

+
+

Hierarchy

+
    +
  • DeviceId
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Accessors

+
+
+

Constructors

+
+ +
    + +
  • +

    DeviceId

    +
    +
    +

    Parameters

    +
      +
    • +
      deviceId: string | Uint8Array
      +

      string or Uint8Array to initialize new DeviceId

      +
    +

    Returns DeviceId

+
+

Properties

+
+ +
m_array: Uint8Array
+
+ +
m_str: string
+
+

Accessors

+
+ +
    +
  • get array(): Uint8Array
  • +
  • +

    Return DeviceId as Uint8Array

    +
    +

    Returns Uint8Array

+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Devices.html b/docs/classes/Devices.html new file mode 100644 index 0000000..b5117b0 --- /dev/null +++ b/docs/classes/Devices.html @@ -0,0 +1,903 @@ +Devices | StageLinqJS
+
+ +
+
+
+
+ +

Class Devices

+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • Devices
+
+
+
+ +
+
+

Constructors

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      Optional options: EventEmitterOptions
    +

    Returns Devices

+
+

Properties

+
+ +
#devices: Map<string, Device> = ...
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Devices

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Devices

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Devices

+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Directory.html b/docs/classes/Directory.html new file mode 100644 index 0000000..bd31719 --- /dev/null +++ b/docs/classes/Directory.html @@ -0,0 +1,1077 @@ +Directory | StageLinqJS
+
+ +
+
+
+
+ +

Class Directory

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_handler: ServiceHandler<DirectoryData> = null
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
isBufferedService: false = false
+
+ +
name: "Directory" = 'Directory'
+
+ +
parent: StageLinq
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeAlive: number
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Directory

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Directory

+
+ +
    + +
  • +

    Send Service announcement with list of Service:Port

    +
    +
    +

    Parameters

    +
      +
    • +
      deviceId: DeviceId
    • +
    • +
      socket: Socket
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Send TimeStamp reply to Device

    +
    +
    +

    Parameters

    +
      +
    • +
      token: Uint8Array
      +

      Token from recepient Device

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Directory

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/DirectoryHandler.html b/docs/classes/DirectoryHandler.html new file mode 100644 index 0000000..fa393b0 --- /dev/null +++ b/docs/classes/DirectoryHandler.html @@ -0,0 +1,944 @@ +DirectoryHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class DirectoryHandler

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
name: string = "Directory"
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns DirectoryHandler

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns DirectoryHandler

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Discovery.html b/docs/classes/Discovery.html new file mode 100644 index 0000000..dc7cc1b --- /dev/null +++ b/docs/classes/Discovery.html @@ -0,0 +1,1105 @@ +Discovery | StageLinqJS
+
+ +
+
+
+
+ +

Class Discovery

+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • Discovery
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
announceTimer: Timer
+
+ +
broadcastAddress: string
+
+ +
deviceId: DeviceId = null
+
+ +
hasLooped: boolean = false
+
+ +
options: DiscoveryMessageOptions = null
+
+ +
parent: StageLinq
+
+ +
peers: Map<string, ConnectionInfo> = ...
+
+ +
socket: Socket
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
    + +
  • +

    Announce library to network

    +
    +
    +

    Parameters

    +
      +
    • +
      port: number
      +

      Port for Directory Service

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Broadcast Discovery Message

    +
    +
    +

    Parameters

    +
      +
    • +
      socket: Socket
    • +
    • +
      msg: Buffer
    • +
    • +
      port: number
    • +
    • +
      address: string
    +

    Returns Promise<void>

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Get list of Broadcast-enabled Network Interfaces

    + +

    Returns

    +

    Returns SubnetInfo[]

+
+ +
+
+ +
    + +
  • +

    Get list of devices

    + +

    Returns

    +

    Returns string[]

+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
+
+ +
    + +
  • +

    Listen for new devices on the network and callback when a new one is found.

    +
    +
    +

    Parameters

    +
      +
    • +
      callback: DeviceDiscoveryCallback
      +

      Callback when new device is discovered.

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Discovery

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Discovery

+
+ +
+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Discovery

+
+ +
    + +
  • +

    Unanounce Library to network

    +
    +

    Returns Promise<void>

+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/FileTransfer.html b/docs/classes/FileTransfer.html new file mode 100644 index 0000000..7605861 --- /dev/null +++ b/docs/classes/FileTransfer.html @@ -0,0 +1,1327 @@ +FileTransfer | StageLinqJS
+
+ +
+
+
+
+ +

Class FileTransfer

+
+

Hierarchy

+
    +
  • Service<FileTransferData> +
      +
    • FileTransfer
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
#isAvailable: boolean = true
+
+ +
#txid: number = 1
+
+ +
_handler: ServiceHandler<any> = null
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
isBufferedService: boolean = true
+
+ +
name: string = "FileTransfer"
+
+ +
parent: StageLinq
+
+ +
receivedFile: WriteContext = null
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Accessors

+
+ +
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Reads a file on the device and returns a buffer.

    +
    +
    +

    USE WITH CAUTION! <<

    +
    +
    +

    Downloading seems eat a lot of CPU on the device and might cause it to +be unresponsive while downloading big files. Also, it seems that transfers +top out at around 10MB/sec.

    + +

    Returns

    Contents of the file.

    +
    +
    +

    Parameters

    +
      +
    • +
      source: Source
    • +
    • +
      location: string
      +

      Location of the file on the device.

      +
    +

    Returns Promise<Uint8Array>

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +

    Get Sources from Device

    +
    +
    +

    Parameters

    +
      +
    • +
      sources: string[]
      +

      Array of sources

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Promise will resolve when service is available

    +
    +

    Returns Promise<void>

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      event: "fileTransferProgress"
      +

      The name of the event.

      +
    • +
    • +
      listener: ((source: Source, fileName: string, txid: number, progress: FileTransferProgress) => void)
      +

      The callback function

      +
      +
    +

    Returns FileTransfer

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "fileTransferComplete"
    • +
    • +
      listener: ((source: Source, fileName: string, txid: number) => void)
      +
        +
      • +
          +
        • (source: Source, fileName: string, txid: number): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            source: Source
          • +
          • +
            fileName: string
          • +
          • +
            txid: number
          +

          Returns void

    +

    Returns FileTransfer

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "newSource"
    • +
    • +
      listener: ((source: Source) => void)
      +
        +
      • +
          +
        • (source: Source): void
        • +
        • +
          +

          Parameters

          +
          +

          Returns void

    +

    Returns FileTransfer

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "sourceRemoved"
    • +
    • +
      listener: ((sourceName: string, deviceId: DeviceId) => void)
      +
        +
      • +
          +
        • (sourceName: string, deviceId: DeviceId): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            sourceName: string
          • +
          • +
            deviceId: DeviceId
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns FileTransfer

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransfer

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      txid: number
      +

      Transfer ID for this session

      +
    • +
    • +
      chunkStartId: number
    • +
    • +
      chunkEndId: number
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Request TxId for file

    +
    +
    +

    Parameters

    +
      +
    • +
      filepath: string
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Request current sources attached to device

    +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Request fstat on file from Device

    +
    +
    +

    Parameters

    +
      +
    • +
      filepath: string
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Reply to Devices requesting our sources

    +
    +
    +

    Parameters

    +
      +
    • +
      data: any
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns FileTransfer

+
+ +
+
+ +
    + +
  • +

    Gets new sources and deletes those which have been removed

    +
    +
    +

    Parameters

    +
      +
    • +
      sources: string[]
      +

      an array of current sources from device

      +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Wait for a message from the wire

    + +

    Returns

    +
    +

    Parameters

    +
      +
    • +
      eventMessage: string
    • +
    • +
      messageId: number
    +

    Returns Promise<any>

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/FileTransferHandler.html b/docs/classes/FileTransferHandler.html new file mode 100644 index 0000000..6a926ed --- /dev/null +++ b/docs/classes/FileTransferHandler.html @@ -0,0 +1,946 @@ +FileTransferHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class FileTransferHandler

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
name: "FileTransfer" = "FileTransfer"
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns FileTransferHandler

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns FileTransferHandler

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/ReadContext.html b/docs/classes/ReadContext.html new file mode 100644 index 0000000..71587a4 --- /dev/null +++ b/docs/classes/ReadContext.html @@ -0,0 +1,357 @@ +ReadContext | StageLinqJS
+
+ +
+
+
+
+ +

Class ReadContext

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
buffer: ArrayBuffer
+
+ +
littleEndian: boolean
+
+ +
pos: number
+
+

Methods

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_bytes: number
    +

    Returns string

+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_bytes: number
    +

    Returns Buffer

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_bytes: number
    +

    Returns Uint8Array

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Service.html b/docs/classes/Service.html new file mode 100644 index 0000000..e2ebeae --- /dev/null +++ b/docs/classes/Service.html @@ -0,0 +1,1069 @@ +Service | StageLinqJS
+
+ +
+
+
+
+ +

Class Service<T>Abstract

+
+

Type Parameters

+
    +
  • +

    T

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_handler: ServiceHandler<T> = null
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
isBufferedService: boolean = true
+
+ +
messageBuffer: Buffer = null
+
+ +
name: string = "Service"
+
+ +
parent: StageLinq
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
+
+ +
+
+ +
    + +
  • +

    Creates a new Net.Server for Service

    + +

    Returns

    +

    Returns Promise<Server>

+
+ +
    + +
  • +

    Handle incoming Data from Server Socket

    +
    +
    +

    Parameters

    +
      +
    • +
      data: Buffer
    • +
    • +
      socket: Socket
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +

    Start Service Listener

    + +

    Returns

    +

    Returns Promise<AddressInfo>

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Service<T>

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Service<T>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Service<T>

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      buff: Buffer
    +

    Returns Promise<boolean>

+
+ +
    + +
  • +

    Wait for a message from the wire

    + +

    Returns

    +
    +

    Parameters

    +
      +
    • +
      eventMessage: string
    • +
    • +
      messageId: number
    +

    Returns Promise<T>

+
+ +
+
+ +
    + +
  • +

    Write a length-prefixed Context message to the socket

    + +

    Returns

    true if data written

    +
    +
    +

    Parameters

    +
    +

    Returns Promise<boolean>

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/ServiceHandler.html b/docs/classes/ServiceHandler.html new file mode 100644 index 0000000..f6183b5 --- /dev/null +++ b/docs/classes/ServiceHandler.html @@ -0,0 +1,960 @@ +ServiceHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class ServiceHandler<T>Abstract

+
+

Type Parameters

+
    +
  • +

    T

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_devices: Map<string, Service<T>> = ...
+
+ +
name: string
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns ServiceHandler<T>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns ServiceHandler<T>

+
+ +
+
+ +
    + +
  • +

    Start new service factory function

    + +

    Returns

    +
    +

    Type Parameters

    +
    +
    +

    Parameters

    +
      +
    • +
      ctor: (new (_parent: StageLinq, _serviceHandler?: any, _deviceId?: DeviceId) => T)
      +
        +
      • +
          +
        • new (_parent: StageLinq, _serviceHandler?: any, _deviceId?: DeviceId): T
        • +
        • +
          +

          Parameters

          +
            +
          • +
            _parent: StageLinq
          • +
          • +
            Optional _serviceHandler: any
          • +
          • +
            Optional _deviceId: DeviceId
          +

          Returns T

    • +
    • +
      Optional parent: StageLinq
    • +
    • +
      Optional deviceId: DeviceId
    +

    Returns Promise<T>

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Sources.html b/docs/classes/Sources.html new file mode 100644 index 0000000..98aca1a --- /dev/null +++ b/docs/classes/Sources.html @@ -0,0 +1,906 @@ +Sources | StageLinqJS
+
+ +
+
+
+
+ +

Class Sources

+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • Sources
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_sources: Map<string, Source> = ...
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    Delete Source

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceName: string
      +

      name of the source

      +
    • +
    • +
      deviceId: DeviceId
    +

    Returns void

+
+ +
    + +
  • +

    Download a file from Source

    + +

    Returns

    +
    +

    Parameters

    +
      +
    • +
      source: Source
    • +
    • +
      path: string
    +

    Returns Promise<Uint8Array>

+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +

    Get Source

    + +

    Returns

    +
    +

    Parameters

    +
      +
    • +
      sourceName: string
      +

      Name of source in EngineOS, eg: 'DJ STICK (USB 1)'

      +
    • +
    • +
      deviceId: DeviceId
      +

      DeviceID instance

      +
    +

    Returns Source

+
+ +
+
+ +
    + +
  • +

    Check if sources has Source

    + +

    Returns

    true if has source

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceName: string
      +

      Name of source in EngineOS, eg: 'DJ STICK (USB 1)'

      +
    • +
    • +
      deviceId: DeviceId
      +

      DeviceID instance

      +
    +

    Returns boolean

+
+ +
    + +
  • +

    Check if sources has Source AND source has downloaded DB

    + +

    Returns

    true if has Source AND the source has downloaded DB

    +
    +
    +

    Parameters

    +
      +
    • +
      sourceName: string
      +

      Name of source in EngineOS, eg: 'DJ STICK (USB 1)'

      +
    • +
    • +
      deviceId: DeviceId
      +

      DeviceID instance

      +
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns Sources

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns Sources

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns Sources

+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+

Events

+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/StageLinq.html b/docs/classes/StageLinq.html new file mode 100644 index 0000000..5fc0e71 --- /dev/null +++ b/docs/classes/StageLinq.html @@ -0,0 +1,1006 @@ +StageLinq | StageLinqJS
+
+ +
+
+
+
+ +

Class StageLinq

+
+

Main StageLinq class.

+
+
+

Hierarchy

+
    +
  • EventEmitter +
      +
    • StageLinq
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
beatInfo: BeatInfoHandler = null
+
+ +
databases: Databases = null
+
+ +
devices: Devices = ...
+
+ +
directory: Directory = null
+
+ +
discovery: Discovery = ...
+
+ +
fileTransfer: FileTransferHandler = null
+
+ +
logger: Logger = Logger.instance
+
+ +
+
+ +
servers: Map<string, Server> = ...
+
+ +
services: ServiceHandlers = {}
+
+ +
sources: Sources = null
+
+ +
stateMap: StateMapHandler = null
+
+ +
status: Status = null
+
+ +
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      serverName: string
    • +
    • +
      server: Server
    +

    Returns void

+
+ +
    + +
  • +

    Connect to the StageLinq network.

    +
    +

    Returns Promise<void>

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      serverName: string
    +

    Returns void

+
+ +
    + +
  • +

    Disconnect from the StageLinq network. +Close all open Servers

    +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
    + +
  • +
    +

    Returns

    +

    Returns IterableIterator<[string, Server]>

+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns StageLinq

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StageLinq

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns StageLinq

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/StateMap.html b/docs/classes/StateMap.html new file mode 100644 index 0000000..bec5a98 --- /dev/null +++ b/docs/classes/StateMap.html @@ -0,0 +1,1103 @@ +StateMap | StageLinqJS
+
+ +
+
+
+
+ +

Class StateMap

+
+

StateMap Class

+
+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_handler: ServiceHandler<StateData> = null
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
+
+ +
hasReceivedState: boolean = false
+
+ +
isBufferedService: boolean = true
+
+ +
name: "StateMap" = "StateMap"
+
+ +
parent: StageLinq
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns StateMap

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMap

+
+ +
    + +
  • +

    Respond to StateMap request with rejection

    +
    +
    +

    Parameters

    +
      +
    • +
      state: string
    • +
    • +
      socket: Socket
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns StateMap

+
+ +
    + +
  • +

    Subscribe to StateMap States

    +
    +

    Returns Promise<void>

+
+ +
    + +
  • +

    Send subcribe to state message to device

    +
    +
    +

    Parameters

    +
      +
    • +
      state: string
      +

      Path/Name of the State

      +
    • +
    • +
      interval: number
      +

      TODO clear this up

      +
    • +
    • +
      socket: Socket
    +

    Returns Promise<void>

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/StateMapHandler.html b/docs/classes/StateMapHandler.html new file mode 100644 index 0000000..0d9fb3d --- /dev/null +++ b/docs/classes/StateMapHandler.html @@ -0,0 +1,955 @@ +StateMapHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class StateMapHandler

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
deviceTrackRegister: Map<string, string> = ...
+
+ +
name: "StateMap" = 'StateMap'
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns StateMapHandler

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns StateMapHandler

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/TimeSynchronization.html b/docs/classes/TimeSynchronization.html new file mode 100644 index 0000000..57a258a --- /dev/null +++ b/docs/classes/TimeSynchronization.html @@ -0,0 +1,1122 @@ +TimeSynchronization | StageLinqJS
+
+ +
+
+
+
+ +

Class TimeSynchronization

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
_handler: ServiceHandler<TimeSyncData> = null
+
+ +
avgTimeArray: bigint[] = []
+
+ +
device: Device
+
+ +
deviceId: DeviceId = null
+
+ +
isBufferedService: boolean = false
+
+ +
localTime: bigint
+
+ +
name: "TimeSynchronization" = "TimeSynchronization"
+
+ +
parent: StageLinq
+
+ +
remoteTime: bigint
+
+ +
server: Server = null
+
+ +
serverInfo: AddressInfo
+
+ +
serverStatus: boolean = false
+
+ +
socket: Socket = null
+
+ +
timeout: Timer
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns TimeSynchronization

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronization

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      localTime: bigint
    • +
    • +
      remoteTime: bigint
    +

    Returns void

+
+ +
+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns TimeSynchronization

+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      msgId: number
    • +
    • +
      msgs: bigint[]
    +

    Returns Buffer

+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/TimeSynchronizationHandler.html b/docs/classes/TimeSynchronizationHandler.html new file mode 100644 index 0000000..9345c06 --- /dev/null +++ b/docs/classes/TimeSynchronizationHandler.html @@ -0,0 +1,946 @@ +TimeSynchronizationHandler | StageLinqJS
+
+ +
+
+
+
+ +

Class TimeSynchronizationHandler

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
name: string = 'TimeSync'
+
+ +
parent: StageLinq
+
+ +
captureRejectionSymbol: typeof captureRejectionSymbol
+
+ +
captureRejections: boolean
+

Sets or gets the default captureRejection value for all emitters.

+
+
+ +
defaultMaxListeners: number
+
+ +
errorMonitor: typeof errorMonitor
+

This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

+
+
+

Methods

+
+ +
+
+ +
    + +
  • +

    Alias for emitter.on(eventName, listener).

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
+
+ +
    + +
  • +

    Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      Rest ...args: any[]
    +

    Returns boolean

+
+ +
    + +
  • +

    Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    + +

    Since

    v6.0.0

    +
    +

    Returns (string | symbol)[]

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    + +

    Since

    v1.0.0

    +
    +

    Returns number

+
+ +
+
+ +
    + +
  • +

    Returns the number of listeners listening to the event named eventName.

    + +

    Since

    v3.2.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event being listened for

      +
    +

    Returns number

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Alias for emitter.removeListener().

    + +

    Since

    v10.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.1.101

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    + +

    Since

    v0.3.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v6.0.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
      +

      The name of the event.

      +
    • +
    • +
      listener: ((...args: any[]) => void)
      +

      The callback function

      +
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    + +

    Since

    v9.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional event: string | symbol
    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.1.26

    +
    +
    +

    Parameters

    +
      +
    • +
      eventName: string | symbol
    • +
    • +
      listener: ((...args: any[]) => void)
      +
        +
      • +
          +
        • (...args: any[]): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            Rest ...args: any[]
          +

          Returns void

    +

    Returns TimeSynchronizationHandler

+
+ +
    + +
  • +

    By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    + +

    Since

    v0.3.5

    +
    +
    +

    Parameters

    +
      +
    • +
      n: number
    +

    Returns TimeSynchronizationHandler

+
+ +
+
+ +
+
+ +
    + +
  • +

    Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } +
    + +

    Since

    v15.2.0, v14.17.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter | _DOMEventTarget
    • +
    • +
      name: string | symbol
    +

    Returns Function[]

+
+ +
    + +
  • +

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    + +

    Since

    v0.9.12

    + +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
      +

      The emitter to query

      +
    • +
    • +
      eventName: string | symbol
      +

      The event name

      +
    +

    Returns number

+
+ +
    + +
  • +
    const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })(); +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    + +

    Since

    v13.6.0, v12.16.0

    + +

    Returns

    that iterates eventName events emitted by the emitter

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: EventEmitter
    • +
    • +
      eventName: string
      +

      The name of the event being listened for

      +
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns AsyncIterableIterator<any>

+
+ +
    + +
  • +

    Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    + +

    Since

    v11.13.0, v10.16.0

    +
    +
    +

    Parameters

    +
      +
    • +
      emitter: _NodeEventTarget
    • +
    • +
      eventName: string | symbol
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      emitter: _DOMEventTarget
    • +
    • +
      eventName: string
    • +
    • +
      Optional options: StaticEventEmitterOptions
    +

    Returns Promise<any[]>

+
+ +
    + +
  • +
    const {
    setMaxListeners,
    EventEmitter
    } = require('events');

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    + +

    Since

    v15.4.0

    +
    +
    +

    Parameters

    +
      +
    • +
      Optional n: number
      +

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • +
    • +
      Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
    +

    Returns void

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/WriteContext.html b/docs/classes/WriteContext.html new file mode 100644 index 0000000..9dfd813 --- /dev/null +++ b/docs/classes/WriteContext.html @@ -0,0 +1,364 @@ +WriteContext | StageLinqJS
+
+ +
+
+
+
+ +

Class WriteContext

+
+

Hierarchy

+
+
+
+
+ +
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
autoGrow: boolean
+
+ +
buffer: ArrayBuffer
+
+ +
littleEndian: boolean
+
+ +
pos: number
+
+

Methods

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_size: number
    +

    Returns void

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_buffer: Uint8Array
    • +
    • +
      p_bytes: number = -1
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_string: string
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_value: number
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_string: string
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_value: number
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_value: number
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_value: bigint
    +

    Returns number

+
+ +
    + +
  • +
    +

    Parameters

    +
      +
    • +
      p_value: number
    +

    Returns number

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/enums/Action.html b/docs/enums/Action.html new file mode 100644 index 0000000..b0b785e --- /dev/null +++ b/docs/enums/Action.html @@ -0,0 +1,71 @@ +Action | StageLinqJS
+
+ +
+
+
+
+ +

Enumeration Action

+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
Login: "DISCOVERER_HOWDY_"
+
+ +
Logout: "DISCOVERER_EXIT_"
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/enums/DeviceType.html b/docs/enums/DeviceType.html new file mode 100644 index 0000000..ba2a761 --- /dev/null +++ b/docs/enums/DeviceType.html @@ -0,0 +1,78 @@ +DeviceType | StageLinqJS
+
+ +
+
+
+
+ +

Enumeration DeviceType

+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
Controller: "CONTROLLER"
+
+ +
Mixer: "MIXER"
+
+ +
Player: "PLAYER"
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/enums/MessageId.html b/docs/enums/MessageId.html new file mode 100644 index 0000000..c900a3e --- /dev/null +++ b/docs/enums/MessageId.html @@ -0,0 +1,78 @@ +MessageId | StageLinqJS
+
+ +
+
+
+
+ +

Enumeration MessageId

+
+
+
+ +
+
+

Enumeration Members

+
+
+

Enumeration Members

+
+ +
ServicesAnnouncement: 0
+
+ +
ServicesRequest: 2
+
+ +
TimeStamp: 1
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/enums/ServiceList.html b/docs/enums/ServiceList.html new file mode 100644 index 0000000..c4729dd --- /dev/null +++ b/docs/enums/ServiceList.html @@ -0,0 +1,92 @@ +ServiceList | StageLinqJS
+
+ +
+
+
+
+ +

Enumeration ServiceList

+
+
+
+ +
+
+

Enumeration Members

+
+ +
BeatInfo: "BeatInfo"
+
+ +
Directory: "Directory"
+
+ +
FileTransfer: "FileTransfer"
+
+ +
StateMap: "StateMap"
+
+ +
TimeSynchronization: "TimeSynchronization"
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/functions/getTempFilePath.html b/docs/functions/getTempFilePath.html new file mode 100644 index 0000000..4c36703 --- /dev/null +++ b/docs/functions/getTempFilePath.html @@ -0,0 +1,124 @@ +getTempFilePath | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/functions/sleep.html b/docs/functions/sleep.html new file mode 100644 index 0000000..7cd24f0 --- /dev/null +++ b/docs/functions/sleep.html @@ -0,0 +1,118 @@ +sleep | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..1e7eb48 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,171 @@ +StageLinqJS
+
+ +
+
+
+
+

StageLinqJS

+
+ +

StageLinqJS - A Robust Implementation of StageLinq Library

+
+ + +

Description

+
+

This branch implements the methods demonstrated previously in the StageLinq Listener branch. +Rather than searching out devices via discovery, we are able to have devices initiate connections to the library. As demonstrated, this approach:

+
    +
  • Greatly reduces complexity.

    +
  • +
  • Speeds up the connection & initialization process (almost every sleep() call has been eliminated without and affect thus far).

    +
  • +
  • Handles disconnection and reconnection of devices gracefully and simply.

    +
  • +
  • Allows connections from devices we couldn't use previously (i.e. x1800/x1850 mixers).

    +
  • +
+ + +

Implementing Selected Services

+
+

We can choose which services to implement by including them in the StageLinqOptions parameter passed to Stagelinq on initialization.

+
const stageLinqOptions: StageLinqOptions = {
downloadDbSources: false,
maxRetries: 3,
actingAs: ActingAsDevice.StageLinqJS,
services: [
ServiceList.StateMap,
ServiceList.BeatInfo,
ServiceList.FileTransfer,
],
} +
+ + +

Discovery

+
+
stageLinq.discovery.on('listening', () => {
console.log(`[DISCOVERY] Listening`)
});

stageLinq.discovery.on('announcing', (info) => {
console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`)
});

stageLinq.discovery.on('newDiscoveryDevice', (info) => {
console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`)
});

stageLinq.discovery.on('updatedDiscoveryDevice', (info) => {
console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`)
}); +
+ + +

StateMap

+
+
stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => {
console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`);
service.subscribe();

// To Utilize NowPlaying Status updates
stageLinq.status.addPlayer({
stateMap: service,
address: service.socket.remoteAddress,
port: service.socket.remotePort,
deviceId: service.deviceId,
})
});

stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage<StateData>) => {
console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`);
}); +
+ + +

Using NowPlaying-type updates from StageLinq.status

+
+
stageLinq.status.on('trackLoaded', async (status) => {
console.log(`[STATUS] Track Loaded ${status.deviceId.string}`);
});

stageLinq.status.on('nowPlaying', async (status) => {
console.log(`[STATUS] Now Playing ${status.deviceId.string}`);
});

stageLinq.status.on('stateChanged', async (status) => {
console.log(`[STATUS] State Changed ${status.deviceId.string}`);
}); +
+ + +

FileTransfer & Databases

+
+
stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => {
console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`);
});

stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => {
console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`);
});

stageLinq.fileTransfer.on('newSource', (source: Source) => {
console.log(`[FILETRANSFER] Source Available: (${source.name})`);
});

stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => {
console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`);
});

stageLinq.databases.on('dbDownloaded', (source: Source) => {
console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`);
}); +
+ + +

BeatInfo

+
+
const beatOptions = {
// Resolution for triggering callback
// 0 = every message WARNING, it's a lot!
// 1 = every beat
// 4 = every 4 beats
// .25 = every 1/4 beat
everyNBeats: 1,
}

// User callback function.
// Will be triggered everytime a player's beat counter crosses the resolution threshold
function beatCallback(bd: ServiceMessage<BeatData>,) {
let deckBeatString = ""
for (let i = 0; i < bd.message.deckCount; i++) {
deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} `
}
console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`);
}

//// callback is optional, BeatInfo messages can be consumed by:
// - user callback
// - event messages
// - reading the register
const beatMethod = {
useCallback: true,
useEvent: false,
useRegister: false,
};


stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => {
console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`)


if (beatMethod.useCallback) {
beatInfo.startBeatInfo(beatOptions, beatCallback);
}

if (beatMethod.useEvent) {
beatInfo.startBeatInfo(beatOptions);
stageLinq.beatInfo.on('beatMsg', (bd) => {
if (bd.message) {
beatCallback(bd);
}
});
}

if (beatMethod.useRegister) {
beatInfo.startBeatInfo(beatOptions);

function beatFunc(beatInfo: BeatInfo) {
const beatData = beatInfo.getBeatData();
if (beatData) beatCallback(beatData);
}

setTimeout(beatFunc, 4000, beatInfo)
}

})
+
+ + +

Additional Notes on the Listener Method

+
+
    +
  • The Directory service is the only one which is required as it is the initial connection endpoint for remote devices.

    +
  • +
  • Only tokens of a specific structure seem to work, otherwise devices won't initiate a connection. One requirement seems to be that they start with 0xFFFFFFFFFFFF, but some more research into this is needed.

    +
  • +
+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/BeatData.html b/docs/interfaces/BeatData.html new file mode 100644 index 0000000..31aeddb --- /dev/null +++ b/docs/interfaces/BeatData.html @@ -0,0 +1,82 @@ +BeatData | StageLinqJS
+
+ +
+
+
+
+ +

Interface BeatData

+
+

Hierarchy

+
    +
  • BeatData
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
clock: bigint
+
+ +
deck: deckBeatData[]
+
+ +
deckCount: number
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/ConnectionInfo.html b/docs/interfaces/ConnectionInfo.html new file mode 100644 index 0000000..e854da6 --- /dev/null +++ b/docs/interfaces/ConnectionInfo.html @@ -0,0 +1,148 @@ +ConnectionInfo | StageLinqJS
+
+ +
+
+
+
+ +

Interface ConnectionInfo

+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+ +
action: string
+
+ +
address: string
+
+ +
addressPort?: string
+
+ +
device?: {
    decks: number;
    name: string;
    type: string;
}
+
+

Type declaration

+
    +
  • +
    decks: number
  • +
  • +
    name: string
  • +
  • +
    type: string
+
+ +
deviceId?: DeviceId
+
+ +
port: number
+
+ +
software: {
    name: string;
    version: string;
}
+
+

Type declaration

+
    +
  • +
    name: string
  • +
  • +
    version: string
+
+ +
source: string
+
+ +
token: Uint8Array
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/DirectoryData.html b/docs/interfaces/DirectoryData.html new file mode 100644 index 0000000..8d77e55 --- /dev/null +++ b/docs/interfaces/DirectoryData.html @@ -0,0 +1,68 @@ +DirectoryData | StageLinqJS
+
+ +
+
+
+
+ +

Interface DirectoryData

+
+

Hierarchy

+
    +
  • DirectoryData
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
deviceId: string
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/DiscoveryMessage.html b/docs/interfaces/DiscoveryMessage.html new file mode 100644 index 0000000..022d2e2 --- /dev/null +++ b/docs/interfaces/DiscoveryMessage.html @@ -0,0 +1,112 @@ +DiscoveryMessage | StageLinqJS
+
+ +
+
+
+
+ +

Interface DiscoveryMessage

+
+

Hierarchy

+
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
action: string
+
+ +
deviceId?: DeviceId
+
+ +
port: number
+
+ +
software: {
    name: string;
    version: string;
}
+
+

Type declaration

+
    +
  • +
    name: string
  • +
  • +
    version: string
+
+ +
source: string
+
+ +
token: Uint8Array
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/DiscoveryMessageOptions.html b/docs/interfaces/DiscoveryMessageOptions.html new file mode 100644 index 0000000..67ef788 --- /dev/null +++ b/docs/interfaces/DiscoveryMessageOptions.html @@ -0,0 +1,96 @@ +DiscoveryMessageOptions | StageLinqJS
+
+ +
+
+
+
+ +

Interface DiscoveryMessageOptions

+
+

Hierarchy

+
    +
  • DiscoveryMessageOptions
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
name: string
+
+ +
port?: number
+
+ +
source: string
+
+ +
token: Uint8Array
+
+ +
version: string
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/FileTransferInfo.html b/docs/interfaces/FileTransferInfo.html new file mode 100644 index 0000000..4636891 --- /dev/null +++ b/docs/interfaces/FileTransferInfo.html @@ -0,0 +1,75 @@ +FileTransferInfo | StageLinqJS
+
+ +
+
+
+
+ +

Interface FileTransferInfo

+
+

Hierarchy

+
    +
  • FileTransferInfo
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
size: number
+
+ +
txid: number
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/FileTransferProgress.html b/docs/interfaces/FileTransferProgress.html new file mode 100644 index 0000000..20c6ed1 --- /dev/null +++ b/docs/interfaces/FileTransferProgress.html @@ -0,0 +1,89 @@ +FileTransferProgress | StageLinqJS
+
+ +
+
+
+
+ +

Interface FileTransferProgress

+
+

Hierarchy

+
    +
  • FileTransferProgress
+
+
+
+ +
+
+

Properties

+
+ +
bytesDownloaded: number
+
+ +
percentComplete: number
+
+ +
sizeLeft: number
+
+ +
total: number
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/PlayerLayerState.html b/docs/interfaces/PlayerLayerState.html new file mode 100644 index 0000000..c4894c9 --- /dev/null +++ b/docs/interfaces/PlayerLayerState.html @@ -0,0 +1,152 @@ +PlayerLayerState | StageLinqJS
+
+ +
+
+
+
+ +

Interface PlayerLayerState

+
+

Hierarchy

+
    +
  • PlayerLayerState
+
+
+
+ +
+
+

Properties

+
+ +
artist?: string
+
+ +
currentBpm?: number
+
+ +
externalMixerVolume?: number
+
+ +
fileLocation?: string
+
+ +
hasTrackData?: boolean
+
+ +
jogColor?: string
+
+ +
layer: string
+
+ +
play?: boolean
+
+ +
playState?: boolean
+
+ +
player?: string
+
+ +
songLoaded?: boolean
+
+ +
title?: string
+
+ +
trackNetworkPath?: string
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/PlayerStatus.html b/docs/interfaces/PlayerStatus.html new file mode 100644 index 0000000..f63d594 --- /dev/null +++ b/docs/interfaces/PlayerStatus.html @@ -0,0 +1,222 @@ +PlayerStatus | StageLinqJS
+
+ +
+
+
+
+ +

Interface PlayerStatus

+
+

Hierarchy

+
    +
  • PlayerStatus
+
+
+
+ +
+
+

Properties

+
+ +
address: string
+
+ +
artist: string
+
+ +
currentBpm: number
+
+ +
dbSourceName: string
+
+ +
deck: string
+
+ +
deviceId: DeviceId
+
+ +
externalMixerVolume: number
+
+ +
fileLocation: string
+
+ +
hasTrackData: boolean
+
+ +
jogColor: string
+
+ +
layer: string
+
+ +
masterStatus: boolean
+
+ +
masterTempo: number
+
+ +
play: boolean
+
+ +
playState: boolean
+
+ +
player: number
+
+ +
port: number
+
+ +
songLoaded: boolean
+
+ +
source: string
+
+ +
title: string
+
+ +
trackNetworkPath: string
+
+ +
trackPath: string
+
+ +
trackPathAbsolute: string
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/ServiceHandlers.html b/docs/interfaces/ServiceHandlers.html new file mode 100644 index 0000000..ff8a621 --- /dev/null +++ b/docs/interfaces/ServiceHandlers.html @@ -0,0 +1,115 @@ +ServiceHandlers | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/ServiceMessage.html b/docs/interfaces/ServiceMessage.html new file mode 100644 index 0000000..7d45522 --- /dev/null +++ b/docs/interfaces/ServiceMessage.html @@ -0,0 +1,94 @@ +ServiceMessage | StageLinqJS
+
+ +
+
+
+
+ +

Interface ServiceMessage<T>

+
+

Type Parameters

+
    +
  • +

    T

+
+

Hierarchy

+
    +
  • ServiceMessage
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
deviceId: DeviceId
+
+ +
id: number
+
+ +
message: T
+
+ +
socket: Socket
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/Source.html b/docs/interfaces/Source.html new file mode 100644 index 0000000..e0c530b --- /dev/null +++ b/docs/interfaces/Source.html @@ -0,0 +1,110 @@ +Source | StageLinqJS
+
+ +
+
+
+
+ +

Interface Source

+
+

Hierarchy

+
    +
  • Source
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
database: {
    connection?: DbConnection;
    local?: {
        path: string;
    };
    location: string;
    remote?: {
        device: string;
        location: string;
    };
    size: number;
}
+
+

Type declaration

+
    +
  • +
    Optional connection?: DbConnection
  • +
  • +
    Optional local?: {
        path: string;
    }
    +
      +
    • +
      path: string
  • +
  • +
    location: string
  • +
  • +
    Optional remote?: {
        device: string;
        location: string;
    }
    +
      +
    • +
      device: string
    • +
    • +
      location: string
  • +
  • +
    size: number
+
+ +
deviceId: DeviceId
+
+ +
name: string
+
+ +
service: FileTransfer
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/StageLinqOptions.html b/docs/interfaces/StageLinqOptions.html new file mode 100644 index 0000000..fbc611d --- /dev/null +++ b/docs/interfaces/StageLinqOptions.html @@ -0,0 +1,89 @@ +StageLinqOptions | StageLinqJS
+
+ +
+
+
+
+ +

Interface StageLinqOptions

+
+

Hierarchy

+
    +
  • StageLinqOptions
+
+
+
+ +
+
+

Properties

+
+ +
+
+ +
downloadDbSources?: boolean
+
+ +
maxRetries?: number
+
+ +
services?: ServiceList[]
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/StateData.html b/docs/interfaces/StateData.html new file mode 100644 index 0000000..776d0c2 --- /dev/null +++ b/docs/interfaces/StateData.html @@ -0,0 +1,100 @@ +StateData | StageLinqJS
+
+ +
+
+
+
+ +

Interface StateData

+
+

Hierarchy

+
    +
  • StateData
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
interval?: number
+
+ +
json?: {
    state?: boolean;
    string?: string;
    type: number;
    value?: number;
}
+
+

Type declaration

+
    +
  • +
    Optional state?: boolean
  • +
  • +
    Optional string?: string
  • +
  • +
    type: number
  • +
  • +
    Optional value?: number
+
+ +
name?: string
+
+ +
service: StateMap
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/TimeSyncData.html b/docs/interfaces/TimeSyncData.html new file mode 100644 index 0000000..8d361e8 --- /dev/null +++ b/docs/interfaces/TimeSyncData.html @@ -0,0 +1,75 @@ +TimeSyncData | StageLinqJS
+
+ +
+
+
+
+ +

Interface TimeSyncData

+
+

Hierarchy

+
    +
  • TimeSyncData
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
msgs: bigint[]
+
+ +
timestamp: bigint
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/Track.html b/docs/interfaces/Track.html new file mode 100644 index 0000000..61af060 --- /dev/null +++ b/docs/interfaces/Track.html @@ -0,0 +1,397 @@ +Track | StageLinqJS
+
+ +
+
+
+
+ +

Interface Track

+
+

Hierarchy

+
    +
  • Track
+
+
+
+ +
+
+

Properties

+
+ +
activeOnLoadLoops: number
+
+ +
album: string
+
+ +
albumArt: string
+
+ +
albumArtId: number
+
+ +
artist: string
+
+ +
beatData: Buffer
+
+ +
bitrate: number
+
+ +
bpm: number
+
+ +
bpmAnalyzed: number
+
+ +
comment: string
+
+ +
composer: string
+
+ +
dateAdded: string
+
+ +
dateCreated: string
+
+ +
explicitLyrics: boolean
+
+ +
fileBytes: number
+
+ +
fileType: string
+
+ +
filename: string
+
+ +
genre: string
+
+ +
id: number
+
+ +
isAnalyzed: boolean
+
+ +
isAvailable: boolean
+
+ +
isBeatGridLocked: boolean
+
+ +
isMetadataImported: boolean
+
+ +
isMetadataOfPackedTrackChanged: boolean
+
+ +
isPerfomanceDataOfPackedTrackChanged: boolean
+
+ +
isPlayed: boolean
+
+ +
key: number
+
+ +
label: string
+
+ +
length: number
+
+ +
loops: Buffer
+
+ +
originDatabaseUuid: string
+
+ +
originTrackId: number
+
+ +
overviewWaveFormData: Buffer
+
+ +
path: string
+
+ +
pdbImportKey: number
+
+ +
playOrder: number
+
+ +
playedIndicator: number
+
+ +
quickCues: Buffer
+
+ +
rating: number
+
+ +
remixer: string
+
+ +
streamingFlags: number
+
+ +
streamingSource: string
+
+ +
thirdPartySourceId: number
+
+ +
timeLastPlayed: string
+
+ +
title: string
+
+ +
trackData: Buffer
+
+ +
uri: string
+
+ +
year: number
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html new file mode 100644 index 0000000..f31e88c --- /dev/null +++ b/docs/modules.html @@ -0,0 +1,187 @@ +StageLinqJS
+
+ +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/IpAddress.html b/docs/types/IpAddress.html new file mode 100644 index 0000000..5ecb665 --- /dev/null +++ b/docs/types/IpAddress.html @@ -0,0 +1,109 @@ +IpAddress | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/IpAddressPort.html b/docs/types/IpAddressPort.html new file mode 100644 index 0000000..08fc63d --- /dev/null +++ b/docs/types/IpAddressPort.html @@ -0,0 +1,109 @@ +IpAddressPort | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/Mixer.html b/docs/types/Mixer.html new file mode 100644 index 0000000..42e457e --- /dev/null +++ b/docs/types/Mixer.html @@ -0,0 +1,109 @@ +Mixer | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/Player.html b/docs/types/Player.html new file mode 100644 index 0000000..13ecc5e --- /dev/null +++ b/docs/types/Player.html @@ -0,0 +1,109 @@ +Player | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/PlayerDeck.html b/docs/types/PlayerDeck.html new file mode 100644 index 0000000..bc86e3e --- /dev/null +++ b/docs/types/PlayerDeck.html @@ -0,0 +1,109 @@ +PlayerDeck | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/ServiceData.html b/docs/types/ServiceData.html new file mode 100644 index 0000000..f8d458e --- /dev/null +++ b/docs/types/ServiceData.html @@ -0,0 +1,120 @@ +ServiceData | StageLinqJS
+
+ +
+
+
+
+ +

Type alias ServiceData

+
ServiceData: {
    deviceId?: DeviceId;
    name?: string;
    service?: InstanceType<typeof Service>;
    socket?: Socket;
}
+
+

Type declaration

+
    +
  • +
    Optional deviceId?: DeviceId
  • +
  • +
    Optional name?: string
  • +
  • +
    Optional service?: InstanceType<typeof Service>
  • +
  • +
    Optional socket?: Socket
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/types/StateMapDevice.html b/docs/types/StateMapDevice.html new file mode 100644 index 0000000..7a9fc33 --- /dev/null +++ b/docs/types/StateMapDevice.html @@ -0,0 +1,109 @@ +StateMapDevice | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/ANNOUNCEMENT_INTERVAL.html b/docs/variables/ANNOUNCEMENT_INTERVAL.html new file mode 100644 index 0000000..63dd0a6 --- /dev/null +++ b/docs/variables/ANNOUNCEMENT_INTERVAL.html @@ -0,0 +1,109 @@ +ANNOUNCEMENT_INTERVAL | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/ActingAsDevice.html b/docs/variables/ActingAsDevice.html new file mode 100644 index 0000000..10bacde --- /dev/null +++ b/docs/variables/ActingAsDevice.html @@ -0,0 +1,114 @@ +ActingAsDevice | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/CHUNK_SIZE.html b/docs/variables/CHUNK_SIZE.html new file mode 100644 index 0000000..b0a65fb --- /dev/null +++ b/docs/variables/CHUNK_SIZE.html @@ -0,0 +1,109 @@ +CHUNK_SIZE | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/CONNECT_TIMEOUT.html b/docs/variables/CONNECT_TIMEOUT.html new file mode 100644 index 0000000..773125a --- /dev/null +++ b/docs/variables/CONNECT_TIMEOUT.html @@ -0,0 +1,109 @@ +CONNECT_TIMEOUT | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/DISCOVERY_MESSAGE_MARKER.html b/docs/variables/DISCOVERY_MESSAGE_MARKER.html new file mode 100644 index 0000000..4971e25 --- /dev/null +++ b/docs/variables/DISCOVERY_MESSAGE_MARKER.html @@ -0,0 +1,109 @@ +DISCOVERY_MESSAGE_MARKER | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/DOWNLOAD_TIMEOUT.html b/docs/variables/DOWNLOAD_TIMEOUT.html new file mode 100644 index 0000000..d5f7328 --- /dev/null +++ b/docs/variables/DOWNLOAD_TIMEOUT.html @@ -0,0 +1,109 @@ +DOWNLOAD_TIMEOUT | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/LISTEN_PORT.html b/docs/variables/LISTEN_PORT.html new file mode 100644 index 0000000..b8d1132 --- /dev/null +++ b/docs/variables/LISTEN_PORT.html @@ -0,0 +1,109 @@ +LISTEN_PORT | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/LISTEN_TIMEOUT.html b/docs/variables/LISTEN_TIMEOUT.html new file mode 100644 index 0000000..87c0449 --- /dev/null +++ b/docs/variables/LISTEN_TIMEOUT.html @@ -0,0 +1,109 @@ +LISTEN_TIMEOUT | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/MESSAGE_TIMEOUT.html b/docs/variables/MESSAGE_TIMEOUT.html new file mode 100644 index 0000000..4cc7765 --- /dev/null +++ b/docs/variables/MESSAGE_TIMEOUT.html @@ -0,0 +1,109 @@ +MESSAGE_TIMEOUT | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/StageLinqValueObj.html b/docs/variables/StageLinqValueObj.html new file mode 100644 index 0000000..b1fb959 --- /dev/null +++ b/docs/variables/StageLinqValueObj.html @@ -0,0 +1,504 @@ +StageLinqValueObj | StageLinqJS
+
+ +
+
+
+
+ +

Variable StageLinqValueObjConst

+
StageLinqValueObj: {
    mixer: {
        MixerCH1faderPosition: string;
        MixerCH2faderPosition: string;
        MixerCH3faderPosition: string;
        MixerCH4faderPosition: string;
        MixerChannelAssignment1: string;
        MixerChannelAssignment2: string;
        MixerChannelAssignment3: string;
        MixerChannelAssignment4: string;
        MixerCrossfaderPosition: string;
        MixerNumberOfChannels: string;
    };
    player: {
        EngineDeck1CurrentBPM: string;
        EngineDeck1ExternalMixerVolume: string;
        EngineDeck1ExternalScratchWheelTouch: string;
        EngineDeck1PadsView: string;
        EngineDeck1Play: string;
        EngineDeck1PlayState: string;
        EngineDeck1PlayStatePath: string;
        EngineDeck1Speed: string;
        EngineDeck1SpeedNeutral: string;
        EngineDeck1SpeedOffsetDown: string;
        EngineDeck1SpeedOffsetUp: string;
        EngineDeck1SpeedRange: string;
        EngineDeck1SpeedState: string;
        EngineDeck1SyncMode: string;
        EngineDeck1TrackArtistName: string;
        EngineDeck1TrackBleep: string;
        EngineDeck1TrackCuePosition: string;
        EngineDeck1TrackCurrentBPM: string;
        EngineDeck1TrackCurrentKeyIndex: string;
        EngineDeck1TrackCurrentLoopInPosition: string;
        EngineDeck1TrackCurrentLoopOutPosition: string;
        EngineDeck1TrackCurrentLoopSizeInBeats: string;
        EngineDeck1TrackKeyLock: string;
        EngineDeck1TrackLoopEnableState: string;
        EngineDeck1TrackLoopQuickLoop1: string;
        EngineDeck1TrackLoopQuickLoop2: string;
        EngineDeck1TrackLoopQuickLoop3: string;
        EngineDeck1TrackLoopQuickLoop4: string;
        EngineDeck1TrackLoopQuickLoop5: string;
        EngineDeck1TrackLoopQuickLoop6: string;
        EngineDeck1TrackLoopQuickLoop7: string;
        EngineDeck1TrackLoopQuickLoop8: string;
        EngineDeck1TrackPlayPauseLEDState: string;
        EngineDeck1TrackSampleRate: string;
        EngineDeck1TrackSongAnalyzed: string;
        EngineDeck1TrackSongLoaded: string;
        EngineDeck1TrackSongName: string;
        EngineDeck1TrackSoundSwitchGUID: string;
        EngineDeck1TrackTrackBytes: string;
        EngineDeck1TrackTrackData: string;
        EngineDeck1TrackTrackLength: string;
        EngineDeck1TrackTrackName: string;
        EngineDeck1TrackTrackNetworkPath: string;
        EngineDeck1TrackTrackURI: string;
        EngineDeck1TrackTrackWasPlayed: string;
        EngineDeck2CurrentBPM: string;
        EngineDeck2ExternalMixerVolume: string;
        EngineDeck2ExternalScratchWheelTouch: string;
        EngineDeck2PadsView: string;
        EngineDeck2Play: string;
        EngineDeck2PlayState: string;
        EngineDeck2PlayStatePath: string;
        EngineDeck2Speed: string;
        EngineDeck2SpeedNeutral: string;
        EngineDeck2SpeedOffsetDown: string;
        EngineDeck2SpeedOffsetUp: string;
        EngineDeck2SpeedRange: string;
        EngineDeck2SpeedState: string;
        EngineDeck2SyncMode: string;
        EngineDeck2TrackArtistName: string;
        EngineDeck2TrackBleep: string;
        EngineDeck2TrackCuePosition: string;
        EngineDeck2TrackCurrentBPM: string;
        EngineDeck2TrackCurrentKeyIndex: string;
        EngineDeck2TrackCurrentLoopInPosition: string;
        EngineDeck2TrackCurrentLoopOutPosition: string;
        EngineDeck2TrackCurrentLoopSizeInBeats: string;
        EngineDeck2TrackKeyLock: string;
        EngineDeck2TrackLoopEnableState: string;
        EngineDeck2TrackLoopQuickLoop1: string;
        EngineDeck2TrackLoopQuickLoop2: string;
        EngineDeck2TrackLoopQuickLoop3: string;
        EngineDeck2TrackLoopQuickLoop4: string;
        EngineDeck2TrackLoopQuickLoop5: string;
        EngineDeck2TrackLoopQuickLoop6: string;
        EngineDeck2TrackLoopQuickLoop7: string;
        EngineDeck2TrackLoopQuickLoop8: string;
        EngineDeck2TrackPlayPauseLEDState: string;
        EngineDeck2TrackSampleRate: string;
        EngineDeck2TrackSongAnalyzed: string;
        EngineDeck2TrackSongLoaded: string;
        EngineDeck2TrackSongName: string;
        EngineDeck2TrackSoundSwitchGUID: string;
        EngineDeck2TrackTrackBytes: string;
        EngineDeck2TrackTrackData: string;
        EngineDeck2TrackTrackLength: string;
        EngineDeck2TrackTrackName: string;
        EngineDeck2TrackTrackNetworkPath: string;
        EngineDeck2TrackTrackURI: string;
        EngineDeck2TrackTrackWasPlayed: string;
        EngineDeck3CurrentBPM: string;
        EngineDeck3ExternalMixerVolume: string;
        EngineDeck3ExternalScratchWheelTouch: string;
        EngineDeck3PadsView: string;
        EngineDeck3Play: string;
        EngineDeck3PlayState: string;
        EngineDeck3PlayStatePath: string;
        EngineDeck3Speed: string;
        EngineDeck3SpeedNeutral: string;
        EngineDeck3SpeedOffsetDown: string;
        EngineDeck3SpeedOffsetUp: string;
        EngineDeck3SpeedRange: string;
        EngineDeck3SpeedState: string;
        EngineDeck3SyncMode: string;
        EngineDeck3TrackArtistName: string;
        EngineDeck3TrackBleep: string;
        EngineDeck3TrackCuePosition: string;
        EngineDeck3TrackCurrentBPM: string;
        EngineDeck3TrackCurrentKeyIndex: string;
        EngineDeck3TrackCurrentLoopInPosition: string;
        EngineDeck3TrackCurrentLoopOutPosition: string;
        EngineDeck3TrackCurrentLoopSizeInBeats: string;
        EngineDeck3TrackKeyLock: string;
        EngineDeck3TrackLoopEnableState: string;
        EngineDeck3TrackLoopQuickLoop1: string;
        EngineDeck3TrackLoopQuickLoop2: string;
        EngineDeck3TrackLoopQuickLoop3: string;
        EngineDeck3TrackLoopQuickLoop4: string;
        EngineDeck3TrackLoopQuickLoop5: string;
        EngineDeck3TrackLoopQuickLoop6: string;
        EngineDeck3TrackLoopQuickLoop7: string;
        EngineDeck3TrackLoopQuickLoop8: string;
        EngineDeck3TrackPlayPauseLEDState: string;
        EngineDeck3TrackSampleRate: string;
        EngineDeck3TrackSongAnalyzed: string;
        EngineDeck3TrackSongLoaded: string;
        EngineDeck3TrackSongName: string;
        EngineDeck3TrackSoundSwitchGUID: string;
        EngineDeck3TrackTrackBytes: string;
        EngineDeck3TrackTrackData: string;
        EngineDeck3TrackTrackLength: string;
        EngineDeck3TrackTrackName: string;
        EngineDeck3TrackTrackNetworkPath: string;
        EngineDeck3TrackTrackURI: string;
        EngineDeck3TrackTrackWasPlayed: string;
        EngineDeck4CurrentBPM: string;
        EngineDeck4ExternalMixerVolume: string;
        EngineDeck4ExternalScratchWheelTouch: string;
        EngineDeck4PadsView: string;
        EngineDeck4Play: string;
        EngineDeck4PlayState: string;
        EngineDeck4PlayStatePath: string;
        EngineDeck4Speed: string;
        EngineDeck4SpeedNeutral: string;
        EngineDeck4SpeedOffsetDown: string;
        EngineDeck4SpeedOffsetUp: string;
        EngineDeck4SpeedRange: string;
        EngineDeck4SpeedState: string;
        EngineDeck4SyncMode: string;
        EngineDeck4TrackArtistName: string;
        EngineDeck4TrackBleep: string;
        EngineDeck4TrackCuePosition: string;
        EngineDeck4TrackCurrentBPM: string;
        EngineDeck4TrackCurrentKeyIndex: string;
        EngineDeck4TrackCurrentLoopInPosition: string;
        EngineDeck4TrackCurrentLoopOutPosition: string;
        EngineDeck4TrackCurrentLoopSizeInBeats: string;
        EngineDeck4TrackKeyLock: string;
        EngineDeck4TrackLoopEnableState: string;
        EngineDeck4TrackLoopQuickLoop1: string;
        EngineDeck4TrackLoopQuickLoop2: string;
        EngineDeck4TrackLoopQuickLoop3: string;
        EngineDeck4TrackLoopQuickLoop4: string;
        EngineDeck4TrackLoopQuickLoop5: string;
        EngineDeck4TrackLoopQuickLoop6: string;
        EngineDeck4TrackLoopQuickLoop7: string;
        EngineDeck4TrackLoopQuickLoop8: string;
        EngineDeck4TrackPlayPauseLEDState: string;
        EngineDeck4TrackSampleRate: string;
        EngineDeck4TrackSongAnalyzed: string;
        EngineDeck4TrackSongLoaded: string;
        EngineDeck4TrackSongName: string;
        EngineDeck4TrackSoundSwitchGUID: string;
        EngineDeck4TrackTrackBytes: string;
        EngineDeck4TrackTrackData: string;
        EngineDeck4TrackTrackLength: string;
        EngineDeck4TrackTrackName: string;
        EngineDeck4TrackTrackNetworkPath: string;
        EngineDeck4TrackTrackURI: string;
        EngineDeck4TrackTrackWasPlayed: string;
        EngineDeckCount: string;
        EngineMasterMasterTempo: string;
        EngineSyncNetworkMasterStatus: string;
    };
} = ...
+
+

Type declaration

+
    +
  • +
    mixer: {
        MixerCH1faderPosition: string;
        MixerCH2faderPosition: string;
        MixerCH3faderPosition: string;
        MixerCH4faderPosition: string;
        MixerChannelAssignment1: string;
        MixerChannelAssignment2: string;
        MixerChannelAssignment3: string;
        MixerChannelAssignment4: string;
        MixerCrossfaderPosition: string;
        MixerNumberOfChannels: string;
    }
    +
      +
    • +
      MixerCH1faderPosition: string
    • +
    • +
      MixerCH2faderPosition: string
    • +
    • +
      MixerCH3faderPosition: string
    • +
    • +
      MixerCH4faderPosition: string
    • +
    • +
      MixerChannelAssignment1: string
    • +
    • +
      MixerChannelAssignment2: string
    • +
    • +
      MixerChannelAssignment3: string
    • +
    • +
      MixerChannelAssignment4: string
    • +
    • +
      MixerCrossfaderPosition: string
    • +
    • +
      MixerNumberOfChannels: string
  • +
  • +
    player: {
        EngineDeck1CurrentBPM: string;
        EngineDeck1ExternalMixerVolume: string;
        EngineDeck1ExternalScratchWheelTouch: string;
        EngineDeck1PadsView: string;
        EngineDeck1Play: string;
        EngineDeck1PlayState: string;
        EngineDeck1PlayStatePath: string;
        EngineDeck1Speed: string;
        EngineDeck1SpeedNeutral: string;
        EngineDeck1SpeedOffsetDown: string;
        EngineDeck1SpeedOffsetUp: string;
        EngineDeck1SpeedRange: string;
        EngineDeck1SpeedState: string;
        EngineDeck1SyncMode: string;
        EngineDeck1TrackArtistName: string;
        EngineDeck1TrackBleep: string;
        EngineDeck1TrackCuePosition: string;
        EngineDeck1TrackCurrentBPM: string;
        EngineDeck1TrackCurrentKeyIndex: string;
        EngineDeck1TrackCurrentLoopInPosition: string;
        EngineDeck1TrackCurrentLoopOutPosition: string;
        EngineDeck1TrackCurrentLoopSizeInBeats: string;
        EngineDeck1TrackKeyLock: string;
        EngineDeck1TrackLoopEnableState: string;
        EngineDeck1TrackLoopQuickLoop1: string;
        EngineDeck1TrackLoopQuickLoop2: string;
        EngineDeck1TrackLoopQuickLoop3: string;
        EngineDeck1TrackLoopQuickLoop4: string;
        EngineDeck1TrackLoopQuickLoop5: string;
        EngineDeck1TrackLoopQuickLoop6: string;
        EngineDeck1TrackLoopQuickLoop7: string;
        EngineDeck1TrackLoopQuickLoop8: string;
        EngineDeck1TrackPlayPauseLEDState: string;
        EngineDeck1TrackSampleRate: string;
        EngineDeck1TrackSongAnalyzed: string;
        EngineDeck1TrackSongLoaded: string;
        EngineDeck1TrackSongName: string;
        EngineDeck1TrackSoundSwitchGUID: string;
        EngineDeck1TrackTrackBytes: string;
        EngineDeck1TrackTrackData: string;
        EngineDeck1TrackTrackLength: string;
        EngineDeck1TrackTrackName: string;
        EngineDeck1TrackTrackNetworkPath: string;
        EngineDeck1TrackTrackURI: string;
        EngineDeck1TrackTrackWasPlayed: string;
        EngineDeck2CurrentBPM: string;
        EngineDeck2ExternalMixerVolume: string;
        EngineDeck2ExternalScratchWheelTouch: string;
        EngineDeck2PadsView: string;
        EngineDeck2Play: string;
        EngineDeck2PlayState: string;
        EngineDeck2PlayStatePath: string;
        EngineDeck2Speed: string;
        EngineDeck2SpeedNeutral: string;
        EngineDeck2SpeedOffsetDown: string;
        EngineDeck2SpeedOffsetUp: string;
        EngineDeck2SpeedRange: string;
        EngineDeck2SpeedState: string;
        EngineDeck2SyncMode: string;
        EngineDeck2TrackArtistName: string;
        EngineDeck2TrackBleep: string;
        EngineDeck2TrackCuePosition: string;
        EngineDeck2TrackCurrentBPM: string;
        EngineDeck2TrackCurrentKeyIndex: string;
        EngineDeck2TrackCurrentLoopInPosition: string;
        EngineDeck2TrackCurrentLoopOutPosition: string;
        EngineDeck2TrackCurrentLoopSizeInBeats: string;
        EngineDeck2TrackKeyLock: string;
        EngineDeck2TrackLoopEnableState: string;
        EngineDeck2TrackLoopQuickLoop1: string;
        EngineDeck2TrackLoopQuickLoop2: string;
        EngineDeck2TrackLoopQuickLoop3: string;
        EngineDeck2TrackLoopQuickLoop4: string;
        EngineDeck2TrackLoopQuickLoop5: string;
        EngineDeck2TrackLoopQuickLoop6: string;
        EngineDeck2TrackLoopQuickLoop7: string;
        EngineDeck2TrackLoopQuickLoop8: string;
        EngineDeck2TrackPlayPauseLEDState: string;
        EngineDeck2TrackSampleRate: string;
        EngineDeck2TrackSongAnalyzed: string;
        EngineDeck2TrackSongLoaded: string;
        EngineDeck2TrackSongName: string;
        EngineDeck2TrackSoundSwitchGUID: string;
        EngineDeck2TrackTrackBytes: string;
        EngineDeck2TrackTrackData: string;
        EngineDeck2TrackTrackLength: string;
        EngineDeck2TrackTrackName: string;
        EngineDeck2TrackTrackNetworkPath: string;
        EngineDeck2TrackTrackURI: string;
        EngineDeck2TrackTrackWasPlayed: string;
        EngineDeck3CurrentBPM: string;
        EngineDeck3ExternalMixerVolume: string;
        EngineDeck3ExternalScratchWheelTouch: string;
        EngineDeck3PadsView: string;
        EngineDeck3Play: string;
        EngineDeck3PlayState: string;
        EngineDeck3PlayStatePath: string;
        EngineDeck3Speed: string;
        EngineDeck3SpeedNeutral: string;
        EngineDeck3SpeedOffsetDown: string;
        EngineDeck3SpeedOffsetUp: string;
        EngineDeck3SpeedRange: string;
        EngineDeck3SpeedState: string;
        EngineDeck3SyncMode: string;
        EngineDeck3TrackArtistName: string;
        EngineDeck3TrackBleep: string;
        EngineDeck3TrackCuePosition: string;
        EngineDeck3TrackCurrentBPM: string;
        EngineDeck3TrackCurrentKeyIndex: string;
        EngineDeck3TrackCurrentLoopInPosition: string;
        EngineDeck3TrackCurrentLoopOutPosition: string;
        EngineDeck3TrackCurrentLoopSizeInBeats: string;
        EngineDeck3TrackKeyLock: string;
        EngineDeck3TrackLoopEnableState: string;
        EngineDeck3TrackLoopQuickLoop1: string;
        EngineDeck3TrackLoopQuickLoop2: string;
        EngineDeck3TrackLoopQuickLoop3: string;
        EngineDeck3TrackLoopQuickLoop4: string;
        EngineDeck3TrackLoopQuickLoop5: string;
        EngineDeck3TrackLoopQuickLoop6: string;
        EngineDeck3TrackLoopQuickLoop7: string;
        EngineDeck3TrackLoopQuickLoop8: string;
        EngineDeck3TrackPlayPauseLEDState: string;
        EngineDeck3TrackSampleRate: string;
        EngineDeck3TrackSongAnalyzed: string;
        EngineDeck3TrackSongLoaded: string;
        EngineDeck3TrackSongName: string;
        EngineDeck3TrackSoundSwitchGUID: string;
        EngineDeck3TrackTrackBytes: string;
        EngineDeck3TrackTrackData: string;
        EngineDeck3TrackTrackLength: string;
        EngineDeck3TrackTrackName: string;
        EngineDeck3TrackTrackNetworkPath: string;
        EngineDeck3TrackTrackURI: string;
        EngineDeck3TrackTrackWasPlayed: string;
        EngineDeck4CurrentBPM: string;
        EngineDeck4ExternalMixerVolume: string;
        EngineDeck4ExternalScratchWheelTouch: string;
        EngineDeck4PadsView: string;
        EngineDeck4Play: string;
        EngineDeck4PlayState: string;
        EngineDeck4PlayStatePath: string;
        EngineDeck4Speed: string;
        EngineDeck4SpeedNeutral: string;
        EngineDeck4SpeedOffsetDown: string;
        EngineDeck4SpeedOffsetUp: string;
        EngineDeck4SpeedRange: string;
        EngineDeck4SpeedState: string;
        EngineDeck4SyncMode: string;
        EngineDeck4TrackArtistName: string;
        EngineDeck4TrackBleep: string;
        EngineDeck4TrackCuePosition: string;
        EngineDeck4TrackCurrentBPM: string;
        EngineDeck4TrackCurrentKeyIndex: string;
        EngineDeck4TrackCurrentLoopInPosition: string;
        EngineDeck4TrackCurrentLoopOutPosition: string;
        EngineDeck4TrackCurrentLoopSizeInBeats: string;
        EngineDeck4TrackKeyLock: string;
        EngineDeck4TrackLoopEnableState: string;
        EngineDeck4TrackLoopQuickLoop1: string;
        EngineDeck4TrackLoopQuickLoop2: string;
        EngineDeck4TrackLoopQuickLoop3: string;
        EngineDeck4TrackLoopQuickLoop4: string;
        EngineDeck4TrackLoopQuickLoop5: string;
        EngineDeck4TrackLoopQuickLoop6: string;
        EngineDeck4TrackLoopQuickLoop7: string;
        EngineDeck4TrackLoopQuickLoop8: string;
        EngineDeck4TrackPlayPauseLEDState: string;
        EngineDeck4TrackSampleRate: string;
        EngineDeck4TrackSongAnalyzed: string;
        EngineDeck4TrackSongLoaded: string;
        EngineDeck4TrackSongName: string;
        EngineDeck4TrackSoundSwitchGUID: string;
        EngineDeck4TrackTrackBytes: string;
        EngineDeck4TrackTrackData: string;
        EngineDeck4TrackTrackLength: string;
        EngineDeck4TrackTrackName: string;
        EngineDeck4TrackTrackNetworkPath: string;
        EngineDeck4TrackTrackURI: string;
        EngineDeck4TrackTrackWasPlayed: string;
        EngineDeckCount: string;
        EngineMasterMasterTempo: string;
        EngineSyncNetworkMasterStatus: string;
    }
    +
      +
    • +
      EngineDeck1CurrentBPM: string
    • +
    • +
      EngineDeck1ExternalMixerVolume: string
    • +
    • +
      EngineDeck1ExternalScratchWheelTouch: string
    • +
    • +
      EngineDeck1PadsView: string
    • +
    • +
      EngineDeck1Play: string
    • +
    • +
      EngineDeck1PlayState: string
    • +
    • +
      EngineDeck1PlayStatePath: string
    • +
    • +
      EngineDeck1Speed: string
    • +
    • +
      EngineDeck1SpeedNeutral: string
    • +
    • +
      EngineDeck1SpeedOffsetDown: string
    • +
    • +
      EngineDeck1SpeedOffsetUp: string
    • +
    • +
      EngineDeck1SpeedRange: string
    • +
    • +
      EngineDeck1SpeedState: string
    • +
    • +
      EngineDeck1SyncMode: string
    • +
    • +
      EngineDeck1TrackArtistName: string
    • +
    • +
      EngineDeck1TrackBleep: string
    • +
    • +
      EngineDeck1TrackCuePosition: string
    • +
    • +
      EngineDeck1TrackCurrentBPM: string
    • +
    • +
      EngineDeck1TrackCurrentKeyIndex: string
    • +
    • +
      EngineDeck1TrackCurrentLoopInPosition: string
    • +
    • +
      EngineDeck1TrackCurrentLoopOutPosition: string
    • +
    • +
      EngineDeck1TrackCurrentLoopSizeInBeats: string
    • +
    • +
      EngineDeck1TrackKeyLock: string
    • +
    • +
      EngineDeck1TrackLoopEnableState: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop1: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop2: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop3: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop4: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop5: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop6: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop7: string
    • +
    • +
      EngineDeck1TrackLoopQuickLoop8: string
    • +
    • +
      EngineDeck1TrackPlayPauseLEDState: string
    • +
    • +
      EngineDeck1TrackSampleRate: string
    • +
    • +
      EngineDeck1TrackSongAnalyzed: string
    • +
    • +
      EngineDeck1TrackSongLoaded: string
    • +
    • +
      EngineDeck1TrackSongName: string
    • +
    • +
      EngineDeck1TrackSoundSwitchGUID: string
    • +
    • +
      EngineDeck1TrackTrackBytes: string
    • +
    • +
      EngineDeck1TrackTrackData: string
    • +
    • +
      EngineDeck1TrackTrackLength: string
    • +
    • +
      EngineDeck1TrackTrackName: string
    • +
    • +
      EngineDeck1TrackTrackNetworkPath: string
    • +
    • +
      EngineDeck1TrackTrackURI: string
    • +
    • +
      EngineDeck1TrackTrackWasPlayed: string
    • +
    • +
      EngineDeck2CurrentBPM: string
    • +
    • +
      EngineDeck2ExternalMixerVolume: string
    • +
    • +
      EngineDeck2ExternalScratchWheelTouch: string
    • +
    • +
      EngineDeck2PadsView: string
    • +
    • +
      EngineDeck2Play: string
    • +
    • +
      EngineDeck2PlayState: string
    • +
    • +
      EngineDeck2PlayStatePath: string
    • +
    • +
      EngineDeck2Speed: string
    • +
    • +
      EngineDeck2SpeedNeutral: string
    • +
    • +
      EngineDeck2SpeedOffsetDown: string
    • +
    • +
      EngineDeck2SpeedOffsetUp: string
    • +
    • +
      EngineDeck2SpeedRange: string
    • +
    • +
      EngineDeck2SpeedState: string
    • +
    • +
      EngineDeck2SyncMode: string
    • +
    • +
      EngineDeck2TrackArtistName: string
    • +
    • +
      EngineDeck2TrackBleep: string
    • +
    • +
      EngineDeck2TrackCuePosition: string
    • +
    • +
      EngineDeck2TrackCurrentBPM: string
    • +
    • +
      EngineDeck2TrackCurrentKeyIndex: string
    • +
    • +
      EngineDeck2TrackCurrentLoopInPosition: string
    • +
    • +
      EngineDeck2TrackCurrentLoopOutPosition: string
    • +
    • +
      EngineDeck2TrackCurrentLoopSizeInBeats: string
    • +
    • +
      EngineDeck2TrackKeyLock: string
    • +
    • +
      EngineDeck2TrackLoopEnableState: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop1: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop2: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop3: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop4: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop5: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop6: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop7: string
    • +
    • +
      EngineDeck2TrackLoopQuickLoop8: string
    • +
    • +
      EngineDeck2TrackPlayPauseLEDState: string
    • +
    • +
      EngineDeck2TrackSampleRate: string
    • +
    • +
      EngineDeck2TrackSongAnalyzed: string
    • +
    • +
      EngineDeck2TrackSongLoaded: string
    • +
    • +
      EngineDeck2TrackSongName: string
    • +
    • +
      EngineDeck2TrackSoundSwitchGUID: string
    • +
    • +
      EngineDeck2TrackTrackBytes: string
    • +
    • +
      EngineDeck2TrackTrackData: string
    • +
    • +
      EngineDeck2TrackTrackLength: string
    • +
    • +
      EngineDeck2TrackTrackName: string
    • +
    • +
      EngineDeck2TrackTrackNetworkPath: string
    • +
    • +
      EngineDeck2TrackTrackURI: string
    • +
    • +
      EngineDeck2TrackTrackWasPlayed: string
    • +
    • +
      EngineDeck3CurrentBPM: string
    • +
    • +
      EngineDeck3ExternalMixerVolume: string
    • +
    • +
      EngineDeck3ExternalScratchWheelTouch: string
    • +
    • +
      EngineDeck3PadsView: string
    • +
    • +
      EngineDeck3Play: string
    • +
    • +
      EngineDeck3PlayState: string
    • +
    • +
      EngineDeck3PlayStatePath: string
    • +
    • +
      EngineDeck3Speed: string
    • +
    • +
      EngineDeck3SpeedNeutral: string
    • +
    • +
      EngineDeck3SpeedOffsetDown: string
    • +
    • +
      EngineDeck3SpeedOffsetUp: string
    • +
    • +
      EngineDeck3SpeedRange: string
    • +
    • +
      EngineDeck3SpeedState: string
    • +
    • +
      EngineDeck3SyncMode: string
    • +
    • +
      EngineDeck3TrackArtistName: string
    • +
    • +
      EngineDeck3TrackBleep: string
    • +
    • +
      EngineDeck3TrackCuePosition: string
    • +
    • +
      EngineDeck3TrackCurrentBPM: string
    • +
    • +
      EngineDeck3TrackCurrentKeyIndex: string
    • +
    • +
      EngineDeck3TrackCurrentLoopInPosition: string
    • +
    • +
      EngineDeck3TrackCurrentLoopOutPosition: string
    • +
    • +
      EngineDeck3TrackCurrentLoopSizeInBeats: string
    • +
    • +
      EngineDeck3TrackKeyLock: string
    • +
    • +
      EngineDeck3TrackLoopEnableState: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop1: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop2: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop3: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop4: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop5: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop6: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop7: string
    • +
    • +
      EngineDeck3TrackLoopQuickLoop8: string
    • +
    • +
      EngineDeck3TrackPlayPauseLEDState: string
    • +
    • +
      EngineDeck3TrackSampleRate: string
    • +
    • +
      EngineDeck3TrackSongAnalyzed: string
    • +
    • +
      EngineDeck3TrackSongLoaded: string
    • +
    • +
      EngineDeck3TrackSongName: string
    • +
    • +
      EngineDeck3TrackSoundSwitchGUID: string
    • +
    • +
      EngineDeck3TrackTrackBytes: string
    • +
    • +
      EngineDeck3TrackTrackData: string
    • +
    • +
      EngineDeck3TrackTrackLength: string
    • +
    • +
      EngineDeck3TrackTrackName: string
    • +
    • +
      EngineDeck3TrackTrackNetworkPath: string
    • +
    • +
      EngineDeck3TrackTrackURI: string
    • +
    • +
      EngineDeck3TrackTrackWasPlayed: string
    • +
    • +
      EngineDeck4CurrentBPM: string
    • +
    • +
      EngineDeck4ExternalMixerVolume: string
    • +
    • +
      EngineDeck4ExternalScratchWheelTouch: string
    • +
    • +
      EngineDeck4PadsView: string
    • +
    • +
      EngineDeck4Play: string
    • +
    • +
      EngineDeck4PlayState: string
    • +
    • +
      EngineDeck4PlayStatePath: string
    • +
    • +
      EngineDeck4Speed: string
    • +
    • +
      EngineDeck4SpeedNeutral: string
    • +
    • +
      EngineDeck4SpeedOffsetDown: string
    • +
    • +
      EngineDeck4SpeedOffsetUp: string
    • +
    • +
      EngineDeck4SpeedRange: string
    • +
    • +
      EngineDeck4SpeedState: string
    • +
    • +
      EngineDeck4SyncMode: string
    • +
    • +
      EngineDeck4TrackArtistName: string
    • +
    • +
      EngineDeck4TrackBleep: string
    • +
    • +
      EngineDeck4TrackCuePosition: string
    • +
    • +
      EngineDeck4TrackCurrentBPM: string
    • +
    • +
      EngineDeck4TrackCurrentKeyIndex: string
    • +
    • +
      EngineDeck4TrackCurrentLoopInPosition: string
    • +
    • +
      EngineDeck4TrackCurrentLoopOutPosition: string
    • +
    • +
      EngineDeck4TrackCurrentLoopSizeInBeats: string
    • +
    • +
      EngineDeck4TrackKeyLock: string
    • +
    • +
      EngineDeck4TrackLoopEnableState: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop1: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop2: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop3: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop4: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop5: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop6: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop7: string
    • +
    • +
      EngineDeck4TrackLoopQuickLoop8: string
    • +
    • +
      EngineDeck4TrackPlayPauseLEDState: string
    • +
    • +
      EngineDeck4TrackSampleRate: string
    • +
    • +
      EngineDeck4TrackSongAnalyzed: string
    • +
    • +
      EngineDeck4TrackSongLoaded: string
    • +
    • +
      EngineDeck4TrackSongName: string
    • +
    • +
      EngineDeck4TrackSoundSwitchGUID: string
    • +
    • +
      EngineDeck4TrackTrackBytes: string
    • +
    • +
      EngineDeck4TrackTrackData: string
    • +
    • +
      EngineDeck4TrackTrackLength: string
    • +
    • +
      EngineDeck4TrackTrackName: string
    • +
    • +
      EngineDeck4TrackTrackNetworkPath: string
    • +
    • +
      EngineDeck4TrackTrackURI: string
    • +
    • +
      EngineDeck4TrackTrackWasPlayed: string
    • +
    • +
      EngineDeckCount: string
    • +
    • +
      EngineMasterMasterTempo: string
    • +
    • +
      EngineSyncNetworkMasterStatus: string
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/variables/deviceTypes.html b/docs/variables/deviceTypes.html new file mode 100644 index 0000000..5b42c1a --- /dev/null +++ b/docs/variables/deviceTypes.html @@ -0,0 +1,109 @@ +deviceTypes | StageLinqJS
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/index.ts b/index.ts index c9f1803..3fb810f 100644 --- a/index.ts +++ b/index.ts @@ -3,3 +3,5 @@ export * from './services'; export * from './StageLinq'; export * from './types'; export * from './utils'; +export * from './devices'; +export * from './Databases'; diff --git a/services/StateMap.ts b/services/StateMap.ts index 05c45a0..2fc809b 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -87,11 +87,20 @@ export class StateMapHandler extends ServiceHandler { } } +/** + * StateMap Class + */ export class StateMap extends Service { public readonly name = "StateMap"; public readonly handler: StateMapHandler; private hasReceivedState: boolean = false; + /** + * @constructor + * @param {StageLinq} parent + * @param {StateMapHandler} serviceHandler + * @param {DeviceId} deviceId + */ constructor(parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(parent, serviceHandler, deviceId) this.handler = this._handler as StateMapHandler From fc7097d984ba3e690193e7cbdcc2fa8b4bd70d8e Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Apr 2023 09:01:47 -0400 Subject: [PATCH 102/146] add Status Track register --- cli/index.ts | 51 +++- services/StateMap.ts | 4 + status/Player.ts | 5 +- status/Status.ts | 36 ++- types/common.ts | 55 ++-- types/models/State.ts | 593 +++++++++++++++++++----------------------- types/models/index.ts | 2 +- types/player.ts | 1 + 8 files changed, 390 insertions(+), 357 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 1230bd8..b27e739 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -66,8 +66,8 @@ async function main() { actingAs: ActingAsDevice.StageLinqJS, services: [ ServiceList.StateMap, - ServiceList.BeatInfo, ServiceList.FileTransfer, + //ServiceList.BeatInfo, ], } @@ -126,28 +126,55 @@ async function main() { if (stageLinq.stateMap) { - stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { + + async function deckIsMaster(data: ServiceMessage) { + if (data.message.json.state) { + console.warn(data.deviceId.string, data.message.name, data.message.json); + const deck = parseInt(data.message.name.substring(12, 13)) + await sleep(250); + const track = stageLinq.status.getTrack(data.deviceId, deck) + console.log(`Now Playing: `, track) + if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { + const split = track.TrackNetworkPath.substring(6).split('/') + const deviceId = new DeviceId(split.shift()); + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + } + } + } + + stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); + + const info = stageLinq.discovery.getConnectionInfo(service.deviceId) + for (let i = 1; i <= info.device.decks; i++) { + await stageLinq.status.addTrack(service, i); + service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); + } + service.subscribe(); + // To Utilize NowPlaying Status updates - stageLinq.status.addPlayer({ - stateMap: service, - address: service.socket.remoteAddress, - port: service.socket.remotePort, - deviceId: service.deviceId, - }) + // stageLinq.status.addPlayer({ + // stateMap: service, + // address: service.socket.remoteAddress, + // port: service.socket.remotePort, + // deviceId: service.deviceId, + // }) }); - stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); - }); + // stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { + // //console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); + // }); stageLinq.status.on('trackLoaded', async (status) => { console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); - + console.dir(status) const split = status.trackNetworkPath.substring(43).split('/') const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` diff --git a/services/StateMap.ts b/services/StateMap.ts index 2fc809b..506cb9f 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -199,6 +199,10 @@ export class StateMap extends Service { protected messageHandler(data: ServiceMessage): void { + if (this.listenerCount(data?.message?.name) && data?.message?.json) { + this.emit(data.message.name, data) + } + if (data?.message?.interval) { this.sendStateResponse(data.message.name, data.socket); } diff --git a/status/Player.ts b/status/Player.ts index 8cf4eba..feae751 100644 --- a/status/Player.ts +++ b/status/Player.ts @@ -132,7 +132,8 @@ export class Player extends EventEmitter { : (/ExternalMixerVolume$/.test(name)) ? { externalMixerVolume: json.value } : (/Play$/.test(name)) ? { play: json.state } : (/PlayerJogColor[A-D]$/.test(name)) ? { jogColor: json.color } - : null; + : (/DeckIsMaster]$/.test(name)) ? { deckIsMaster: json.state } + : null; if (cueData) { this.queue[deck].push({ layer: deck, ...cueData }); @@ -205,7 +206,7 @@ export class Player extends EventEmitter { this.emit('trackLoaded', currentState); // If the song is actually playing emit the nowPlaying event. - if (result.playState) this.emit('nowPlaying', currentState); + if (result.deckIsMaster) this.emit('nowPlaying', currentState); // Emit that the state has changed. this.emit('stateChanged', currentState); diff --git a/status/Status.ts b/status/Status.ts index 8242391..1aba014 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,7 +1,8 @@ import EventEmitter = require("events"); import { StageLinq } from '../StageLinq'; +import { StateData, StateMap } from '../services'; import { Player, PlayerOptions } from '../status/Player'; -import { PlayerStatus } from '../types'; +import { PlayerStatus, ServiceMessage, TrackData } from '../types'; import { DeviceId } from '../devices' @@ -18,12 +19,45 @@ export interface StatusData extends PlayerStatus { export class Status extends EventEmitter { readonly parent: InstanceType; private _players: Map = new Map(); + tracks: Map = new Map(); constructor(parent: InstanceType) { super(); this.parent = parent; } + private getTypedValue(data: ServiceMessage): boolean | string | number { + if (data.message.json.state) { + return data.message.json.state as boolean + } + if (data.message.json.string) { + return data.message.json.string as string + } + if (data.message.json.value) { + return data.message.json.value as number + } + } + + private listener(data: ServiceMessage, status: Status) { + const deck = parseInt(data.message.name.substring(12, 13)) + const property = data.message.name.split('/').pop() + const value = this.getTypedValue(data); + const track = status.tracks.get(`{${data.deviceId.string}},${deck}`) + this.tracks.set(`{${data.deviceId.string}},${deck}`, Object.assign(track, { [property]: value })); + } + + async addTrack(service: StateMap, deck: number,) { + let track = new TrackData(`/Engine/Deck${deck}/Track/`) + this.tracks.set(`{${service.deviceId.string}},${deck}`, track) + for (let item of Object.keys(track)) { + service.addListener(`${track.prefix}${item}`, data => this.listener(data, this)) + } + } + + getTrack(deviceId: DeviceId, deck: number): TrackData { + return this.tracks.get(`{${deviceId.string}},${deck}`); + } + addPlayer(options: PlayerOptions) { const player = new Player(options) this._players.set(options.deviceId.string, player); diff --git a/types/common.ts b/types/common.ts index e5d698f..d657e19 100644 --- a/types/common.ts +++ b/types/common.ts @@ -21,10 +21,10 @@ export enum MessageId { // ClientLibrarianDevicesControllerCurrentDevice = '/Client/Librarian/DevicesController/CurrentDevice', // ClientLibrarianDevicesControllerHasSDCardConnected = '/Client/Librarian/DevicesController/HasSDCardConnected', // ClientLibrarianDevicesControllerHasUsbDeviceConnected = '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - + // ClientPreferencesPlayer = '/Client/Preferences/Player', // ClientPreferencesLayerB = '/Client/Preferences/LayerB', - + // ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', // ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', // ClientPreferencesProfileApplicationPlayerColor1 = '/Client/Preferences/Profile/Application/PlayerColor1', @@ -39,14 +39,14 @@ export enum MessageId { // ClientPreferencesProfileApplicationPlayerColor4 = '/Client/Preferences/Profile/Application/PlayerColor4', // ClientPreferencesProfileApplicationPlayerColor4A = '/Client/Preferences/Profile/Application/PlayerColor4A', // ClientPreferencesProfileApplicationPlayerColor4B = '/Client/Preferences/Profile/Application/PlayerColor4B', - + // ClientPreferencesProfileApplicationSyncMode = '/Client/Preferences/Profile/Application/SyncMode', - + // GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', // GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', // EngineDeckCount = '/Engine/DeckCount', - + // EngineDeck1DeckIsMaster = '/Engine/Deck1/DeckIsMaster', @@ -234,13 +234,13 @@ export enum MessageId { // EngineDeck4TrackTrackNetworkPath = '/Engine/Deck4/Track/TrackNetworkPath', // EngineDeck4TrackTrackURI = '/Engine/Deck4/Track/TrackUri', // EngineDeck4TrackTrackWasPlayed = '/Engine/Deck4/Track/TrackWasPlayed', - - + + // ClientDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', // ClientDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', // MixerNumberOfChannels = '/Mixer/NumberOfChannels', - + // MixerChannelAssignment1 = '/Mixer/ChannelAssignment1', // MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', // MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', @@ -252,22 +252,23 @@ export enum MessageId { // MixerCH4faderPosition = '/Mixer/CH4faderPosition', // MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', - - // PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', - // PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', - // EngineDeck1PFL = '/Engine/Deck1/PFL', + +// PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', +// PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', +// EngineDeck1PFL = '/Engine/Deck1/PFL', // } export const StageLinqValueObj = { player: { - // ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', + ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', + ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: '/Client/Librarian/DevicesController/CurrentDeviceNetworkPath', // ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', // ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - // ClientPreferencesLayerA: '/Client/Preferences/LayerA', - // ClientPreferencesLayerB: '/Client/Preferences/LayerB', - // ClientPreferencesPlayer: '/Client/Preferences/Player', - // ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', - // ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', + ClientPreferencesLayerA: '/Client/Preferences/LayerA', + ClientPreferencesLayerB: '/Client/Preferences/LayerB', + ClientPreferencesPlayer: '/Client/Preferences/Player', + ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', + ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', // ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', // ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', // ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', @@ -280,7 +281,20 @@ export const StageLinqValueObj = { // ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', // ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', // ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', - // ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', + ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', + + //EngineDeck1RequestUnsetSyncLead: '/Engine/Deck1/RequestUnsetSyncLead', + EngineDeck1SyncPlayState: '/Engine/Deck1/SyncPlayState', + EngineDeck2SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck3SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck4SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck1DeckIsMaster: '/Engine/Deck1/DeckIsMaster', + EngineDeck2DeckIsMaster: '/Engine/Deck2/DeckIsMaster', + EngineDeck3DeckIsMaster: '/Engine/Deck3/DeckIsMaster', + EngineDeck4DeckIsMaster: '/Engine/Deck2/DeckIsMaster', + + EngineSyncNetworkSyncType: '/Engine/Sync/Network/SyncType', + EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', EngineMasterMasterTempo: '/Engine/Master/MasterTempo', EngineDeckCount: '/Engine/DeckCount', @@ -464,6 +478,7 @@ export const StageLinqValueObj = { EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', + GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', }, mixer: { MixerCH1faderPosition: '/Mixer/CH1faderPosition', @@ -476,7 +491,7 @@ export const StageLinqValueObj = { MixerChannelAssignment3: '/Mixer/ChannelAssignment3', MixerChannelAssignment4: '/Mixer/ChannelAssignment4', MixerNumberOfChannels: '/Mixer/NumberOfChannels', - // GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + //GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', // GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', // ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', // ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', diff --git a/types/models/State.ts b/types/models/State.ts index 36494d1..b0ca979 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,343 +1,294 @@ +export interface ITrackData { + ArtistName: string; + Bleep: boolean; + CuePosition: number; + CurrentBPM: number; + CurrentKeyIndex: number; + CurrentLoopInPosition: number; + CurrentLoopOutPosition: number; + CurrentLoopSizeInBeats: number; + KeyLock: boolean; + LoopEnableState: boolean; + Loop: { + QuickLoop1: boolean; + QuickLoop2: boolean; + QuickLoop3: boolean; + QuickLoop4: boolean; + QuickLoop5: boolean; + QuickLoop6: boolean; + QuickLoop7: boolean; + QuickLoop8: boolean; + }, + PlayPauseLEDState: boolean; + SampleRate: number; + SongAnalyzed: boolean; + SongLoaded: boolean; + SongName: string; + SoundSwitchGUID: string; + TrackBytes: number; + TrackData: boolean; + TrackLength: number; + TrackName: string; + TrackNetworkPath: string; + TrackURI: string; + TrackWasPlayed: boolean; +} -// // type HexColor = `#${string}`; +export class TrackData implements Partial { + prefix: string; -// // interface DeviceState { -// // Engine: { -// // DeckCount: number; -// // Sync: { -// // Network: { -// // MasterStatus: boolean, -// // }, -// // }, -// // Master: { -// // MasterTempo: number -// // }, -// // }, -// // Librarian: { -// // DevicesController: { -// // CurrentDevice: string, //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] -// // HasSDCardConnected: boolean, -// // HasUsbDeviceConnected: boolean, -// // }, -// // }, -// // Preferences: { -// // LayerB: boolean, -// // Player: 1|2|3|4, //type 4 ENUM? -// // PlayerJogColorA: HexColor, //type 16 Colour string -// // PlayerJogColorB: HexColor, -// // Profile: { -// // Application: { -// // PlayerColor1: HexColor, -// // PlayerColor1A: HexColor, -// // PlayerColor1B: HexColor, -// // PlayerColor2: HexColor, -// // PlayerColor2A: HexColor, -// // PlayerColor2B: HexColor, -// // PlayerColor3: HexColor, -// // PlayerColor3A: HexColor, -// // PlayerColor3B: HexColor, -// // PlayerColor4: HexColor, -// // PlayerColor4A: HexColor, -// // PlayerColor4B: HexColor, -// // SyncMode: 'Tempo' | 'TempoSync' | 'Off', //type 4 ENUM -// // }, -// // }, -// // }, -// // } + ArtistName: string = "" + CurrentBPM: number = 0; + SampleRate: number = 0; + SongAnalyzed: boolean = false; + SongLoaded: boolean = false; + SongName: string = ""; + SoundSwitchGUID: string = ""; + TrackBytes: number = 0; + TrackLength: number = 0; + TrackName: string = ""; + TrackNetworkPath: string = ""; + TrackURI: string = ""; -// // interface PlayerDeckState { -// // CurrentBPM: number; -// // ExternalMixerVolume: number; -// // ExternalScratchWheelTouch: boolean; -// // Pads: { -// // View: string; //TODO Find ENUM values -// // }, -// // Play: boolean; -// // PlayState: boolean; -// // //PlayStatePath: 'PlayStatePath', //NG -// // Speed: number; -// // SpeedNeutral: boolean; -// // SpeedOffsetDown: boolean; -// // SpeedOffsetUp: boolean; -// // SpeedRange: '4' | '8' | '10' | '20' | '50' | '100'; -// // SpeedState: number; -// // SyncMode: string; //TODO find ENUM values -// // DeckIsMaster: boolean; -// // Track: { -// // ArtistName: string; -// // Bleep: boolean; -// // CuePosition: number; -// // CurrentBPM: number; -// // CurrentKeyIndex: number; -// // CurrentLoopInPosition: number; -// // CurrentLoopOutPosition: number; -// // CurrentLoopSizeInBeats: number; -// // KeyLock: boolean; -// // LoopEnableState: boolean; -// // Loop: { -// // QuickLoop1: boolean; -// // QuickLoop2: boolean; -// // QuickLoop3: boolean; -// // QuickLoop4: boolean; -// // QuickLoop5: boolean; -// // QuickLoop6: boolean; -// // QuickLoop7: boolean; -// // QuickLoop8: boolean; -// // }, -// // PlayPauseLEDState: boolean; -// // SampleRate: number; -// // SongAnalyzed: boolean; -// // SongLoaded: boolean; -// // SongName: string; -// // SoundSwitchGUID: string; //NG must be Analyzed? TODO check GUID -// // TrackBytes: number; -// // TrackData: boolean; -// // TrackLength: number; -// // TrackName: string; //TODO parse formatting of URI / Location -// // TrackNetworkPath: string; -// // TrackURI: string; //NG Only streaming? -// // TrackWasPlayed: boolean; -// // } -// // } + constructor(prefix: string) { + this.prefix = prefix; + } +} -// // interface PlayerDeckState extends DeviceState { - -// // } +// export const configStates = { +// Mixer: { +// Mixer: { +// ChannelAssignment1: '', +// ChannelAssignment2: '', +// ChannelAssignment3: '', +// ChannelAssignment4: '', +// }, +// }, +// Player: { +// Client: { +// Librarian: { +// DevicesController: { +// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] +// HasSDCardConnected: false, +// HasUsbDeviceConnected: false, +// }, +// }, +// Preferences: { +// LayerB: false, +// Player: '', //type 4 ENUM? +// PlayerJogColorA: '#FFFFFF', //type 16 Colour string +// PlayerJogColorB: '#FFFFFF', +// Profile: { +// Application: { +// SyncMode: '', +// }, +// }, +// }, +// }, +// } +// } +// export const PlayerStates = { +// // Gui: { +// // ViewLayer: { +// // LayerB: 'LayerB', +// // }, +// // Decks: { +// // Deck: { +// // ActiveDeck: 'ActiveDeck', +// // }, +// // }, +// // }, +// Mixer: { +// //NumberOfChannels: 'NumberOfChannels', //NG +// ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' +// ChannelAssignment2: '', +// ChannelAssignment3: '', +// ChannelAssignment4: '', +// }, +// Engine: { +// DeckCount: 2, //type 10 +// Sync: { +// Network: { +// MasterStatus: false, +// }, +// }, +// Master: { +// MasterTempo: 120.0, //type 0 +// }, +// }, +// Client: { +// Librarian: { +// DevicesController: { +// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] +// HasSDCardConnected: false, +// HasUsbDeviceConnected: false, +// }, +// }, +// Preferences: { +// LayerB: false, +// Player: '', //type 4 ENUM? +// PlayerJogColorA: '#FFFFFF', //type 16 Colour string +// PlayerJogColorB: '#FFFFFF', +// Profile: { +// Application: { +// PlayerColor1: '#FFFFFF', +// PlayerColor1A: '#FFFFFF', +// PlayerColor1B: '#FFFFFF', +// PlayerColor2: '#FFFFFF', +// PlayerColor2A: '#FFFFFF', +// PlayerColor2B: '#FFFFFF', +// PlayerColor3: '#FFFFFF', +// PlayerColor3A: '#FFFFFF', +// PlayerColor3B: '#FFFFFF', +// PlayerColor4: '#FFFFFF', +// PlayerColor4A: '#FFFFFF', +// PlayerColor4B: '#FFFFFF', +// SyncMode: '', +// }, +// }, +// }, +// }, +// } +// export const PlayerDeckStates = { +// CurrentBPM: 120.00, //type 0 +// ExternalMixerVolume: 1, //type 0 +// // ExternalScratchWheelTouch: false, //type 2 false? +// // Pads: { +// // View: '', //type 4 ENUM? 'CUES' +// // }, +// // Play: false, +// PlayState: false, +// //PlayStatePath: 'PlayStatePath', //NG +// Speed: 1.0, //0.44444535 +// // SpeedNeutral: false, +// // SpeedOffsetDown: false, +// // SpeedOffsetUp: false, +// // SpeedRange: '8', //enum +// // SpeedState: 1.0, //type 0 signed -0.39999 +// SyncMode: 'Off', //enum: Off, Tempo, TempoSync +// DeckIsMaster: false, +// Track: { +// ArtistName: '', +// Bleep: false, //type 2 +// CuePosition: 156.0, //type 14? +// CurrentBPM: 120.0, +// CurrentKeyIndex: 0, //type 10? +// CurrentLoopInPosition: 156.0, //type 14 +// CurrentLoopOutPosition: 156.0, //type 14 +// CurrentLoopSizeInBeats: 0, // type 14 +// KeyLock: false, +// LoopEnableState: false, //type 1 +// Loop: { +// QuickLoop1: false, //type 2 +// QuickLoop2: false, +// QuickLoop3: false, +// QuickLoop4: false, +// QuickLoop5: false, +// QuickLoop6: false, +// QuickLoop7: false, +// QuickLoop8: false, +// }, +// PlayPauseLEDState: false, +// SampleRate: 44100, //type 14 +// SongAnalyzed: false, +// SongLoaded: false, +// SongName: '', +// SoundSwitchGUID: '', //NG must be Analyzed? +// TrackBytes: 1, //type 10 +// TrackData: false, //type 3??? +// TrackLength: 1, //type 10 +// TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... +// TrackNetworkPath: '', +// TrackURI: '', //NG Only streaming? +// TrackWasPlayed: false, +// } +// } -export const configStates = { - Mixer: { - Mixer: { - ChannelAssignment1: '', - ChannelAssignment2: '', - ChannelAssignment3: '', - ChannelAssignment4: '', - }, - }, - Player: { - Client: { - Librarian: { - DevicesController: { - CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] - HasSDCardConnected: false, - HasUsbDeviceConnected: false, - }, - }, - Preferences: { - LayerB: false, - Player: '', //type 4 ENUM? - PlayerJogColorA: '#FFFFFF', //type 16 Colour string - PlayerJogColorB: '#FFFFFF', - Profile: { - Application: { - SyncMode: '', - }, - }, - }, - }, - } -} - +// export const MixerStates = { +// Mixer: { +// CH1faderPosition: 1.27, //type 0 +// CH2faderPosition: 0.0, +// CH3faderPosition: 0.0, +// CH4faderPosition: 0.0, +// CrossfaderPosition: 0.5, //type 0 +// //NumberOfChannels: 'NumberOfChannels', //NG +// // ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' +// // ChannelAssignment2: '', +// // ChannelAssignment3: '', +// // ChannelAssignment4: '', +// }, +// // Gui: { +// // ViewLayer: { +// // LayerB: 'LayerB', +// // }, +// // Decks: { +// // Deck: { +// // ActiveDeck: 'ActiveDeck', +// // }, +// // }, +// // }, +// } -export const PlayerStates = { - // Gui: { - // ViewLayer: { - // LayerB: 'LayerB', - // }, - // Decks: { - // Deck: { - // ActiveDeck: 'ActiveDeck', - // }, - // }, - // }, - Mixer: { - //NumberOfChannels: 'NumberOfChannels', //NG - ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' - ChannelAssignment2: '', - ChannelAssignment3: '', - ChannelAssignment4: '', - }, - Engine: { - DeckCount: 2, //type 10 - Sync: { - Network: { - MasterStatus: false, - }, - }, - Master: { - MasterTempo: 120.0, //type 0 - }, - }, - Client: { - Librarian: { - DevicesController: { - CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] - HasSDCardConnected: false, - HasUsbDeviceConnected: false, - }, - }, - Preferences: { - LayerB: false, - Player: '', //type 4 ENUM? - PlayerJogColorA: '#FFFFFF', //type 16 Colour string - PlayerJogColorB: '#FFFFFF', - Profile: { - Application: { - PlayerColor1: '#FFFFFF', - PlayerColor1A: '#FFFFFF', - PlayerColor1B: '#FFFFFF', - PlayerColor2: '#FFFFFF', - PlayerColor2A: '#FFFFFF', - PlayerColor2B: '#FFFFFF', - PlayerColor3: '#FFFFFF', - PlayerColor3A: '#FFFFFF', - PlayerColor3B: '#FFFFFF', - PlayerColor4: '#FFFFFF', - PlayerColor4A: '#FFFFFF', - PlayerColor4B: '#FFFFFF', - SyncMode: '', - }, - }, - }, - }, -} +//const test = new MixerStates() -export const PlayerDeckStates = { - CurrentBPM: 120.00, //type 0 - ExternalMixerVolume: 1, //type 0 - // ExternalScratchWheelTouch: false, //type 2 false? - // Pads: { - // View: '', //type 4 ENUM? 'CUES' - // }, - // Play: false, - PlayState: false, - //PlayStatePath: 'PlayStatePath', //NG - Speed: 1.0, //0.44444535 - // SpeedNeutral: false, - // SpeedOffsetDown: false, - // SpeedOffsetUp: false, - // SpeedRange: '8', //enum - // SpeedState: 1.0, //type 0 signed -0.39999 - SyncMode: 'Off', //enum: Off, Tempo, TempoSync - DeckIsMaster: false, - Track: { - ArtistName: '', - Bleep: false, //type 2 - CuePosition: 156.0, //type 14? - CurrentBPM: 120.0, - CurrentKeyIndex: 0, //type 10? - CurrentLoopInPosition: 156.0, //type 14 - CurrentLoopOutPosition: 156.0, //type 14 - CurrentLoopSizeInBeats: 0, // type 14 - // KeyLock: false, - // LoopEnableState: false, //type 1 - // Loop: { - // QuickLoop1: false, //type 2 - // QuickLoop2: false, - // QuickLoop3: false, - // QuickLoop4: false, - // QuickLoop5: false, - // QuickLoop6: false, - // QuickLoop7: false, - // QuickLoop8: false, - // }, - // PlayPauseLEDState: false, - SampleRate: 44100, //type 14 - SongAnalyzed: false, - SongLoaded: false, - SongName: '', - SoundSwitchGUID: '', //NG must be Analyzed? - TrackBytes: 1, //type 10 - TrackData: false, //type 3??? - TrackLength: 1, //type 10 - TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... - TrackNetworkPath: '', - TrackURI: '', //NG Only streaming? - TrackWasPlayed: false, - } -} -export const MixerStates = { - Mixer: { - CH1faderPosition: 1.27, //type 0 - CH2faderPosition: 0.0, - CH3faderPosition: 0.0, - CH4faderPosition: 0.0, - CrossfaderPosition: 0.5, //type 0 - //NumberOfChannels: 'NumberOfChannels', //NG - // ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' - // ChannelAssignment2: '', - // ChannelAssignment3: '', - // ChannelAssignment4: '', - }, - // Gui: { - // ViewLayer: { - // LayerB: 'LayerB', - // }, - // Decks: { - // Deck: { - // ActiveDeck: 'ActiveDeck', - // }, - // }, - // }, -} -//const test = new MixerStates() +// export const exportObj = { +// config: { +// }, +// player: { +// ...PlayerStates, +// }, +// playerDeck: { +// ...PlayerDeckStates +// }, +// mixer: { +// ...MixerStates, +// } +// } -export const exportObj = { - config: { - }, - player: { - ...PlayerStates, - }, - playerDeck: { - ...PlayerDeckStates - }, - mixer: { - ...MixerStates, - } -} // console.log(JSON.stringify(exportObj)); -// // export const PlayerDeckTrackStates = { -// // ArtistName: 'ArtistName', -// // Bleep: 'Bleep', -// // CuePosition: 'CuePosition', -// // CurrentBPM: 'CurrentBPM', -// // CurrentKeyIndex: 'CurrentKeyIndex', -// // CurrentLoopInPosition: 'CurrentLoopInPosition', -// // CurrentLoopOutPosition: 'CurrentLoopOutPosition', -// // CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', -// // KeyLock: 'KeyLock', -// // LoopEnableState: 'LoopEnableState', -// // LoopQuickLoop1: 'Loop/QuickLoop1', -// // LoopQuickLoop2: 'Loop/QuickLoop2', -// // LoopQuickLoop3: 'Loop/QuickLoop3', -// // LoopQuickLoop4: 'Loop/QuickLoop4', -// // LoopQuickLoop5: 'Loop/QuickLoop5', -// // LoopQuickLoop6: 'Loop/QuickLoop6', -// // LoopQuickLoop7: 'Loop/QuickLoop7', -// // LoopQuickLoop8: 'Loop/QuickLoop8', -// // PlayPauseLEDState: 'PlayPauseLEDState', -// // SampleRate: 'SampleRate', -// // SongAnalyzed: 'SongAnalyzed', -// // SongLoaded: 'SongLoaded', -// // SongName: 'SongName', -// // SoundSwitchGUID: 'SoundSwitchGuid', -// // TrackBytes: 'TrackBytes', -// // TrackData: 'TrackData', -// // TrackLength: 'TrackLength', -// // TrackName: 'TrackName', -// // TrackNetworkPath: 'TrackNetworkPath', -// // TrackURI: 'TrackUri', -// // TrackWasPlayed: 'TrackWasPlayed', -// // } \ No newline at end of file +// export const PlayerDeckTrackStates = { +// ArtistName: 'ArtistName', +// Bleep: 'Bleep', +// CuePosition: 'CuePosition', +// CurrentBPM: 'CurrentBPM', +// CurrentKeyIndex: 'CurrentKeyIndex', +// CurrentLoopInPosition: 'CurrentLoopInPosition', +// CurrentLoopOutPosition: 'CurrentLoopOutPosition', +// CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', +// KeyLock: 'KeyLock', +// LoopEnableState: 'LoopEnableState', +// LoopQuickLoop1: 'Loop/QuickLoop1', +// LoopQuickLoop2: 'Loop/QuickLoop2', +// LoopQuickLoop3: 'Loop/QuickLoop3', +// LoopQuickLoop4: 'Loop/QuickLoop4', +// LoopQuickLoop5: 'Loop/QuickLoop5', +// LoopQuickLoop6: 'Loop/QuickLoop6', +// LoopQuickLoop7: 'Loop/QuickLoop7', +// LoopQuickLoop8: 'Loop/QuickLoop8', +// PlayPauseLEDState: 'PlayPauseLEDState', +// SampleRate: 'SampleRate', +// SongAnalyzed: 'SongAnalyzed', +// SongLoaded: 'SongLoaded', +// SongName: 'SongName', +// SoundSwitchGUID: 'SoundSwitchGuid', +// TrackBytes: 'TrackBytes', +// TrackData: 'TrackData', +// TrackLength: 'TrackLength', +// TrackName: 'TrackName', +// TrackNetworkPath: 'TrackNetworkPath', +// TrackURI: 'TrackUri', +// TrackWasPlayed: 'TrackWasPlayed', +// } \ No newline at end of file diff --git a/types/models/index.ts b/types/models/index.ts index 2d15012..718b110 100644 --- a/types/models/index.ts +++ b/types/models/index.ts @@ -1,2 +1,2 @@ export * from './Track'; -//export * from './state'; \ No newline at end of file +export * from './State'; \ No newline at end of file diff --git a/types/player.ts b/types/player.ts index 88529a8..92e4755 100644 --- a/types/player.ts +++ b/types/player.ts @@ -41,4 +41,5 @@ export interface PlayerLayerState { songLoaded?: boolean; title?: string; trackNetworkPath?: string; + deckIsMaster?: boolean; } From 1764e8dc6d55478d5e90b4f7f7d248eecd183a2a Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Apr 2023 09:05:51 -0400 Subject: [PATCH 103/146] Status updates from listener --- cli/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/index.ts b/cli/index.ts index b27e739..50d0ec6 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -129,7 +129,6 @@ async function main() { async function deckIsMaster(data: ServiceMessage) { if (data.message.json.state) { - console.warn(data.deviceId.string, data.message.name, data.message.json); const deck = parseInt(data.message.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) From 99c83168232a3f56971ef0850f7d502667506414 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Apr 2023 10:00:08 -0400 Subject: [PATCH 104/146] add TrackLoaded listener --- cli/index.ts | 11 +++++++ status/Status.ts | 70 +++++++++++++++++++++++++++---------------- types/models/State.ts | 17 +++++++++-- 3 files changed, 69 insertions(+), 29 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 50d0ec6..da12016 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -133,6 +133,15 @@ async function main() { await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`Now Playing: `, track) + } + } + + async function songLoaded(data: ServiceMessage) { + if (data.message.json.state) { + const deck = parseInt(data.message.name.substring(12, 13)) + await sleep(250); + const track = stageLinq.status.getTrack(data.deviceId, deck) + console.log(`Track Loaded: `, track) if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { const split = track.TrackNetworkPath.substring(6).split('/') const deviceId = new DeviceId(split.shift()); @@ -144,6 +153,7 @@ async function main() { } } + stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); @@ -151,6 +161,7 @@ async function main() { for (let i = 1; i <= info.device.decks; i++) { await stageLinq.status.addTrack(service, i); service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); + service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } service.subscribe(); diff --git a/status/Status.ts b/status/Status.ts index 1aba014..f352142 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,7 +1,7 @@ import EventEmitter = require("events"); import { StageLinq } from '../StageLinq'; import { StateData, StateMap } from '../services'; -import { Player, PlayerOptions } from '../status/Player'; +//import { Player, PlayerOptions } from '../status/Player'; import { PlayerStatus, ServiceMessage, TrackData } from '../types'; import { DeviceId } from '../devices' @@ -18,14 +18,41 @@ export interface StatusData extends PlayerStatus { export class Status extends EventEmitter { readonly parent: InstanceType; - private _players: Map = new Map(); - tracks: Map = new Map(); + //private _players: Map = new Map(); + private tracks: Map = new Map(); + /** + * @constructor + * @param {StageLinq} parent + */ constructor(parent: InstanceType) { super(); this.parent = parent; } + /** + * Add a track to Status + * @param {StateMap} service // Instance of StateMap Service + * @param {number} deck Deck (layer) number + */ + async addTrack(service: StateMap, deck: number,) { + let track = new TrackData(`/Engine/Deck${deck}/Track/`) + this.tracks.set(`{${service.deviceId.string}},${deck}`, track) + for (let item of Object.keys(track)) { + service.addListener(`${track.prefix}${item}`, data => this.listener(data, this)) + } + } + + /** + * Get Track Info from Status + * @param {DeviceId} deviceId DeviceId of the player + * @param {deck} deck Deck (layer) number + * @returns {TrackData} + */ + getTrack(deviceId: DeviceId, deck: number): TrackData { + return this.tracks.get(`{${deviceId.string}},${deck}`); + } + private getTypedValue(data: ServiceMessage): boolean | string | number { if (data.message.json.state) { return data.message.json.state as boolean @@ -46,29 +73,20 @@ export class Status extends EventEmitter { this.tracks.set(`{${data.deviceId.string}},${deck}`, Object.assign(track, { [property]: value })); } - async addTrack(service: StateMap, deck: number,) { - let track = new TrackData(`/Engine/Deck${deck}/Track/`) - this.tracks.set(`{${service.deviceId.string}},${deck}`, track) - for (let item of Object.keys(track)) { - service.addListener(`${track.prefix}${item}`, data => this.listener(data, this)) - } - } - getTrack(deviceId: DeviceId, deck: number): TrackData { - return this.tracks.get(`{${deviceId.string}},${deck}`); - } - addPlayer(options: PlayerOptions) { - const player = new Player(options) - this._players.set(options.deviceId.string, player); - player.on("nowPlaying", (status) => { - this.emit("nowPlaying", status); - }) - player.on("stateChanged", (status) => { - this.emit("stateChanged", status); - }) - player.on("trackLoaded", (status) => { - this.emit("trackLoaded", status); - }) - } + + // addPlayer(options: PlayerOptions) { + // const player = new Player(options) + // this._players.set(options.deviceId.string, player); + // player.on("nowPlaying", (status) => { + // this.emit("nowPlaying", status); + // }) + // player.on("stateChanged", (status) => { + // this.emit("stateChanged", status); + // }) + // player.on("trackLoaded", (status) => { + // this.emit("trackLoaded", status); + // }) + // } } \ No newline at end of file diff --git a/types/models/State.ts b/types/models/State.ts index b0ca979..e4677a3 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,5 +1,5 @@ -export interface ITrackData { +interface ITrackData { ArtistName: string; Bleep: boolean; CuePosition: number; @@ -36,7 +36,7 @@ export interface ITrackData { } export class TrackData implements Partial { - prefix: string; + #prefix: string; ArtistName: string = "" CurrentBPM: number = 0; @@ -51,8 +51,19 @@ export class TrackData implements Partial { TrackNetworkPath: string = ""; TrackURI: string = ""; + /** + * @constructor + * @param {string} prefix State prefix that should proceed the property + */ constructor(prefix: string) { - this.prefix = prefix; + this.#prefix = prefix; + } + + /** + * Get State Prefix + */ + get prefix() { + return this.#prefix; } } From 893286e4d36ed8f2917e8d12123dbfb6a0b4a328 Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Apr 2023 10:44:48 -0400 Subject: [PATCH 105/146] Downgrade better-sqlite3 to 7.6.2 --- package-lock.json | 75 ++++++++++++----------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbe5645..23cc7a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@types/filesystem": "^0.0.32", "@types/uuid": "^9.0.1", + "better-sqlite3": "^7.6.2", "console-stamp": "^3.0.3", "ip": "^1.1.5", "minimist": "^1.2.5" @@ -20,7 +21,6 @@ "@types/better-sqlite3": "^7.6.3", "@types/ip": "^1.1.0", "@types/node": "^18.15.11", - "better-sqlite3": "^8.2.0", "prettier": "^2.5.1", "typedoc": "^0.23.28", "typescript": "^5.0.3" @@ -104,7 +104,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -121,10 +120,9 @@ ] }, "node_modules/better-sqlite3": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.2.0.tgz", - "integrity": "sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==", - "dev": true, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", + "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", "hasInstallScript": true, "dependencies": { "bindings": "^1.5.0", @@ -135,7 +133,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -144,7 +141,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -164,7 +160,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -202,8 +197,7 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/color-convert": { "version": "2.0.1", @@ -245,7 +239,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -260,7 +253,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, "engines": { "node": ">=4.0.0" } @@ -269,7 +261,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true, "engines": { "node": ">=8" } @@ -278,7 +269,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -287,7 +277,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, "engines": { "node": ">=6" } @@ -295,20 +284,17 @@ "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" }, "node_modules/has-flag": { "version": "4.0.0", @@ -322,7 +308,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -341,14 +326,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/ip": { "version": "1.1.8", @@ -365,7 +348,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -395,7 +377,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -429,20 +410,17 @@ "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, "node_modules/node-abi": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz", - "integrity": "sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==", - "dev": true, + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.34.0.tgz", + "integrity": "sha512-O5sNsdgxptez/bSXk2CfpTcVu4yTiFW1YcMHIVn2uAY8MksXWQeReMx63krFrj/QSyjRJ5/jIBkWvJ3/ZimdcA==", "dependencies": { "semver": "^7.3.5" }, @@ -454,7 +432,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -463,7 +440,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -504,7 +480,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -514,7 +489,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -529,7 +503,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -543,7 +516,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -563,7 +535,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -590,7 +561,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, "funding": [ { "type": "github", @@ -610,7 +580,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, "funding": [ { "type": "github", @@ -635,7 +604,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -644,7 +612,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -664,7 +631,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -676,7 +642,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -692,7 +657,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -737,8 +701,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vscode-oniguruma": { "version": "1.7.0", @@ -755,14 +718,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 0a23416..fdfe170 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@types/filesystem": "^0.0.32", "@types/uuid": "^9.0.1", + "better-sqlite3": "^7.6.2", "console-stamp": "^3.0.3", "ip": "^1.1.5", "minimist": "^1.2.5" @@ -24,7 +25,6 @@ "@types/better-sqlite3": "^7.6.3", "@types/ip": "^1.1.0", "@types/node": "^18.15.11", - "better-sqlite3": "^8.2.0", "prettier": "^2.5.1", "typedoc": "^0.23.28", "typescript": "^5.0.3" From 4e8081da491726308c72684fb969cd3b3987950b Mon Sep 17 00:00:00 2001 From: honusz Date: Tue, 4 Apr 2023 12:12:56 -0400 Subject: [PATCH 106/146] Add nowPlaying.ts CLI --- .vscode/launch.json | 18 ++++++++ README.md | 57 ++++++++++++++++-------- cli/nowPlaying.ts | 105 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 18 deletions(-) create mode 100644 cli/nowPlaying.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 5e27840..ac4fc6b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,7 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { "type": "node", "request": "launch", @@ -35,6 +36,23 @@ "${workspaceFolder}/lib/**/*.js", "/**/*.js" ] + }, + { + "type": "node", + "request": "launch", + "name": "Launch NPTS", + "program": "${workspaceFolder}/cli/nowPlaying.ts", + "preLaunchTask": "tsc: build - tsconfig.json", + "internalConsoleOptions": "openOnSessionStart", + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "sourceMaps": true, + "smartStep": true, + "outputCapture": "std", + "skipFiles": [ + "${workspaceFolder}/node_modules/**/*.js", + "${workspaceFolder}/lib/**/*.js", + "/**/*.js" + ] } ] } diff --git a/README.md b/README.md index fff2b04..f8c0ad5 100644 --- a/README.md +++ b/README.md @@ -54,14 +54,6 @@ stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); service.subscribe(); - - // To Utilize NowPlaying Status updates - stageLinq.status.addPlayer({ - stateMap: service, - address: service.socket.remoteAddress, - port: service.socket.remotePort, - deviceId: service.deviceId, - }) }); stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { @@ -72,17 +64,46 @@ stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => ### Using NowPlaying-type updates from StageLinq.status ```ts -stageLinq.status.on('trackLoaded', async (status) => { - console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); - }); - - stageLinq.status.on('nowPlaying', async (status) => { - console.log(`[STATUS] Now Playing ${status.deviceId.string}`); - }); +async function deckIsMaster(data: ServiceMessage) { + if (data.message.json.state) { + const deck = parseInt(data.message.name.substring(12, 13)) + await sleep(250); + const track = stageLinq.status.getTrack(data.deviceId, deck) + console.log(`Now Playing: `, track) + } +} - stageLinq.status.on('stateChanged', async (status) => { - console.log(`[STATUS] State Changed ${status.deviceId.string}`); - }); +async function songLoaded(data: ServiceMessage) { + if (data.message.json.state) { + const deck = parseInt(data.message.name.substring(12, 13)) + await sleep(250); + const track = stageLinq.status.getTrack(data.deviceId, deck) + console.log(`Track Loaded: `, track) + if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { + const split = track.TrackNetworkPath.substring(6).split('/') + const deviceId = new DeviceId(split.shift()); + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + + const trackInfo = await getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + console.log('Track DB Info: ', trackInfo) + downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + } + } +} + +stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { + console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); + + const info = stageLinq.discovery.getConnectionInfo(service.deviceId) + for (let i = 1; i <= info.device.decks; i++) { + await stageLinq.status.addTrack(service, i); + service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); + service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); + } + + service.subscribe(); +}); ``` ## FileTransfer & Databases diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts new file mode 100644 index 0000000..7b2d50d --- /dev/null +++ b/cli/nowPlaying.ts @@ -0,0 +1,105 @@ +import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage } from '../types'; +import { DeviceId } from '../devices' +import { StateData, StateMapDevice } from '../services'; +import { sleep } from '../utils/sleep'; +import { StageLinq } from '../StageLinq'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as Path from 'path'; + + +async function main() { + + const stageLinqOptions: StageLinqOptions = { + downloadDbSources: true, + maxRetries: 3, + actingAs: ActingAsDevice.NowPlaying, + services: [ + ServiceList.StateMap, + ServiceList.FileTransfer, + ], + } + + const stageLinq = new StageLinq(stageLinqOptions); + + async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { + while (!stageLinq.sources.hasSource(sourceName, deviceId)) { + await sleep(250) + } + try { + const source = stageLinq.sources.getSource(sourceName, deviceId); + const data = await stageLinq.sources.downloadFile(source, path); + if (dest && data) { + const filePath = `${dest}/${path.split('/').pop()}` + fs.writeFileSync(filePath, Buffer.from(data)); + } + } catch (e) { + console.error(`Could not download ${path}`); + console.error(e) + } + } + + async function deckIsMaster(data: ServiceMessage) { + if (data.message.json.state) { + const deck = parseInt(data.message.name.substring(12, 13)) + await sleep(250); + const track = stageLinq.status.getTrack(data.deviceId, deck) + + if (stageLinq.options.downloadDbSources) { + const split = track.TrackNetworkPath.substring(6).split('/') + const deviceId = new DeviceId(split.shift()); + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + } + + console.log(`Now Playing: `, track) //Or however you consume it + } + } + + + stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { + + const info = stageLinq.discovery.getConnectionInfo(service.deviceId) + for (let i = 1; i <= info.device.decks; i++) { + await stageLinq.status.addTrack(service, i); + service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); + } + + service.subscribe(); + }); + + ///////////////////////////////////////////////////////////////////////// + // CLI + + let returnCode = 0; + try { + process.on('SIGINT', async function () { + console.info('... exiting'); + + try { + await stageLinq.disconnect(); + } catch (err: any) { + const message = err.stack.toString(); + console.error(message); + } + process.exit(returnCode); + }); + + await stageLinq.connect(); + + while (true) { + await sleep(250); + } + + } catch (err: any) { + const message = err.stack.toString(); + console.error(message); + returnCode = 1; + } + + await stageLinq.disconnect(); + process.exit(returnCode); +} + +main(); \ No newline at end of file From f63e6b1cf896416f10061db895c5ad97bd939898 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 10:57:19 -0400 Subject: [PATCH 107/146] Remove SeviceMessage<> from emits --- cli/index.ts | 80 +++++++++++++--------------------------- cli/nowPlaying.ts | 9 +++-- services/BeatInfo.ts | 26 +++++++------ services/FileTransfer.ts | 55 +++++++++++++++++++++------ services/StateMap.ts | 13 ++++--- status/Status.ts | 50 ++++++------------------- types/index.ts | 5 ++- 7 files changed, 110 insertions(+), 128 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index da12016..7338265 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,8 +1,9 @@ -import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage, Source } from '../types'; +import { ActingAsDevice, StageLinqOptions, ServiceList, Source } from '../types'; import { DeviceId } from '../devices' import { StateData, StateMapDevice, BeatData, BeatInfo } from '../services'; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; +import { Logger } from '../LogEmitter'; import * as fs from 'fs'; import * as os from 'os'; import * as Path from 'path'; @@ -28,10 +29,9 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: await sleep(1000); } try { - const _source = stageLinq.sources.getSource(sourceName, deviceId); - const connection = _source.database.connection; + const source = stageLinq.sources.getSource(sourceName, deviceId); + const connection = source.database.connection; const result = await connection.getTrackInfo(trackName); - console.log('Database entry:', result); return result; } catch (e) { console.error(e); @@ -43,8 +43,8 @@ async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: await sleep(250) } try { - const _source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.sources.downloadFile(_source, path); + const source = stageLinq.sources.getSource(sourceName, deviceId); + const data = await stageLinq.sources.downloadFile(source, path); if (dest && data) { const filePath = `${dest}/${path.split('/').pop()}` fs.writeFileSync(filePath, Buffer.from(data)); @@ -73,6 +73,7 @@ async function main() { const stageLinq = new StageLinq(stageLinqOptions); + stageLinq.logger.on('error', (...args: any) => { console.error(...args); }); @@ -116,7 +117,7 @@ async function main() { stageLinq.devices.on('newDevice', (device) => { - console.log(`[DEVICES] New Device ${device.deviceId.string}`) + Logger.debug(`[DEVICES] New Device ${device.deviceId.string}`) }); stageLinq.devices.on('newService', (device, service) => { @@ -127,33 +128,35 @@ async function main() { if (stageLinq.stateMap) { - async function deckIsMaster(data: ServiceMessage) { - if (data.message.json.state) { - const deck = parseInt(data.message.name.substring(12, 13)) + async function deckIsMaster(data: StateData) { + if (data.json.state) { + const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`Now Playing: `, track) } } - async function songLoaded(data: ServiceMessage) { - if (data.message.json.state) { - const deck = parseInt(data.message.name.substring(12, 13)) + async function songLoaded(data: StateData) { + if (data.json.state) { + const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`Track Loaded: `, track) + if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { const split = track.TrackNetworkPath.substring(6).split('/') const deviceId = new DeviceId(split.shift()); const sourceName = split.shift(); const path = `/${sourceName}/${split.join('/')}` - getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + + const trackInfo = await getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + console.log('Track DB Info: ', trackInfo) downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); } } } - stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); @@ -165,45 +168,12 @@ async function main() { } service.subscribe(); - - - // To Utilize NowPlaying Status updates - // stageLinq.status.addPlayer({ - // stateMap: service, - // address: service.socket.remoteAddress, - // port: service.socket.remotePort, - // deviceId: service.deviceId, - // }) }); - // stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - // //console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); - // }); - - - - stageLinq.status.on('trackLoaded', async (status) => { - console.log(`[STATUS] Track Loaded ${status.deviceId.string}`); - console.dir(status) - const split = status.trackNetworkPath.substring(43).split('/') - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - - if (stageLinq.fileTransfer) { - if (stageLinqOptions.downloadDbSources) { - getTrackInfo(stageLinq, sourceName, status.deviceId, status.trackNetworkPath); - downloadFile(stageLinq, sourceName, status.deviceId, path, Path.resolve(os.tmpdir())); - } - } + stageLinq.stateMap.on('stateMessage', async (data: StateData) => { + Logger.debug(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`); }); - stageLinq.status.on('nowPlaying', async (status) => { - console.log(`[STATUS] Now Playing ${status.deviceId.string}`); - }); - - stageLinq.status.on('stateChanged', async (status) => { - console.log(`[STATUS] State Changed ${status.deviceId.string}`); - }); } @@ -246,12 +216,12 @@ async function main() { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold - function beatCallback(bd: ServiceMessage,) { + function beatCallback(bd: BeatData,) { let deckBeatString = "" - for (let i = 0; i < bd.message.deckCount; i++) { - deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` + for (let i = 0; i < bd.deckCount; i++) { + deckBeatString += `Deck: ${i + 1} Beat: ${bd.deck[i].beat.toFixed(3)}/${bd.deck[i].totalBeats.toFixed(0)} ` } - console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); + console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.clock} ${deckBeatString}`); } //// callback is optional, BeatInfo messages can be consumed by: @@ -276,7 +246,7 @@ async function main() { if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); stageLinq.beatInfo.on('beatMsg', (bd) => { - if (bd.message) { + if (bd) { beatCallback(bd); } }); diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 7b2d50d..253c609 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -1,4 +1,4 @@ -import { ActingAsDevice, StageLinqOptions, ServiceList, ServiceMessage } from '../types'; +import { ActingAsDevice, StageLinqOptions, ServiceList } from '../types'; import { DeviceId } from '../devices' import { StateData, StateMapDevice } from '../services'; import { sleep } from '../utils/sleep'; @@ -33,15 +33,16 @@ async function main() { const filePath = `${dest}/${path.split('/').pop()}` fs.writeFileSync(filePath, Buffer.from(data)); } + console.log(`Downloaded ${path}`) } catch (e) { console.error(`Could not download ${path}`); console.error(e) } } - async function deckIsMaster(data: ServiceMessage) { - if (data.message.json.state) { - const deck = parseInt(data.message.name.substring(12, 13)) + async function deckIsMaster(data: StateData) { + if (data.json.state) { + const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 56e4d5a..e7ecf86 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -8,7 +8,7 @@ import { DeviceId } from '../devices' import { Socket } from 'net'; import { StageLinq } from '../StageLinq'; -type BeatCallback = (n: ServiceMessage) => void; +type BeatCallback = (n: BeatData) => void; type BeatOptions = { everyNBeats: number, @@ -22,6 +22,8 @@ interface deckBeatData { } export interface BeatData { + service: BeatInfo; + deviceId: DeviceId; clock: bigint; deckCount: number; deck: deckBeatData[]; @@ -29,7 +31,7 @@ export interface BeatData { export declare interface BeatInfoHandler { on(event: 'newBeatInfoDevice', listener: (device: Service) => void): this; - on(event: 'beatMsg', listener: (beatData: ServiceMessage, device: Service) => void): this; + on(event: 'beatMsg', listener: (beatData: BeatData, device: Service) => void): this; } export class BeatInfoHandler extends ServiceHandler { @@ -83,7 +85,7 @@ export class BeatInfo extends Service { private _userBeatCallback: BeatCallback = null; private _userBeatOptions: BeatOptions = null; - private _currentBeatData: ServiceMessage = null; + private _currentBeatData: BeatData = null; isBufferedService: boolean = true; /** @@ -99,9 +101,9 @@ export class BeatInfo extends Service { /** * Get current BeatData - * @returns {ServiceMessage} + * @returns {BeatData} */ - getBeatData(): ServiceMessage { + getBeatData(): BeatData { return this._currentBeatData; } @@ -147,6 +149,8 @@ export class BeatInfo extends Service { } assert(ctx.isEOF()) const beatMsg = { + service: this, + deviceId: this.deviceId, clock: clock, deckCount: deckCount, deck: deck, @@ -171,11 +175,11 @@ export class BeatInfo extends Service { if (data && data.message) { if (!this._currentBeatData) { - this._currentBeatData = data; + this._currentBeatData = data.message; this.handler.setBeatData(this.deviceId, data.message); - this.emit('beatMessage', data); + this.emit('beatMessage', data.message); if (this._userBeatCallback) { - this._userBeatCallback(data); + this._userBeatCallback(data.message); } } @@ -184,7 +188,7 @@ export class BeatInfo extends Service { for (let i = 0; i < data.message.deckCount; i++) { if (resCheck( this._userBeatOptions.everyNBeats, - this._currentBeatData.message.deck[i].beat, + this._currentBeatData.deck[i].beat, data.message.deck[i].beat)) { hasUpdated = true; } @@ -194,10 +198,10 @@ export class BeatInfo extends Service { this.emit('beatMessage', data); if (this._userBeatCallback) { - this._userBeatCallback(data); + this._userBeatCallback(data.message); } } - this._currentBeatData = data; + this._currentBeatData = data.message; this.handler.setBeatData(this.deviceId, data.message); } } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index d8e7f8a..7fd8333 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -14,7 +14,16 @@ const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; // TODO: Strongly type this for all possible messages? -type FileTransferData = any; +export interface FileTransferData { + service: FileTransfer; + deviceId: DeviceId; + txid: number; + size?: number; + offset?: number; + sources?: string[]; + data?: Buffer; + +} enum MessageId { TimeCode = 0x0, @@ -50,8 +59,8 @@ export class FileTransferHandler extends ServiceHandler { * @param {Service} service * @param {DeviceId} deviceId */ - public setupService(service: Service, deviceId: DeviceId) { - const fileTransfer = service as FileTransfer; + public setupService(service: Service, deviceId: DeviceId) { + const fileTransfer = service as Service; Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); this.addDevice(deviceId, service); fileTransfer.on('fileTransferProgress', (source, fileName, txid, progress) => { @@ -101,6 +110,8 @@ export class FileTransfer extends Service { id: MessageId.RequestSources, deviceId: this.deviceId, message: { + service: this, + deviceId: this.deviceId, txid: txId, }, socket: socket, @@ -129,6 +140,8 @@ export class FileTransfer extends Service { deviceId: this.deviceId, socket: socket, message: { + service: this, + deviceId: this.deviceId, txid: txId, sources: sources, }, @@ -145,8 +158,10 @@ export class FileTransfer extends Service { id: messageId, deviceId: this.deviceId, message: { - size: size, + service: this, + deviceId: this.deviceId, txid: txId, + size: size, }, socket: socket, }; @@ -157,7 +172,11 @@ export class FileTransfer extends Service { return { id: messageId, deviceId: this.deviceId, - message: null, + message: { + service: this, + deviceId: this.deviceId, + txid: txId, + }, socket: socket, }; } @@ -173,8 +192,10 @@ export class FileTransfer extends Service { deviceId: this.deviceId, socket: socket, message: { - size: filesize, + service: this, + deviceId: this.deviceId, txid: txId, + size: filesize, }, }; } @@ -191,6 +212,8 @@ export class FileTransfer extends Service { deviceId: this.deviceId, socket: socket, message: { + service: this, + deviceId: this.deviceId, txid: txId, data: ctx.readRemainingAsNewBuffer(), offset: offset, @@ -207,7 +230,11 @@ export class FileTransfer extends Service { id: messageId, deviceId: this.deviceId, socket: socket, - message: null, + message: { + service: this, + deviceId: this.deviceId, + txid: txId, + }, }; } @@ -222,7 +249,11 @@ export class FileTransfer extends Service { id: messageId, deviceId: this.deviceId, socket: socket, - message: null, + message: { + service: this, + deviceId: this.deviceId, + txid: txId, + }, }; } @@ -240,7 +271,7 @@ export class FileTransfer extends Service { this.receivedFile.write(data.message.data); } if (data && data.id === MessageId.RequestSources) { - this.sendNoSourcesReply(data); + this.sendNoSourcesReply(data.message); } } @@ -267,7 +298,7 @@ export class FileTransfer extends Service { if (txinfo) { this.receivedFile = new WriteContext({ size: txinfo.size }); const totalChunks = Math.ceil(txinfo.size / CHUNK_SIZE); - const total = parseInt(txinfo.size); + const total = txinfo.size; if (total === 0) { Logger.warn(`${location} doesn't exist or is a streaming file`); @@ -464,10 +495,10 @@ export class FileTransfer extends Service { * Reply to Devices requesting our sources * @param {FileTransferData} data */ - private async sendNoSourcesReply(data: FileTransferData) { + private async sendNoSourcesReply(message: FileTransferData) { const ctx = new WriteContext(); ctx.writeFixedSizedString(MAGIC_MARKER); - ctx.writeUInt32(data.message.txid); + ctx.writeUInt32(message.txid); ctx.writeUInt32(0x3); ctx.writeUInt32(0x0); ctx.writeUInt16(257); diff --git a/services/StateMap.ts b/services/StateMap.ts index 506cb9f..31d5109 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -50,7 +50,8 @@ const controllerStateValues = [...playerStateValues, ...mixerStateValues]; export type StateMapDevice = InstanceType export interface StateData { - service: InstanceType + service: StateMap; + deviceId: DeviceId; name?: string; json?: { type: number; @@ -166,8 +167,9 @@ export class StateMap extends Service { socket: socket, message: { name: name, - service: this, json: json, + service: this, + deviceId: this.deviceId, }, }; } catch (err) { @@ -185,8 +187,9 @@ export class StateMap extends Service { socket: socket, deviceId: this.deviceId, message: { - name: name, service: this, + deviceId: this.deviceId, + name: name, interval: interval, }, }; @@ -200,14 +203,14 @@ export class StateMap extends Service { protected messageHandler(data: ServiceMessage): void { if (this.listenerCount(data?.message?.name) && data?.message?.json) { - this.emit(data.message.name, data) + this.emit(data.message.name, data.message) } if (data?.message?.interval) { this.sendStateResponse(data.message.name, data.socket); } if (data?.message?.json) { - this.emit('stateMessage', data); + this.emit('stateMessage', data.message); } if (data && data.message.json && !this.hasReceivedState) { diff --git a/status/Status.ts b/status/Status.ts index f352142..86b51ca 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,24 +1,12 @@ import EventEmitter = require("events"); import { StageLinq } from '../StageLinq'; import { StateData, StateMap } from '../services'; -//import { Player, PlayerOptions } from '../status/Player'; -import { PlayerStatus, ServiceMessage, TrackData } from '../types'; +import { TrackData } from '../types'; import { DeviceId } from '../devices' -export declare interface Status { - on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; - on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; - on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; -} - -export interface StatusData extends PlayerStatus { - deviceId: DeviceId -} - export class Status extends EventEmitter { readonly parent: InstanceType; - //private _players: Map = new Map(); private tracks: Map = new Map(); /** @@ -53,40 +41,24 @@ export class Status extends EventEmitter { return this.tracks.get(`{${deviceId.string}},${deck}`); } - private getTypedValue(data: ServiceMessage): boolean | string | number { - if (data.message.json.state) { - return data.message.json.state as boolean + private getTypedValue(data: StateData): boolean | string | number { + if (data.json.state) { + return data.json.state as boolean } - if (data.message.json.string) { - return data.message.json.string as string + if (data.json.string) { + return data.json.string as string } - if (data.message.json.value) { - return data.message.json.value as number + if (data.json.value) { + return data.json.value as number } } - private listener(data: ServiceMessage, status: Status) { - const deck = parseInt(data.message.name.substring(12, 13)) - const property = data.message.name.split('/').pop() + private listener(data: StateData, status: Status) { + const deck = parseInt(data.name.substring(12, 13)) + const property = data.name.split('/').pop() const value = this.getTypedValue(data); const track = status.tracks.get(`{${data.deviceId.string}},${deck}`) this.tracks.set(`{${data.deviceId.string}},${deck}`, Object.assign(track, { [property]: value })); } - - - - // addPlayer(options: PlayerOptions) { - // const player = new Player(options) - // this._players.set(options.deviceId.string, player); - // player.on("nowPlaying", (status) => { - // this.emit("nowPlaying", status); - // }) - // player.on("stateChanged", (status) => { - // this.emit("stateChanged", status); - // }) - // player.on("trackLoaded", (status) => { - // this.emit("trackLoaded", status); - // }) - // } } \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index 3a4e983..a664ce5 100644 --- a/types/index.ts +++ b/types/index.ts @@ -89,6 +89,7 @@ export interface StageLinqOptions { actingAs?: DiscoveryMessageOptions; downloadDbSources?: boolean; services?: ServiceList[]; + connectToMixer?: boolean } type deviceType = { @@ -113,6 +114,6 @@ export const deviceTypes: deviceType = { NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER', decks: 2 }, NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER', decks: 2 }, NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER', decks: 2 }, - JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, - JM10: { name: 'DN-X1850Prime', type: 'MIXER', decks: 0 }, + //JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, + //JM10: { name: 'DN-X1850Prime', type: 'MIXER', decks: 0 }, } From 642a645056095aa02987afbabc7b9fa4f151150b Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 11:15:51 -0400 Subject: [PATCH 108/146] remove token, use deviceId, device>unit --- cli/index.ts | 4 ++-- cli/nowPlaying.ts | 2 +- network/Discovery.ts | 8 +++----- services/Directory.ts | 2 +- services/FileTransfer.ts | 2 -- services/StateMap.ts | 6 +++--- types/index.ts | 3 +-- 7 files changed, 11 insertions(+), 16 deletions(-) diff --git a/cli/index.ts b/cli/index.ts index 7338265..cdbf801 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -67,7 +67,7 @@ async function main() { services: [ ServiceList.StateMap, ServiceList.FileTransfer, - //ServiceList.BeatInfo, + ServiceList.BeatInfo, ], } @@ -161,7 +161,7 @@ async function main() { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); const info = stageLinq.discovery.getConnectionInfo(service.deviceId) - for (let i = 1; i <= info.device.decks; i++) { + for (let i = 1; i <= info.unit.decks; i++) { await stageLinq.status.addTrack(service, i); service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 253c609..8cd4849 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -62,7 +62,7 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { const info = stageLinq.discovery.getConnectionInfo(service.deviceId) - for (let i = 1; i <= info.device.decks; i++) { + for (let i = 1; i <= info.unit.decks; i++) { await stageLinq.status.addTrack(service, i); service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); } diff --git a/network/Discovery.ts b/network/Discovery.ts index 98a8d50..2041b80 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -213,7 +213,7 @@ export class Discovery extends EventEmitter { } const connectionInfo: ConnectionInfo = { - token: ctx.read(16), + deviceId: new DeviceId(ctx.read(16)), source: ctx.readNetworkStringUTF16(), action: ctx.readNetworkStringUTF16(), software: { @@ -223,10 +223,9 @@ export class Discovery extends EventEmitter { port: ctx.readUInt16(), address: address, }; - connectionInfo.deviceId = new DeviceId(connectionInfo.token) connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); if (deviceTypes[connectionInfo.software.name]) { - connectionInfo.device = deviceTypes[connectionInfo.software.name]; + connectionInfo.unit = deviceTypes[connectionInfo.software.name]; } assert(ctx.isEOF()); @@ -250,7 +249,6 @@ export class Discovery extends EventEmitter { version: discoveryMessageOptions.version }, source: discoveryMessageOptions.source, - token: discoveryMessageOptions.token, }; return msg; } @@ -263,7 +261,7 @@ export class Discovery extends EventEmitter { private writeDiscoveryMessage(message: DiscoveryMessage): Buffer { const ctx = new WriteContext(); ctx.writeFixedSizedString(DISCOVERY_MESSAGE_MARKER); - ctx.write(message.token); + ctx.write(message.deviceId.array); ctx.writeNetworkStringUTF16(message.source); ctx.writeNetworkStringUTF16(message.action); ctx.writeNetworkStringUTF16(message.software.name); diff --git a/services/Directory.ts b/services/Directory.ts index b6a2712..7188b37 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -55,7 +55,7 @@ export class Directory extends Service { this.timeAlive = Number(timeAlive / (1000n * 1000n * 1000n)); } - if (deviceInfo && deviceInfo.device && deviceInfo.device.type === 'MIXER') { + if (deviceInfo && deviceInfo.unit && deviceInfo.unit.type === 'MIXER') { this.sendTimeStampReply(token); } break; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 7fd8333..2c9833a 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -13,7 +13,6 @@ import { Socket } from 'net'; const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; -// TODO: Strongly type this for all possible messages? export interface FileTransferData { service: FileTransfer; deviceId: DeviceId; @@ -22,7 +21,6 @@ export interface FileTransferData { offset?: number; sources?: string[]; data?: Buffer; - } enum MessageId { diff --git a/services/StateMap.ts b/services/StateMap.ts index 31d5109..e924317 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -112,14 +112,14 @@ export class StateMap extends Service { */ public async subscribe() { const socket = this.socket; - while (!this.parent.discovery.hasConnectionInfo(this.deviceId)) { + while (!this.parent.devices.hasDevice(this.deviceId)) { await sleep(200); } Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); - const thisPeer = this.parent.discovery.getConnectionInfo(this.deviceId); + const connectionInfo = this.parent.devices.device(this.deviceId).info; - switch (thisPeer?.device?.type) { + switch (connectionInfo?.unit?.type) { case "PLAYER": { for (let state of playerStateValues) { await this.subscribeState(state, 0, socket); diff --git a/types/index.ts b/types/index.ts index a664ce5..bab7f34 100644 --- a/types/index.ts +++ b/types/index.ts @@ -12,7 +12,6 @@ export * from './models'; export interface DiscoveryMessage { - token: Uint8Array; deviceId?: DeviceId; source: string; action: string; @@ -32,7 +31,7 @@ export enum DeviceType { export interface ConnectionInfo extends DiscoveryMessage { address: IpAddress; - device?: { + unit?: { name: string, type: string, decks: number From 73b4135baaf7ec4040aba0829b9ca473fe028207 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 12:18:30 -0400 Subject: [PATCH 109/146] Cleanup some InstanceTypes --- StageLinq/index.ts | 22 +++++++--------------- cli/index.ts | 7 +++---- cli/nowPlaying.ts | 7 +++---- network/Discovery.ts | 22 ++-------------------- services/BeatInfo.ts | 2 +- services/Service.ts | 6 +++--- services/StateMap.ts | 11 ++++++----- status/Status.ts | 37 ++++++++++++++++++------------------- 8 files changed, 43 insertions(+), 71 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 11bade9..a9be701 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,8 +1,8 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; -import { ActingAsDevice, StageLinqOptions, ConnectionInfo, ServiceMessage } from '../types'; -import { Devices, DeviceId } from '../devices' +import { ActingAsDevice, StageLinqOptions } from '../types'; +import { Devices } from '../devices' import { Databases, Sources } from '../Databases'; import * as Services from '../services'; import { Status } from '../status/Status'; @@ -19,14 +19,6 @@ export interface ServiceHandlers { [key: string]: InstanceType; } -export declare interface StageLinq { - on(event: 'connected', listener: (connectionInfo: ConnectionInfo) => void): this; - on(event: 'newStateMapDevice', listener: (deviceId: DeviceId, service: InstanceType) => void): this; - on(event: 'stateMessage', listener: (message: ServiceMessage) => void): this; - on(event: 'connection', listener: (serviceName: string, deviceId: DeviceId) => void): this; - on(event: 'fileProgress', listener: (path: string, total: number, bytesDownloaded: number, percentComplete: number) => void): this; -} - /** * Main StageLinq class. */ @@ -39,16 +31,16 @@ export class StageLinq extends EventEmitter { public readonly logger: Logger = Logger.instance; public readonly discovery: Discovery = new Discovery(this); - public readonly stateMap: InstanceType = null; - public readonly fileTransfer: InstanceType = null; - public readonly beatInfo: InstanceType = null; - public readonly timeSync: InstanceType = null; + public readonly stateMap: Services.StateMapHandler = null; + public readonly fileTransfer: Services.FileTransferHandler = null; + public readonly beatInfo: Services.BeatInfoHandler = null; + public readonly timeSync: Services.TimeSynchronizationHandler = null; public readonly databases: Databases = null; public readonly sources: Sources = null; public readonly status: Status = null; - private directory: InstanceType = null; + private directory: Services.Directory = null; private servers: Map = new Map(); /** diff --git a/cli/index.ts b/cli/index.ts index cdbf801..e14fdee 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,6 +1,6 @@ import { ActingAsDevice, StageLinqOptions, ServiceList, Source } from '../types'; import { DeviceId } from '../devices' -import { StateData, StateMapDevice, BeatData, BeatInfo } from '../services'; +import { StateData, StateMap, BeatData, BeatInfo } from '../services'; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; @@ -157,12 +157,11 @@ async function main() { } } - stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { + stageLinq.stateMap.on('newDevice', async (service: StateMap) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - const info = stageLinq.discovery.getConnectionInfo(service.deviceId) + const info = stageLinq.devices.device(service.deviceId).info for (let i = 1; i <= info.unit.decks; i++) { - await stageLinq.status.addTrack(service, i); service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 8cd4849..5d98223 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -1,6 +1,6 @@ import { ActingAsDevice, StageLinqOptions, ServiceList } from '../types'; import { DeviceId } from '../devices' -import { StateData, StateMapDevice } from '../services'; +import { StateData, StateMap } from '../services'; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; import * as fs from 'fs'; @@ -59,11 +59,10 @@ async function main() { } - stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { + stageLinq.stateMap.on('newDevice', async (service: StateMap) => { - const info = stageLinq.discovery.getConnectionInfo(service.deviceId) + const info = stageLinq.devices.device(service.deviceId).info for (let i = 1; i <= info.unit.decks; i++) { - await stageLinq.status.addTrack(service, i); service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); } diff --git a/network/Discovery.ts b/network/Discovery.ts index 2041b80..a12c697 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -62,27 +62,9 @@ export class Discovery extends EventEmitter { return this.peers.get(deviceId.string); } - /** - * Set ConnectionInfo - * @param {DeviceId} deviceId - * @param {ConnectionInfo} connectionInfo - */ - public setConnectionInfo(deviceId: DeviceId, connectionInfo: ConnectionInfo) { - this.peers.set(deviceId.string, connectionInfo); - } - - /** - * - * @param {DeviceId} deviceId - * @returns {boolean} - */ - public hasConnectionInfo(deviceId: DeviceId): boolean { - return this.peers.has(deviceId.string); - } - /** * Get list of devices - * @returns {string[]} + * @returns {string[]} An array of DeviceId strings */ public getDeviceList(): string[] { return [...this.peers.keys()] @@ -90,7 +72,7 @@ export class Discovery extends EventEmitter { /** * Get array of device ConnectionInfos - * @returns {ConnectionInfo[]} + * @returns {ConnectionInfo[]} An array of ConnectionInfos */ public getDevices(): ConnectionInfo[] { return [...this.peers.values()] diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index e7ecf86..68eed1a 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -94,7 +94,7 @@ export class BeatInfo extends Service { * @param {BeatInfoHandler} serviceHandler * @param {DeviceId} [deviceId] */ - constructor(parent: InstanceType, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { + constructor(parent: StageLinq, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { super(parent, serviceHandler, deviceId) this.handler = this._handler as BeatInfoHandler } diff --git a/services/Service.ts b/services/Service.ts index 56a3d94..c7fed28 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -30,7 +30,7 @@ export abstract class ServiceHandler extends EventEmitter { * @param {string} serviceName */ - constructor(parent: InstanceType, serviceName: string) { + constructor(parent: StageLinq, serviceName: string) { super(); this.parent = parent; this.name = serviceName; @@ -119,7 +119,7 @@ export abstract class Service extends EventEmitter { public socket: Socket = null; protected isBufferedService: boolean = true; - protected parent: InstanceType; + protected parent: StageLinq; protected _handler: ServiceHandler = null; protected timeout: NodeJS.Timer; @@ -131,7 +131,7 @@ export abstract class Service extends EventEmitter { * @param {ServiceHandler} serviceHandler * @param {DeviceId} deviceId */ - constructor(parent: InstanceType, serviceHandler: InstanceType, deviceId?: DeviceId) { + constructor(parent: StageLinq, serviceHandler: InstanceType, deviceId?: DeviceId) { super(); this.parent = parent; this._handler = serviceHandler as ServiceHandler; diff --git a/services/StateMap.ts b/services/StateMap.ts index e924317..9388c17 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -47,8 +47,6 @@ const mixerStateValues = Object.values(StageLinqValueObj.mixer); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; -export type StateMapDevice = InstanceType - export interface StateData { service: StateMap; deviceId: DeviceId; @@ -80,10 +78,13 @@ export class StateMapHandler extends ServiceHandler { this.emit('stateMessage', data); }); - stateMap.on('newDevice', (service: InstanceType) => { + stateMap.on('newDevice', (service: StateMap) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) + const info = this.parent.devices.device(service.deviceId).info; + for (let i = 1; i <= info.unit.decks; i++) { + this.parent.status.addDeck(service, i); + } this.emit('newDevice', service); - assert(service); }) } } @@ -102,7 +103,7 @@ export class StateMap extends Service { * @param {StateMapHandler} serviceHandler * @param {DeviceId} deviceId */ - constructor(parent: InstanceType, serviceHandler: StateMapHandler, deviceId?: DeviceId) { + constructor(parent: StageLinq, serviceHandler: StateMapHandler, deviceId?: DeviceId) { super(parent, serviceHandler, deviceId) this.handler = this._handler as StateMapHandler } diff --git a/status/Status.ts b/status/Status.ts index 86b51ca..aeb276f 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -19,11 +19,21 @@ export class Status extends EventEmitter { } /** - * Add a track to Status + * Get Track Info from Status + * @param {DeviceId} deviceId DeviceId of the player + * @param {deck} deck Deck (layer) number + * @returns {TrackData} + */ + getTrack(deviceId: DeviceId, deck: number): TrackData { + return this.tracks.get(`{${deviceId.string}},${deck}`); + } + + /** + * Add a Deck for Status to monitor * @param {StateMap} service // Instance of StateMap Service * @param {number} deck Deck (layer) number */ - async addTrack(service: StateMap, deck: number,) { + async addDeck(service: StateMap, deck: number) { let track = new TrackData(`/Engine/Deck${deck}/Track/`) this.tracks.set(`{${service.deviceId.string}},${deck}`, track) for (let item of Object.keys(track)) { @@ -31,14 +41,12 @@ export class Status extends EventEmitter { } } - /** - * Get Track Info from Status - * @param {DeviceId} deviceId DeviceId of the player - * @param {deck} deck Deck (layer) number - * @returns {TrackData} - */ - getTrack(deviceId: DeviceId, deck: number): TrackData { - return this.tracks.get(`{${deviceId.string}},${deck}`); + private listener(data: StateData, status: Status) { + const deck = parseInt(data.name.substring(12, 13)) + const property = data.name.split('/').pop() + const value = this.getTypedValue(data); + const track = status.tracks.get(`{${data.deviceId.string}},${deck}`) + this.tracks.set(`{${data.deviceId.string}},${deck}`, Object.assign(track, { [property]: value })); } private getTypedValue(data: StateData): boolean | string | number { @@ -52,13 +60,4 @@ export class Status extends EventEmitter { return data.json.value as number } } - - private listener(data: StateData, status: Status) { - const deck = parseInt(data.name.substring(12, 13)) - const property = data.name.split('/').pop() - const value = this.getTypedValue(data); - const track = status.tracks.get(`{${data.deviceId.string}},${deck}`) - this.tracks.set(`{${data.deviceId.string}},${deck}`, Object.assign(track, { [property]: value })); - } - } \ No newline at end of file From dc0513dcea32e48805199a7e43a8b1d399fd1b48 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 12:53:46 -0400 Subject: [PATCH 110/146] add track.source, update readme --- README.md | 108 ++++++++++++++++++++++++++++++++---------- cli/index.ts | 12 ++--- cli/nowPlaying.ts | 9 +--- devices/Devices.ts | 4 ++ services/StateMap.ts | 3 +- types/models/State.ts | 27 +++++++++++ 6 files changed, 121 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index f8c0ad5..0f5dc94 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,34 @@ Rather than searching out devices via discovery, we are able to have devices ini * Allows connections from devices we couldn't use previously (i.e. x1800/x1850 mixers). +## Notes on Terminilogy + +An effort has been made to standardize the syntax used in the library, and to be consitent with the syntax Denon uses (when they have, in fact, been consistent themselves). + +### Physical & Network +| Syntax | Description | Example | +| --- | --- | --- | +| Unit | A discrete physical player, controller, or mixer | SC600, PRIME4, X1850 | +| Device | A unique StageLinq network entity, represented by a DeviceId | _See DeviceId_ +| Service | An instance of a particular Service endpoint | StateMap, FileTransfer, BeatInfo | +| DeviceId | The GUID representing a StageLinq Device. | 12345678-1234-1234-1234-123456789ABC | + +### Software & States +| Syntax | Description | Example | +| --- | --- | --- | +| Deck (1..4) | A singular music-playing instance on a Unit | An SC5000 has 2 Decks, A PRIME4 has 4 Decks | +| Layer (A..B) | For switching between two Decks on a Unit | Layer A is Deck 1, Layer B is Deck 2 | +| Track | A music file loaded on a Deck | | +| Song | Sometimes used interchangabley with Track in some State names | | + + + + ## Implementing Selected Services We can choose which services to implement by including them in the `StageLinqOptions` parameter passed to Stagelinq on initialization. ```ts const stageLinqOptions: StageLinqOptions = { - downloadDbSources: false, + downloadDbSources: true, maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ @@ -26,8 +49,18 @@ const stageLinqOptions: StageLinqOptions = { } ``` +## Starting StageLinq + +StageLinq is started as it was previously: +```ts +const stageLinq = new StageLinq(stageLinqOptions); + +await stageLinq.connect(); +``` + ## Discovery +Discovery emits a number of messages which may be helpful when debugging. ```ts stageLinq.discovery.on('listening', () => { @@ -45,7 +78,38 @@ stageLinq.discovery.on('newDiscoveryDevice', (info) => { stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) }); - ``` +``` + +`updatedDiscoveryDevice` is emitted when a Device is broadcasting a new Directory port, which is indicative of a reset. The Device should automatically reconnect without any action required from the user. + +Discovery offers a few methods for getting ConnectionInfos for Devices on the network: +```ts +/** + * Get ConnectionInfo + * @param {DeviceId} deviceId + * @returns {ConnectionInfo} + */ +public getConnectionInfo(deviceId: DeviceId): ConnectionInfo { + return this.peers.get(deviceId.string); +} + +/** + * Get list of devices + * @returns {string[]} An array of DeviceId strings + */ +public getDeviceList(): string[] { + return [...this.peers.keys()] +} + +/** + * Get array of device ConnectionInfos + * @returns {ConnectionInfo[]} An array of ConnectionInfos + */ +public getDevices(): ConnectionInfo[] { + return [...this.peers.values()] +} +``` + @@ -56,38 +120,33 @@ stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { service.subscribe(); }); -stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage) => { - console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`); +stageLinq.stateMap.on('stateMessage', async (data: StateData) => { + console.log(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`); }); ``` ### Using NowPlaying-type updates from StageLinq.status ```ts -async function deckIsMaster(data: ServiceMessage) { - if (data.message.json.state) { - const deck = parseInt(data.message.name.substring(12, 13)) +async function deckIsMaster(data: StateData) { + if (data.json.state) { + const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`Now Playing: `, track) } } -async function songLoaded(data: ServiceMessage) { - if (data.message.json.state) { - const deck = parseInt(data.message.name.substring(12, 13)) +async function songLoaded(data: StateData) { + if (data.json.state) { + const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`Track Loaded: `, track) if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { - const split = track.TrackNetworkPath.substring(6).split('/') - const deviceId = new DeviceId(split.shift()); - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - - const trackInfo = await getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath); console.log('Track DB Info: ', trackInfo) - downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } } } @@ -95,9 +154,8 @@ async function songLoaded(data: ServiceMessage) { stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - const info = stageLinq.discovery.getConnectionInfo(service.deviceId) - for (let i = 1; i <= info.device.decks; i++) { - await stageLinq.status.addTrack(service, i); + const info = stageLinq.devices.device(service.deviceId).info + for (let i = 1; i <= info.unit.decks; i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } @@ -129,7 +187,9 @@ stageLinq.databases.on('dbDownloaded', (source: Source) => { console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`); }); ``` + ## BeatInfo + ```ts const beatOptions = { // Resolution for triggering callback @@ -142,12 +202,12 @@ const beatOptions = { // User callback function. // Will be triggered everytime a player's beat counter crosses the resolution threshold -function beatCallback(bd: ServiceMessage,) { +function beatCallback(bd: BeatData,) { let deckBeatString = "" - for (let i = 0; i < bd.message.deckCount; i++) { - deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} ` + for (let i = 0; i < bd.deckCount; i++) { + deckBeatString += `Deck: ${i + 1} Beat: ${bd.deck[i].beat.toFixed(3)}/${bd.deck[i].totalBeats.toFixed(0)} ` } - console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`); + console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.clock} ${deckBeatString}`); } //// callback is optional, BeatInfo messages can be consumed by: diff --git a/cli/index.ts b/cli/index.ts index e14fdee..492a68c 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -145,14 +145,9 @@ async function main() { console.log(`Track Loaded: `, track) if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { - const split = track.TrackNetworkPath.substring(6).split('/') - const deviceId = new DeviceId(split.shift()); - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - - const trackInfo = await getTrackInfo(stageLinq, sourceName, deviceId, track.TrackNetworkPath); + const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath); console.log('Track DB Info: ', trackInfo) - downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } } } @@ -160,8 +155,7 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMap) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - const info = stageLinq.devices.device(service.deviceId).info - for (let i = 1; i <= info.unit.decks; i++) { + for (let i = 1; i <= stageLinq.devices.device(service.deviceId).deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 5d98223..9c93f2f 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -47,11 +47,7 @@ async function main() { const track = stageLinq.status.getTrack(data.deviceId, deck) if (stageLinq.options.downloadDbSources) { - const split = track.TrackNetworkPath.substring(6).split('/') - const deviceId = new DeviceId(split.shift()); - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - downloadFile(stageLinq, sourceName, deviceId, path, Path.resolve(os.tmpdir())); + downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } console.log(`Now Playing: `, track) //Or however you consume it @@ -61,8 +57,7 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMap) => { - const info = stageLinq.devices.device(service.deviceId).info - for (let i = 1; i <= info.unit.decks; i++) { + for (let i = 1; i <= stageLinq.devices.device(service.deviceId).deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); } diff --git a/devices/Devices.ts b/devices/Devices.ts index 171afda..4606837 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -116,6 +116,10 @@ export class Device extends EventEmitter { this.info = info; } + deckCount(): number { + return this.info.unit.decks + } + /** * Add an instantiated Service * @param {Service} service diff --git a/services/StateMap.ts b/services/StateMap.ts index 9388c17..c6639b7 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -80,8 +80,7 @@ export class StateMapHandler extends ServiceHandler { stateMap.on('newDevice', (service: StateMap) => { Logger.debug(`New StateMap Device ${service.deviceId.string}`) - const info = this.parent.devices.device(service.deviceId).info; - for (let i = 1; i <= info.unit.decks; i++) { + for (let i = 1; i <= this.parent.devices.device(service.deviceId).deckCount(); i++) { this.parent.status.addDeck(service, i); } this.emit('newDevice', service); diff --git a/types/models/State.ts b/types/models/State.ts index e4677a3..71fa6a3 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,5 +1,12 @@ +import { DeviceId } from "../../devices"; + interface ITrackData { + source: { + name: string; + location: DeviceId; + path: string; + } ArtistName: string; Bleep: boolean; CuePosition: number; @@ -37,6 +44,11 @@ interface ITrackData { export class TrackData implements Partial { #prefix: string; + #source: { + name: string; + location: DeviceId; + path: string; + } = null; ArtistName: string = "" CurrentBPM: number = 0; @@ -65,6 +77,21 @@ export class TrackData implements Partial { get prefix() { return this.#prefix; } + + get source() { + if (this.TrackNetworkPath) { + const split = this.TrackNetworkPath.substring(6).split('/') + const deviceId = new DeviceId(split.shift()); + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + this.#source = { + name: sourceName, + location: deviceId, + path: path, + } + } + return this.#source + } } From e1228e09eebceeb16d4412ed38ac98435afa4cac Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 13:46:54 -0400 Subject: [PATCH 111/146] refactoring ./types --- Databases/Sources.ts | 1 - network/Discovery.ts | 18 +- services/BeatInfo.ts | 5 +- services/Directory.ts | 4 +- services/FileTransfer.ts | 19 +- services/StateMap.ts | 16 +- services/TimeSync.ts | 12 +- status/Player.ts | 494 +++++++++++++++++------------------ status/PlayerMessageQueue.ts | 126 ++++----- types/common.ts | 284 ++------------------ types/index.ts | 119 +-------- types/messages.ts | 32 +++ types/models/Source.ts | 22 ++ types/models/State.ts | 237 ----------------- types/models/Unit.ts | 26 ++ types/models/index.ts | 4 +- types/options.ts | 72 +++++ types/player.ts | 84 +++--- types/tokens.ts | 49 ---- 19 files changed, 555 insertions(+), 1069 deletions(-) create mode 100644 types/messages.ts create mode 100644 types/models/Source.ts create mode 100644 types/models/Unit.ts create mode 100644 types/options.ts delete mode 100644 types/tokens.ts diff --git a/Databases/Sources.ts b/Databases/Sources.ts index b8293cf..2231168 100644 --- a/Databases/Sources.ts +++ b/Databases/Sources.ts @@ -13,7 +13,6 @@ export declare interface Sources { on(event: 'newSource', listener: (source: Source) => void): this; } - export class Sources extends EventEmitter { private _sources: Map = new Map(); public readonly parent: InstanceType; diff --git a/network/Discovery.ts b/network/Discovery.ts index a12c697..8799c83 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,4 +1,4 @@ -import { ConnectionInfo, DiscoveryMessage, Action, IpAddress, deviceTypes, } from '../types'; +import { ConnectionInfo, DiscoveryMessage, DiscoveryMessageOptions, Action, IpAddress, Units } from '../types'; import { DeviceId } from '../devices' import { Socket, RemoteInfo } from 'dgram'; import * as UDPSocket from 'dgram'; @@ -12,13 +12,7 @@ import { StageLinq } from '../StageLinq'; import EventEmitter = require('events'); -export interface DiscoveryMessageOptions { - name: string; - version: string; - source: string; - token: Uint8Array; - port?: number -}; + type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; @@ -89,7 +83,7 @@ export class Discovery extends EventEmitter { this.emit('listening'); await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { - if (deviceTypes[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.deviceId)) { + if (Units[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.deviceId)) { const device = this.parent.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); Logger.silly(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) @@ -98,7 +92,7 @@ export class Discovery extends EventEmitter { this.hasLooped = true; } - if (deviceTypes[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.deviceId) && this.parent.devices.hasNewInfo(connectionInfo.deviceId, connectionInfo)) { + if (Units[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.deviceId) && this.parent.devices.hasNewInfo(connectionInfo.deviceId, connectionInfo)) { this.peers.set(connectionInfo.deviceId.string, connectionInfo); this.parent.devices.updateDeviceInfo(connectionInfo.deviceId, connectionInfo); Logger.silly(`Updated port for ${connectionInfo.deviceId.string}`); @@ -206,8 +200,8 @@ export class Discovery extends EventEmitter { address: address, }; connectionInfo.addressPort = [connectionInfo.address, connectionInfo.port].join(":"); - if (deviceTypes[connectionInfo.software.name]) { - connectionInfo.unit = deviceTypes[connectionInfo.software.name]; + if (Units[connectionInfo.software.name]) { + connectionInfo.unit = Units[connectionInfo.software.name]; } assert(ctx.isEOF()); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 68eed1a..ea301f1 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -5,7 +5,6 @@ import { Service, ServiceHandler } from './Service'; import { Logger } from '../LogEmitter'; import type { ServiceMessage } from '../types'; import { DeviceId } from '../devices' -import { Socket } from 'net'; import { StageLinq } from '../StageLinq'; type BeatCallback = (n: BeatData) => void; @@ -130,7 +129,7 @@ export class BeatInfo extends Service { await this.write(ctx); } - protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext): ServiceMessage { assert(ctx.sizeLeft() > 72); let id = ctx.readUInt32() const clock = ctx.readUInt64(); @@ -157,8 +156,6 @@ export class BeatInfo extends Service { } return { id: id, - deviceId: this.deviceId, - socket: socket, message: beatMsg } } diff --git a/services/Directory.ts b/services/Directory.ts index 7188b37..08d1c9f 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,7 +1,7 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; import { Service, ServiceHandler } from './Service'; -import { ServiceMessage, MessageId, deviceTypes } from '../types'; +import { ServiceMessage, MessageId, Units } from '../types'; import { DeviceId } from '../devices' import { sleep } from '../utils/sleep'; import { Socket } from 'net'; @@ -111,7 +111,7 @@ export class Directory extends Service { let services: InstanceType[] = [] const device = await this.parent.devices.getDevice(deviceId); for (const serviceName of Object.keys(this.parent.services)) { - if (device && !!deviceTypes[device.info?.software?.name]) { + if (device && !!Units[device.info?.software?.name]) { switch (serviceName) { case 'FileTransfer': { const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 2c9833a..e6ed180 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -7,7 +7,6 @@ import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source } from '../types'; import { DeviceId } from '../devices' -import { Socket } from 'net'; const MAGIC_MARKER = 'fltx'; @@ -88,7 +87,7 @@ export class FileTransfer extends Service { return this.#txid; } - protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext): ServiceMessage { const check = ctx.getString(4); if (check !== MAGIC_MARKER) { @@ -106,13 +105,11 @@ export class FileTransfer extends Service { return { id: MessageId.RequestSources, - deviceId: this.deviceId, message: { service: this, deviceId: this.deviceId, txid: txId, }, - socket: socket, }; } @@ -135,8 +132,6 @@ export class FileTransfer extends Service { return { id: messageId, - deviceId: this.deviceId, - socket: socket, message: { service: this, deviceId: this.deviceId, @@ -154,14 +149,12 @@ export class FileTransfer extends Service { return { id: messageId, - deviceId: this.deviceId, message: { service: this, deviceId: this.deviceId, txid: txId, size: size, }, - socket: socket, }; } @@ -169,13 +162,11 @@ export class FileTransfer extends Service { // End of result indication? return { id: messageId, - deviceId: this.deviceId, message: { service: this, deviceId: this.deviceId, txid: txId, }, - socket: socket, }; } @@ -187,8 +178,6 @@ export class FileTransfer extends Service { assert(id === 1) return { id: messageId, - deviceId: this.deviceId, - socket: socket, message: { service: this, deviceId: this.deviceId, @@ -207,8 +196,6 @@ export class FileTransfer extends Service { return { id: messageId, - deviceId: this.deviceId, - socket: socket, message: { service: this, deviceId: this.deviceId, @@ -226,8 +213,6 @@ export class FileTransfer extends Service { return { id: messageId, - deviceId: this.deviceId, - socket: socket, message: { service: this, deviceId: this.deviceId, @@ -245,8 +230,6 @@ export class FileTransfer extends Service { return { id: messageId, - deviceId: this.deviceId, - socket: socket, message: { service: this, deviceId: this.deviceId, diff --git a/services/StateMap.ts b/services/StateMap.ts index c6639b7..4b17634 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,7 +1,7 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { ServiceMessage, StageLinqValueObj } from '../types'; +import { ServiceMessage, StateNames } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; @@ -42,8 +42,8 @@ const MAGIC_MARKER_JSON = 0x00000000; // const mixerStateValues = stateReducer(stagelinqConfig.mixer, '/'); // const controllerStateValues = [...playerStateValues, ...mixerStateValues]; -const playerStateValues = Object.values(StageLinqValueObj.player); -const mixerStateValues = Object.values(StageLinqValueObj.mixer); +const playerStateValues = Object.values(StateNames.player); +const mixerStateValues = Object.values(StateNames.mixer); const controllerStateValues = [...playerStateValues, ...mixerStateValues]; @@ -144,7 +144,7 @@ export class StateMap extends Service { } - protected parseData(ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(ctx: ReadContext): ServiceMessage { assert(this.deviceId); const marker = ctx.getString(4); @@ -163,8 +163,6 @@ export class StateMap extends Service { const json = JSON.parse(jsonString); return { id: MAGIC_MARKER_JSON, - deviceId: this.deviceId, - socket: socket, message: { name: name, json: json, @@ -184,8 +182,6 @@ export class StateMap extends Service { return { id: MAGIC_MARKER_INTERVAL, - socket: socket, - deviceId: this.deviceId, message: { service: this, deviceId: this.deviceId, @@ -207,7 +203,7 @@ export class StateMap extends Service { } if (data?.message?.interval) { - this.sendStateResponse(data.message.name, data.socket); + this.sendStateResponse(data.message.name, data.message.service.socket); } if (data?.message?.json) { this.emit('stateMessage', data.message); @@ -215,7 +211,7 @@ export class StateMap extends Service { if (data && data.message.json && !this.hasReceivedState) { Logger.silent( - `${data.deviceId.string} ${data.message.name} => ${data.message.json ? JSON.stringify(data.message.json) : data.message.interval + `${data.message.deviceId.string} ${data.message.name} => ${data.message.json ? JSON.stringify(data.message.json) : data.message.interval }`); this.hasReceivedState = true; } diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 34f1a29..d6e4004 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -5,7 +5,7 @@ import { Service, ServiceHandler } from './Service'; import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; -import { Socket } from 'net'; +//import { Socket } from 'net'; const { performance } = require('perf_hooks'); @@ -83,7 +83,7 @@ export class TimeSynchronization extends Service { // await this.write(ctx, this.socket); // }; - protected parseData(p_ctx: ReadContext, socket: Socket): ServiceMessage { + protected parseData(p_ctx: ReadContext): ServiceMessage { const timestamp = this.getTimeStamp(); const size = p_ctx.readUInt32(); @@ -101,8 +101,8 @@ export class TimeSynchronization extends Service { }; return { id: id, - deviceId: this.deviceId, - socket: socket, + //deviceId: this.deviceId, + //socket: socket, message: { msgs: msgs, timestamp: timestamp, @@ -133,9 +133,9 @@ export class TimeSynchronization extends Service { break; case 2: Logger.silly(msg.message) - const localClock = msg.message.timestamp - msg.message.msgs[0] + //const localClock = msg.message.timestamp - msg.message.msgs[0] const remoteClock = msg.message.msgs[1] - this.remoteTime - Logger.silly(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) + //Logger.silly(msg.deviceId.string, localClock, remoteClock, (localClock - remoteClock)) this.timeAvg(remoteClock) break; default: diff --git a/status/Player.ts b/status/Player.ts index feae751..48a8fea 100644 --- a/status/Player.ts +++ b/status/Player.ts @@ -1,247 +1,247 @@ -import { EventEmitter } from 'events'; -import { PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; -import { DeviceId } from '../devices' -import { PlayerMessageQueue } from './PlayerMessageQueue'; -import { StateData, StateMap } from '../services'; -import { Logger } from '../LogEmitter'; - -export declare interface Player { - on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; - on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; - on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; -} - -////////////////////////////////////////////////////////////////////////////// - -export interface PlayerOptions { - stateMap: StateMap; - address: string, - port: number; - deviceId: DeviceId; -} - -interface SourceAndTrackPath { - source: string; - trackPath: string; - trackPathAbsolute: string; -} - -/** - * A player represents a device on the StageLinq network. - * - * A player on the network may have up to 4 decks (or "layers" as they're - * called on the hardware). A player may also be given a player number. - * - * If you're using a Denon Prime Go/2/4 then you should only get one number. - * If you're using a Denon SC5000/SC6000 then you assign the numbers in the - * Denon's settings screen. - * - * Master tempo and master status only apply if you are using SC5000/SC6000 - * and if they're both on the network. - * - * A queue is used to group all the incoming messages from StageLinq to give us - * a single updated PlayerStatus object. - */ -export class Player extends EventEmitter { - - private player: number; // Player number as reported by the device. - private address: string; // IP address - private port: number; // Port - private masterTempo: number; // Current master tempo BPM - private masterStatus: boolean; // If this device has the matser tempo - private decks: Map = new Map(); - private lastTrackNetworkPath: Map = new Map(); - private queue: { [layer: string]: PlayerMessageQueue } = {}; - private deviceId: DeviceId; - public readonly ready: boolean = false; - - /** - * Initialize a player device. - * - * @param networkDevice Network device - * @param stateMap Statemap service - */ - constructor(options: PlayerOptions) { - super(); - options.stateMap.on('stateMessage', this.messageHandler.bind(this)); - this.address = options.address; - this.port = options.port; - this.deviceId = options.deviceId; - this.queue = { - A: new PlayerMessageQueue('A').onDataReady(this.handleUpdate.bind(this)), - B: new PlayerMessageQueue('B').onDataReady(this.handleUpdate.bind(this)), - C: new PlayerMessageQueue('C').onDataReady(this.handleUpdate.bind(this)), - D: new PlayerMessageQueue('D').onDataReady(this.handleUpdate.bind(this)), - }; - this.ready = true; - - } - - /** - * Parse the state data and push it into the update queue. - * - * @param data State data from Denon. - * @returns - */ - private messageHandler(data: ServiceMessage) { - if (!data?.message) { - return - } - const message = data.message - if (!message.json) return; - const name = message.name; - const json = message.json as any; - - //check if message is for this Player - if (data.deviceId.string !== this.deviceId.string) return; - - if (/Client\/Preferences\/Player$/.test(name)) { - this.player = parseInt(json.string); - return; - } - if (/Engine\/Master\/MasterTempo/.test(name)) { - this.masterTempo = json.value; - return; - } - if (/Engine\/Sync\/Network\/MasterStatus/.test(name)) { - this.masterStatus = json.state; - return; - } - - const split = message.name.split('/'); - - const deck = - (/PlayerJogColor[A-D]$/.test(name)) ? split[3].replace('PlayerJogColor', '') - : (/Engine\/Deck\d\//.test(name)) ? this.deckNumberToLayer(split[2]) - : null; - - const cueData = - (/PlayState$/.test(name)) ? { playState: json.state } - : (/Track\/TrackNetworkPath$/.test(name)) ? { - trackNetworkPath: json.string, - source: this.getSourceAndTrackPath(json.string).source, - trackPath: this.getSourceAndTrackPath(json.string).trackPath, - trackPathAbsolute: this.getSourceAndTrackPath(json.string).trackPathAbsolute - } - : (/Track\/SongLoaded$/.test(name)) ? { songLoaded: json.state } - : (/Track\/SongName$/.test(name)) ? { title: json.string } - : (/Track\/ArtistName$/.test(name)) ? { artist: json.string } - : (/Track\/TrackData$/.test(name)) ? { hasTrackData: json.state } - : (/Track\/TrackName$/.test(name)) ? { fileLocation: json.string } - : (/CurrentBPM$/.test(name)) ? { currentBpm: json.value } - : (/ExternalMixerVolume$/.test(name)) ? { externalMixerVolume: json.value } - : (/Play$/.test(name)) ? { play: json.state } - : (/PlayerJogColor[A-D]$/.test(name)) ? { jogColor: json.color } - : (/DeckIsMaster]$/.test(name)) ? { deckIsMaster: json.state } - : null; - - if (cueData) { - this.queue[deck].push({ layer: deck, ...cueData }); - } - } - - /** - * Update current state and emit. - * @param data - */ - private handleUpdate(data: PlayerLayerState) { - Logger.silly(`data: ${JSON.stringify(data, null, 2)}`); - - const layer = data.layer; - - // A new song my be loading onto a layer but not yet fully downloaded. - // For example streaming a song from Beatport Link. - let isNewTrack = true; - const lastTrackNetworkPath = this.lastTrackNetworkPath.get(layer); - if (lastTrackNetworkPath && data.trackNetworkPath) { - if (data.trackNetworkPath === lastTrackNetworkPath) { - isNewTrack = false; - } - } - this.lastTrackNetworkPath.set(layer, data.trackNetworkPath); - - // This will be true once a song has been fully downloaded / loaded. - const isSongLoaded = data.hasOwnProperty('songLoaded'); - - // If a new song is loaded drop all the previous track data. - if (isNewTrack && isSongLoaded) { - Logger.debug(`Replacing state ${layer}`); - this.decks.set(layer, data); - } else { - Logger.debug(`Updating state ${layer}`); - this.decks.set(layer, { ...this.decks.get(layer), ...data }); - } - - const result = this.decks.get(layer); - const deck = `${this.player}${result.layer}`; - - const output = { - deck: deck, - player: this.player, - layer: layer, - address: this.address, - port: this.port, - masterTempo: this.masterTempo, - masterStatus: this.masterStatus, - deviceId: this.deviceId, - ...result - }; - - // We're casting here because we originally built it up piecemeal. - const currentState = output as PlayerStatus; - - if (currentState.trackNetworkPath && currentState.trackNetworkPath.startsWith('net:')) { - const pathParts = currentState.trackNetworkPath.split('net://')[1].split('/', 2); - currentState.dbSourceName = pathParts[1];//`net://${pathParts[0]}/${pathParts[1]}`; - currentState.deviceId = new DeviceId(pathParts[0]);//`net://${pathParts[0]}`; - } else if (!currentState.source || /Unknown/.test(currentState.source)) { - // Tracks from streaming sources won't be in the database. - currentState.dbSourceName = ''; - } else { - currentState.dbSourceName = `net://${this.deviceId.string}/${currentState.source}`; - } - - // If a song is loaded and we have a location emit the trackLoaded event. - if (isSongLoaded && currentState.trackNetworkPath) - this.emit('trackLoaded', currentState); - - // If the song is actually playing emit the nowPlaying event. - if (result.deckIsMaster) this.emit('nowPlaying', currentState); - - // Emit that the state has changed. - this.emit('stateChanged', currentState); - } - - private deckNumberToLayer(deck: string) { - const index = parseInt(deck.replace('Deck', '')) - 1; - return 'ABCD'[index]; - } - - private getSourceAndTrackPath(p_path: string): SourceAndTrackPath { - if (!p_path || p_path.length === 0) return { source: '', trackPath: '', trackPathAbsolute: '' }; - const parts = p_path.split('/'); - const source = parts[3]; - let trackPath = parts.slice(5).join('/'); - - // Handle streaming tracks. - if (/\(Unknown\)/.test(source)) { - return { - source: source.replace(':', ''), - trackPath: `streaming://${trackPath}`, - trackPathAbsolute: `streaming://${trackPath}` - } - } - - if (parts[4] !== 'Engine Library') { - // This probably occurs with RekordBox conversions; tracks are outside Engine Library folder - trackPath = `../${parts[4]}/${trackPath}`; - } - - return { - source: source, - trackPath: trackPath, - trackPathAbsolute: `/${source}/Engine Library/${trackPath}` - }; - } - -} \ No newline at end of file +// import { EventEmitter } from 'events'; +// import { PlayerLayerState, PlayerStatus, ServiceMessage } from '../types'; +// import { DeviceId } from '../devices' +// import { PlayerMessageQueue } from './PlayerMessageQueue'; +// import { StateData, StateMap } from '../services'; +// import { Logger } from '../LogEmitter'; + +// export declare interface Player { +// on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this; +// on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this; +// on(event: 'nowPlaying', listener: (status: PlayerStatus) => void): this; +// } + +// ////////////////////////////////////////////////////////////////////////////// + +// export interface PlayerOptions { +// stateMap: StateMap; +// address: string, +// port: number; +// deviceId: DeviceId; +// } + +// interface SourceAndTrackPath { +// source: string; +// trackPath: string; +// trackPathAbsolute: string; +// } + +// /** +// * A player represents a device on the StageLinq network. +// * +// * A player on the network may have up to 4 decks (or "layers" as they're +// * called on the hardware). A player may also be given a player number. +// * +// * If you're using a Denon Prime Go/2/4 then you should only get one number. +// * If you're using a Denon SC5000/SC6000 then you assign the numbers in the +// * Denon's settings screen. +// * +// * Master tempo and master status only apply if you are using SC5000/SC6000 +// * and if they're both on the network. +// * +// * A queue is used to group all the incoming messages from StageLinq to give us +// * a single updated PlayerStatus object. +// */ +// export class Player extends EventEmitter { + +// private player: number; // Player number as reported by the device. +// private address: string; // IP address +// private port: number; // Port +// private masterTempo: number; // Current master tempo BPM +// private masterStatus: boolean; // If this device has the matser tempo +// private decks: Map = new Map(); +// private lastTrackNetworkPath: Map = new Map(); +// private queue: { [layer: string]: PlayerMessageQueue } = {}; +// private deviceId: DeviceId; +// public readonly ready: boolean = false; + +// /** +// * Initialize a player device. +// * +// * @param networkDevice Network device +// * @param stateMap Statemap service +// */ +// constructor(options: PlayerOptions) { +// super(); +// options.stateMap.on('stateMessage', this.messageHandler.bind(this)); +// this.address = options.address; +// this.port = options.port; +// this.deviceId = options.deviceId; +// this.queue = { +// A: new PlayerMessageQueue('A').onDataReady(this.handleUpdate.bind(this)), +// B: new PlayerMessageQueue('B').onDataReady(this.handleUpdate.bind(this)), +// C: new PlayerMessageQueue('C').onDataReady(this.handleUpdate.bind(this)), +// D: new PlayerMessageQueue('D').onDataReady(this.handleUpdate.bind(this)), +// }; +// this.ready = true; + +// } + +// /** +// * Parse the state data and push it into the update queue. +// * +// * @param data State data from Denon. +// * @returns +// */ +// private messageHandler(data: ServiceMessage) { +// if (!data?.message) { +// return +// } +// const message = data.message +// if (!message.json) return; +// const name = message.name; +// const json = message.json as any; + +// //check if message is for this Player +// if (data.message.deviceId.string !== this.deviceId.string) return; + +// if (/Client\/Preferences\/Player$/.test(name)) { +// this.player = parseInt(json.string); +// return; +// } +// if (/Engine\/Master\/MasterTempo/.test(name)) { +// this.masterTempo = json.value; +// return; +// } +// if (/Engine\/Sync\/Network\/MasterStatus/.test(name)) { +// this.masterStatus = json.state; +// return; +// } + +// const split = message.name.split('/'); + +// const deck = +// (/PlayerJogColor[A-D]$/.test(name)) ? split[3].replace('PlayerJogColor', '') +// : (/Engine\/Deck\d\//.test(name)) ? this.deckNumberToLayer(split[2]) +// : null; + +// const cueData = +// (/PlayState$/.test(name)) ? { playState: json.state } +// : (/Track\/TrackNetworkPath$/.test(name)) ? { +// trackNetworkPath: json.string, +// source: this.getSourceAndTrackPath(json.string).source, +// trackPath: this.getSourceAndTrackPath(json.string).trackPath, +// trackPathAbsolute: this.getSourceAndTrackPath(json.string).trackPathAbsolute +// } +// : (/Track\/SongLoaded$/.test(name)) ? { songLoaded: json.state } +// : (/Track\/SongName$/.test(name)) ? { title: json.string } +// : (/Track\/ArtistName$/.test(name)) ? { artist: json.string } +// : (/Track\/TrackData$/.test(name)) ? { hasTrackData: json.state } +// : (/Track\/TrackName$/.test(name)) ? { fileLocation: json.string } +// : (/CurrentBPM$/.test(name)) ? { currentBpm: json.value } +// : (/ExternalMixerVolume$/.test(name)) ? { externalMixerVolume: json.value } +// : (/Play$/.test(name)) ? { play: json.state } +// : (/PlayerJogColor[A-D]$/.test(name)) ? { jogColor: json.color } +// : (/DeckIsMaster]$/.test(name)) ? { deckIsMaster: json.state } +// : null; + +// if (cueData) { +// this.queue[deck].push({ layer: deck, ...cueData }); +// } +// } + +// /** +// * Update current state and emit. +// * @param data +// */ +// private handleUpdate(data: PlayerLayerState) { +// Logger.silly(`data: ${JSON.stringify(data, null, 2)}`); + +// const layer = data.layer; + +// // A new song my be loading onto a layer but not yet fully downloaded. +// // For example streaming a song from Beatport Link. +// let isNewTrack = true; +// const lastTrackNetworkPath = this.lastTrackNetworkPath.get(layer); +// if (lastTrackNetworkPath && data.trackNetworkPath) { +// if (data.trackNetworkPath === lastTrackNetworkPath) { +// isNewTrack = false; +// } +// } +// this.lastTrackNetworkPath.set(layer, data.trackNetworkPath); + +// // This will be true once a song has been fully downloaded / loaded. +// const isSongLoaded = data.hasOwnProperty('songLoaded'); + +// // If a new song is loaded drop all the previous track data. +// if (isNewTrack && isSongLoaded) { +// Logger.debug(`Replacing state ${layer}`); +// this.decks.set(layer, data); +// } else { +// Logger.debug(`Updating state ${layer}`); +// this.decks.set(layer, { ...this.decks.get(layer), ...data }); +// } + +// const result = this.decks.get(layer); +// const deck = `${this.player}${result.layer}`; + +// const output = { +// deck: deck, +// player: this.player, +// layer: layer, +// address: this.address, +// port: this.port, +// masterTempo: this.masterTempo, +// masterStatus: this.masterStatus, +// deviceId: this.deviceId, +// ...result +// }; + +// // We're casting here because we originally built it up piecemeal. +// const currentState = output as PlayerStatus; + +// if (currentState.trackNetworkPath && currentState.trackNetworkPath.startsWith('net:')) { +// const pathParts = currentState.trackNetworkPath.split('net://')[1].split('/', 2); +// currentState.dbSourceName = pathParts[1];//`net://${pathParts[0]}/${pathParts[1]}`; +// currentState.deviceId = new DeviceId(pathParts[0]);//`net://${pathParts[0]}`; +// } else if (!currentState.source || /Unknown/.test(currentState.source)) { +// // Tracks from streaming sources won't be in the database. +// currentState.dbSourceName = ''; +// } else { +// currentState.dbSourceName = `net://${this.deviceId.string}/${currentState.source}`; +// } + +// // If a song is loaded and we have a location emit the trackLoaded event. +// if (isSongLoaded && currentState.trackNetworkPath) +// this.emit('trackLoaded', currentState); + +// // If the song is actually playing emit the nowPlaying event. +// if (result.deckIsMaster) this.emit('nowPlaying', currentState); + +// // Emit that the state has changed. +// this.emit('stateChanged', currentState); +// } + +// private deckNumberToLayer(deck: string) { +// const index = parseInt(deck.replace('Deck', '')) - 1; +// return 'ABCD'[index]; +// } + +// private getSourceAndTrackPath(p_path: string): SourceAndTrackPath { +// if (!p_path || p_path.length === 0) return { source: '', trackPath: '', trackPathAbsolute: '' }; +// const parts = p_path.split('/'); +// const source = parts[3]; +// let trackPath = parts.slice(5).join('/'); + +// // Handle streaming tracks. +// if (/\(Unknown\)/.test(source)) { +// return { +// source: source.replace(':', ''), +// trackPath: `streaming://${trackPath}`, +// trackPathAbsolute: `streaming://${trackPath}` +// } +// } + +// if (parts[4] !== 'Engine Library') { +// // This probably occurs with RekordBox conversions; tracks are outside Engine Library folder +// trackPath = `../${parts[4]}/${trackPath}`; +// } + +// return { +// source: source, +// trackPath: trackPath, +// trackPathAbsolute: `/${source}/Engine Library/${trackPath}` +// }; +// } + +// } \ No newline at end of file diff --git a/status/PlayerMessageQueue.ts b/status/PlayerMessageQueue.ts index d9bed22..28618b7 100644 --- a/status/PlayerMessageQueue.ts +++ b/status/PlayerMessageQueue.ts @@ -1,63 +1,63 @@ -import { PlayerLayerState } from '../types'; - -// How long to wait for all the messages to come in before firing the callback. -// It seems that anything less than 1 second is too fast. -export const UPDATE_RATE_MS = 1500; - -export type DataQueueCallback = (data: PlayerLayerState) => void; - -/** - * Collect all the messages from a player together and return it as one object. - * - * The Denon hardware will fire several messages in quick succession. This will - * take them all in, then after UPDATE_RATE_MS will merge all the data - * as a single update to the `onDataReady` callback. - * - * For example, when you move the fader up you get several ExternalMixerVolume - * messages where the value goes up from 0 to 1. Instead firing off loads - * of updates we're only interested in the last one. - */ -export class PlayerMessageQueue { - - private callback: DataQueueCallback; - private data: PlayerLayerState[] = []; - private timeout: NodeJS.Timer | null = null; - private layer: string; - - constructor(layer: string) { - this.layer = layer; - } - - /** - * Push data into the queue. - * @param data Parsed data from a player. - */ - push(data: PlayerLayerState) { - this.data.push(data); - if (!this.timeout) { - this.timeout = setTimeout(this.emptyCue.bind(this), UPDATE_RATE_MS); - } - } - - /** - * Merge data, empty the queue, clear the timeout, and fire the callback. - */ - emptyCue() { - let output: any = { layer: this.layer }; - this.data.map(d => { output = { ...output, ...d }; }); - this.data = []; - clearTimeout(this.timeout); - this.timeout = null; - this.callback(output as PlayerLayerState); - } - - /** - * Execute this callback when there is new data from the Denon hardware. - * @param callback User callback when we have an update. - * @returns - */ - onDataReady(callback: DataQueueCallback) { - this.callback = callback; - return this; - } -} +// import { PlayerLayerState } from '../types'; + +// // How long to wait for all the messages to come in before firing the callback. +// // It seems that anything less than 1 second is too fast. +// export const UPDATE_RATE_MS = 1500; + +// export type DataQueueCallback = (data: PlayerLayerState) => void; + +// /** +// * Collect all the messages from a player together and return it as one object. +// * +// * The Denon hardware will fire several messages in quick succession. This will +// * take them all in, then after UPDATE_RATE_MS will merge all the data +// * as a single update to the `onDataReady` callback. +// * +// * For example, when you move the fader up you get several ExternalMixerVolume +// * messages where the value goes up from 0 to 1. Instead firing off loads +// * of updates we're only interested in the last one. +// */ +// export class PlayerMessageQueue { + +// private callback: DataQueueCallback; +// private data: PlayerLayerState[] = []; +// private timeout: NodeJS.Timer | null = null; +// private layer: string; + +// constructor(layer: string) { +// this.layer = layer; +// } + +// /** +// * Push data into the queue. +// * @param data Parsed data from a player. +// */ +// push(data: PlayerLayerState) { +// this.data.push(data); +// if (!this.timeout) { +// this.timeout = setTimeout(this.emptyCue.bind(this), UPDATE_RATE_MS); +// } +// } + +// /** +// * Merge data, empty the queue, clear the timeout, and fire the callback. +// */ +// emptyCue() { +// let output: any = { layer: this.layer }; +// this.data.map(d => { output = { ...output, ...d }; }); +// this.data = []; +// clearTimeout(this.timeout); +// this.timeout = null; +// this.callback(output as PlayerLayerState); +// } + +// /** +// * Execute this callback when there is new data from the Denon hardware. +// * @param callback User callback when we have an update. +// * @returns +// */ +// onDataReady(callback: DataQueueCallback) { +// this.callback = callback; +// return this; +// } +// } diff --git a/types/common.ts b/types/common.ts index d657e19..c2c2a89 100644 --- a/types/common.ts +++ b/types/common.ts @@ -17,273 +17,32 @@ export enum MessageId { ServicesRequest = 0x2, } -// export enum StageLinqValue { -// ClientLibrarianDevicesControllerCurrentDevice = '/Client/Librarian/DevicesController/CurrentDevice', -// ClientLibrarianDevicesControllerHasSDCardConnected = '/Client/Librarian/DevicesController/HasSDCardConnected', -// ClientLibrarianDevicesControllerHasUsbDeviceConnected = '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - -// ClientPreferencesPlayer = '/Client/Preferences/Player', -// ClientPreferencesLayerB = '/Client/Preferences/LayerB', - -// ClientPreferencesPlayerJogColorA = '/Client/Preferences/PlayerJogColorA', -// ClientPreferencesPlayerJogColorB = '/Client/Preferences/PlayerJogColorB', -// ClientPreferencesProfileApplicationPlayerColor1 = '/Client/Preferences/Profile/Application/PlayerColor1', -// ClientPreferencesProfileApplicationPlayerColor1A = '/Client/Preferences/Profile/Application/PlayerColor1A', -// ClientPreferencesProfileApplicationPlayerColor1B = '/Client/Preferences/Profile/Application/PlayerColor1B', -// ClientPreferencesProfileApplicationPlayerColor2 = '/Client/Preferences/Profile/Application/PlayerColor2', -// ClientPreferencesProfileApplicationPlayerColor2A = '/Client/Preferences/Profile/Application/PlayerColor2A', -// ClientPreferencesProfileApplicationPlayerColor2B = '/Client/Preferences/Profile/Application/PlayerColor2B', -// ClientPreferencesProfileApplicationPlayerColor3 = '/Client/Preferences/Profile/Application/PlayerColor3', -// ClientPreferencesProfileApplicationPlayerColor3A = '/Client/Preferences/Profile/Application/PlayerColor3A', -// ClientPreferencesProfileApplicationPlayerColor3B = '/Client/Preferences/Profile/Application/PlayerColor3B', -// ClientPreferencesProfileApplicationPlayerColor4 = '/Client/Preferences/Profile/Application/PlayerColor4', -// ClientPreferencesProfileApplicationPlayerColor4A = '/Client/Preferences/Profile/Application/PlayerColor4A', -// ClientPreferencesProfileApplicationPlayerColor4B = '/Client/Preferences/Profile/Application/PlayerColor4B', - -// ClientPreferencesProfileApplicationSyncMode = '/Client/Preferences/Profile/Application/SyncMode', - -// GUIDecksDeckActiveDeck = '/GUI/Decks/Deck/ActiveDeck', -// GUIViewLayerLayerB = '/GUI/ViewLayer/LayerB', - -// EngineDeckCount = '/Engine/DeckCount', - - -// EngineDeck1DeckIsMaster = '/Engine/Deck1/DeckIsMaster', - -// ClientPreferencesLayerA = '/Client/Preferences/LayerA', -// EngineSyncNetworkMasterStatus = '/Engine/Sync/Network/MasterStatus', -// EngineMasterMasterTempo = '/Engine/Master/MasterTempo', - -// EngineDeck1CurrentBPM = '/Engine/Deck1/CurrentBPM', -// EngineDeck1ExternalMixerVolume = '/Engine/Deck1/ExternalMixerVolume', -// EngineDeck1ExternalScratchWheelTouch = '/Engine/Deck1/ExternalScratchWheelTouch', -// EngineDeck1PadsView = '/Engine/Deck1/Pads/View', -// EngineDeck1Play = '/Engine/Deck1/Play', -// EngineDeck1PlayState = '/Engine/Deck1/PlayState', -// EngineDeck1PlayStatePath = '/Engine/Deck1/PlayStatePath', -// EngineDeck1Speed = '/Engine/Deck1/Speed', -// EngineDeck1SpeedNeutral = '/Engine/Deck1/SpeedNeutral', -// EngineDeck1SpeedOffsetDown = '/Engine/Deck1/SpeedOffsetDown', -// EngineDeck1SpeedOffsetUp = '/Engine/Deck1/SpeedOffsetUp', -// EngineDeck1SpeedRange = '/Engine/Deck1/SpeedRange', -// EngineDeck1SpeedState = '/Engine/Deck1/SpeedState', -// EngineDeck1SyncMode = '/Engine/Deck1/SyncMode', -// EngineDeck1TrackArtistName = '/Engine/Deck1/Track/ArtistName', -// EngineDeck1TrackBleep = '/Engine/Deck1/Track/Bleep', -// EngineDeck1TrackCuePosition = '/Engine/Deck1/Track/CuePosition', -// EngineDeck1TrackCurrentBPM = '/Engine/Deck1/Track/CurrentBPM', -// EngineDeck1TrackCurrentKeyIndex = '/Engine/Deck1/Track/CurrentKeyIndex', -// EngineDeck1TrackCurrentLoopInPosition = '/Engine/Deck1/Track/CurrentLoopInPosition', -// EngineDeck1TrackCurrentLoopOutPosition = '/Engine/Deck1/Track/CurrentLoopOutPosition', -// EngineDeck1TrackCurrentLoopSizeInBeats = '/Engine/Deck1/Track/CurrentLoopSizeInBeats', -// EngineDeck1TrackKeyLock = '/Engine/Deck1/Track/KeyLock', -// EngineDeck1TrackLoopEnableState = '/Engine/Deck1/Track/LoopEnableState', -// EngineDeck1TrackLoopQuickLoop1 = '/Engine/Deck1/Track/Loop/QuickLoop1', -// EngineDeck1TrackLoopQuickLoop2 = '/Engine/Deck1/Track/Loop/QuickLoop2', -// EngineDeck1TrackLoopQuickLoop3 = '/Engine/Deck1/Track/Loop/QuickLoop3', -// EngineDeck1TrackLoopQuickLoop4 = '/Engine/Deck1/Track/Loop/QuickLoop4', -// EngineDeck1TrackLoopQuickLoop5 = '/Engine/Deck1/Track/Loop/QuickLoop5', -// EngineDeck1TrackLoopQuickLoop6 = '/Engine/Deck1/Track/Loop/QuickLoop6', -// EngineDeck1TrackLoopQuickLoop7 = '/Engine/Deck1/Track/Loop/QuickLoop7', -// EngineDeck1TrackLoopQuickLoop8 = '/Engine/Deck1/Track/Loop/QuickLoop8', -// EngineDeck1TrackPlayPauseLEDState = '/Engine/Deck1/Track/PlayPauseLEDState', -// EngineDeck1TrackSampleRate = '/Engine/Deck1/Track/SampleRate', -// EngineDeck1TrackSongAnalyzed = '/Engine/Deck1/Track/SongAnalyzed', -// EngineDeck1TrackSongLoaded = '/Engine/Deck1/Track/SongLoaded', -// EngineDeck1TrackSongName = '/Engine/Deck1/Track/SongName', -// EngineDeck1TrackSoundSwitchGUID = '/Engine/Deck1/Track/SoundSwitchGuid', -// EngineDeck1TrackTrackBytes = '/Engine/Deck1/Track/TrackBytes', -// EngineDeck1TrackTrackData = '/Engine/Deck1/Track/TrackData', -// EngineDeck1TrackTrackLength = '/Engine/Deck1/Track/TrackLength', -// EngineDeck1TrackTrackName = '/Engine/Deck1/Track/TrackName', -// EngineDeck1TrackTrackNetworkPath = '/Engine/Deck1/Track/TrackNetworkPath', -// EngineDeck1TrackTrackURI = '/Engine/Deck1/Track/TrackUri', -// EngineDeck1TrackTrackWasPlayed = '/Engine/Deck1/Track/TrackWasPlayed', -// EngineDeck2CurrentBPM = '/Engine/Deck2/CurrentBPM', -// EngineDeck2ExternalMixerVolume = '/Engine/Deck2/ExternalMixerVolume', -// EngineDeck2ExternalScratchWheelTouch = '/Engine/Deck2/ExternalScratchWheelTouch', -// EngineDeck2PadsView = '/Engine/Deck2/Pads/View', -// EngineDeck2Play = '/Engine/Deck2/Play', -// EngineDeck2PlayState = '/Engine/Deck2/PlayState', -// EngineDeck2PlayStatePath = '/Engine/Deck2/PlayStatePath', -// EngineDeck2Speed = '/Engine/Deck2/Speed', -// EngineDeck2SpeedNeutral = '/Engine/Deck2/SpeedNeutral', -// EngineDeck2SpeedOffsetDown = '/Engine/Deck2/SpeedOffsetDown', -// EngineDeck2SpeedOffsetUp = '/Engine/Deck2/SpeedOffsetUp', -// EngineDeck2SpeedRange = '/Engine/Deck2/SpeedRange', -// EngineDeck2SpeedState = '/Engine/Deck2/SpeedState', -// EngineDeck2SyncMode = '/Engine/Deck2/SyncMode', -// EngineDeck2TrackArtistName = '/Engine/Deck2/Track/ArtistName', -// EngineDeck2TrackBleep = '/Engine/Deck2/Track/Bleep', -// EngineDeck2TrackCuePosition = '/Engine/Deck2/Track/CuePosition', -// EngineDeck2TrackCurrentBPM = '/Engine/Deck2/Track/CurrentBPM', -// EngineDeck2TrackCurrentKeyIndex = '/Engine/Deck2/Track/CurrentKeyIndex', -// EngineDeck2TrackCurrentLoopInPosition = '/Engine/Deck2/Track/CurrentLoopInPosition', -// EngineDeck2TrackCurrentLoopOutPosition = '/Engine/Deck2/Track/CurrentLoopOutPosition', -// EngineDeck2TrackCurrentLoopSizeInBeats = '/Engine/Deck2/Track/CurrentLoopSizeInBeats', -// EngineDeck2TrackKeyLock = '/Engine/Deck2/Track/KeyLock', -// EngineDeck2TrackLoopEnableState = '/Engine/Deck2/Track/LoopEnableState', -// EngineDeck2TrackLoopQuickLoop1 = '/Engine/Deck2/Track/Loop/QuickLoop1', -// EngineDeck2TrackLoopQuickLoop2 = '/Engine/Deck2/Track/Loop/QuickLoop2', -// EngineDeck2TrackLoopQuickLoop3 = '/Engine/Deck2/Track/Loop/QuickLoop3', -// EngineDeck2TrackLoopQuickLoop4 = '/Engine/Deck2/Track/Loop/QuickLoop4', -// EngineDeck2TrackLoopQuickLoop5 = '/Engine/Deck2/Track/Loop/QuickLoop5', -// EngineDeck2TrackLoopQuickLoop6 = '/Engine/Deck2/Track/Loop/QuickLoop6', -// EngineDeck2TrackLoopQuickLoop7 = '/Engine/Deck2/Track/Loop/QuickLoop7', -// EngineDeck2TrackLoopQuickLoop8 = '/Engine/Deck2/Track/Loop/QuickLoop8', -// EngineDeck2TrackPlayPauseLEDState = '/Engine/Deck2/Track/PlayPauseLEDState', -// EngineDeck2TrackSampleRate = '/Engine/Deck2/Track/SampleRate', -// EngineDeck2TrackSongAnalyzed = '/Engine/Deck2/Track/SongAnalyzed', -// EngineDeck2TrackSongLoaded = '/Engine/Deck2/Track/SongLoaded', -// EngineDeck2TrackSongName = '/Engine/Deck2/Track/SongName', -// EngineDeck2TrackSoundSwitchGUID = '/Engine/Deck2/Track/SoundSwitchGuid', -// EngineDeck2TrackTrackBytes = '/Engine/Deck2/Track/TrackBytes', -// EngineDeck2TrackTrackData = '/Engine/Deck2/Track/TrackData', -// EngineDeck2TrackTrackLength = '/Engine/Deck2/Track/TrackLength', -// EngineDeck2TrackTrackName = '/Engine/Deck2/Track/TrackName', -// EngineDeck2TrackTrackNetworkPath = '/Engine/Deck2/Track/TrackNetworkPath', -// EngineDeck2TrackTrackURI = '/Engine/Deck2/Track/TrackUri', -// EngineDeck2TrackTrackWasPlayed = '/Engine/Deck2/Track/TrackWasPlayed', -// EngineDeck3CurrentBPM = '/Engine/Deck3/CurrentBPM', -// EngineDeck3ExternalMixerVolume = '/Engine/Deck3/ExternalMixerVolume', -// EngineDeck3ExternalScratchWheelTouch = '/Engine/Deck3/ExternalScratchWheelTouch', -// EngineDeck3PadsView = '/Engine/Deck3/Pads/View', -// EngineDeck3Play = '/Engine/Deck3/Play', -// EngineDeck3PlayState = '/Engine/Deck3/PlayState', -// EngineDeck3PlayStatePath = '/Engine/Deck3/PlayStatePath', -// EngineDeck3Speed = '/Engine/Deck3/Speed', -// EngineDeck3SpeedNeutral = '/Engine/Deck3/SpeedNeutral', -// EngineDeck3SpeedOffsetDown = '/Engine/Deck3/SpeedOffsetDown', -// EngineDeck3SpeedOffsetUp = '/Engine/Deck3/SpeedOffsetUp', -// EngineDeck3SpeedRange = '/Engine/Deck3/SpeedRange', -// EngineDeck3SpeedState = '/Engine/Deck3/SpeedState', -// EngineDeck3SyncMode = '/Engine/Deck3/SyncMode', -// EngineDeck3TrackArtistName = '/Engine/Deck3/Track/ArtistName', -// EngineDeck3TrackBleep = '/Engine/Deck3/Track/Bleep', -// EngineDeck3TrackCuePosition = '/Engine/Deck3/Track/CuePosition', -// EngineDeck3TrackCurrentBPM = '/Engine/Deck3/Track/CurrentBPM', -// EngineDeck3TrackCurrentKeyIndex = '/Engine/Deck3/Track/CurrentKeyIndex', -// EngineDeck3TrackCurrentLoopInPosition = '/Engine/Deck3/Track/CurrentLoopInPosition', -// EngineDeck3TrackCurrentLoopOutPosition = '/Engine/Deck3/Track/CurrentLoopOutPosition', -// EngineDeck3TrackCurrentLoopSizeInBeats = '/Engine/Deck3/Track/CurrentLoopSizeInBeats', -// EngineDeck3TrackKeyLock = '/Engine/Deck3/Track/KeyLock', -// EngineDeck3TrackLoopEnableState = '/Engine/Deck3/Track/LoopEnableState', -// EngineDeck3TrackLoopQuickLoop1 = '/Engine/Deck3/Track/Loop/QuickLoop1', -// EngineDeck3TrackLoopQuickLoop2 = '/Engine/Deck3/Track/Loop/QuickLoop2', -// EngineDeck3TrackLoopQuickLoop3 = '/Engine/Deck3/Track/Loop/QuickLoop3', -// EngineDeck3TrackLoopQuickLoop4 = '/Engine/Deck3/Track/Loop/QuickLoop4', -// EngineDeck3TrackLoopQuickLoop5 = '/Engine/Deck3/Track/Loop/QuickLoop5', -// EngineDeck3TrackLoopQuickLoop6 = '/Engine/Deck3/Track/Loop/QuickLoop6', -// EngineDeck3TrackLoopQuickLoop7 = '/Engine/Deck3/Track/Loop/QuickLoop7', -// EngineDeck3TrackLoopQuickLoop8 = '/Engine/Deck3/Track/Loop/QuickLoop8', -// EngineDeck3TrackPlayPauseLEDState = '/Engine/Deck3/Track/PlayPauseLEDState', -// EngineDeck3TrackSampleRate = '/Engine/Deck3/Track/SampleRate', -// EngineDeck3TrackSongAnalyzed = '/Engine/Deck3/Track/SongAnalyzed', -// EngineDeck3TrackSongLoaded = '/Engine/Deck3/Track/SongLoaded', -// EngineDeck3TrackSongName = '/Engine/Deck3/Track/SongName', -// EngineDeck3TrackSoundSwitchGUID = '/Engine/Deck3/Track/SoundSwitchGuid', -// EngineDeck3TrackTrackBytes = '/Engine/Deck3/Track/TrackBytes', -// EngineDeck3TrackTrackData = '/Engine/Deck3/Track/TrackData', -// EngineDeck3TrackTrackLength = '/Engine/Deck3/Track/TrackLength', -// EngineDeck3TrackTrackName = '/Engine/Deck3/Track/TrackName', -// EngineDeck3TrackTrackNetworkPath = '/Engine/Deck3/Track/TrackNetworkPath', -// EngineDeck3TrackTrackURI = '/Engine/Deck3/Track/TrackUri', -// EngineDeck3TrackTrackWasPlayed = '/Engine/Deck3/Track/TrackWasPlayed', -// EngineDeck4CurrentBPM = '/Engine/Deck4/CurrentBPM', -// EngineDeck4ExternalMixerVolume = '/Engine/Deck4/ExternalMixerVolume', -// EngineDeck4ExternalScratchWheelTouch = '/Engine/Deck4/ExternalScratchWheelTouch', -// EngineDeck4PadsView = '/Engine/Deck4/Pads/View', -// EngineDeck4Play = '/Engine/Deck4/Play', -// EngineDeck4PlayState = '/Engine/Deck4/PlayState', -// EngineDeck4PlayStatePath = '/Engine/Deck4/PlayStatePath', -// EngineDeck4Speed = '/Engine/Deck4/Speed', -// EngineDeck4SpeedNeutral = '/Engine/Deck4/SpeedNeutral', -// EngineDeck4SpeedOffsetDown = '/Engine/Deck4/SpeedOffsetDown', -// EngineDeck4SpeedOffsetUp = '/Engine/Deck4/SpeedOffsetUp', -// EngineDeck4SpeedRange = '/Engine/Deck4/SpeedRange', -// EngineDeck4SpeedState = '/Engine/Deck4/SpeedState', -// EngineDeck4SyncMode = '/Engine/Deck4/SyncMode', -// EngineDeck4TrackArtistName = '/Engine/Deck4/Track/ArtistName', -// EngineDeck4TrackBleep = '/Engine/Deck4/Track/Bleep', -// EngineDeck4TrackCuePosition = '/Engine/Deck4/Track/CuePosition', -// EngineDeck4TrackCurrentBPM = '/Engine/Deck4/Track/CurrentBPM', -// EngineDeck4TrackCurrentKeyIndex = '/Engine/Deck4/Track/CurrentKeyIndex', -// EngineDeck4TrackCurrentLoopInPosition = '/Engine/Deck4/Track/CurrentLoopInPosition', -// EngineDeck4TrackCurrentLoopOutPosition = '/Engine/Deck4/Track/CurrentLoopOutPosition', -// EngineDeck4TrackCurrentLoopSizeInBeats = '/Engine/Deck4/Track/CurrentLoopSizeInBeats', -// EngineDeck4TrackKeyLock = '/Engine/Deck4/Track/KeyLock', -// EngineDeck4TrackLoopEnableState = '/Engine/Deck4/Track/LoopEnableState', -// EngineDeck4TrackLoopQuickLoop1 = '/Engine/Deck4/Track/Loop/QuickLoop1', -// EngineDeck4TrackLoopQuickLoop2 = '/Engine/Deck4/Track/Loop/QuickLoop2', -// EngineDeck4TrackLoopQuickLoop3 = '/Engine/Deck4/Track/Loop/QuickLoop3', -// EngineDeck4TrackLoopQuickLoop4 = '/Engine/Deck4/Track/Loop/QuickLoop4', -// EngineDeck4TrackLoopQuickLoop5 = '/Engine/Deck4/Track/Loop/QuickLoop5', -// EngineDeck4TrackLoopQuickLoop6 = '/Engine/Deck4/Track/Loop/QuickLoop6', -// EngineDeck4TrackLoopQuickLoop7 = '/Engine/Deck4/Track/Loop/QuickLoop7', -// EngineDeck4TrackLoopQuickLoop8 = '/Engine/Deck4/Track/Loop/QuickLoop8', -// EngineDeck4TrackPlayPauseLEDState = '/Engine/Deck4/Track/PlayPauseLEDState', -// EngineDeck4TrackSampleRate = '/Engine/Deck4/Track/SampleRate', -// EngineDeck4TrackSongAnalyzed = '/Engine/Deck4/Track/SongAnalyzed', -// EngineDeck4TrackSongLoaded = '/Engine/Deck4/Track/SongLoaded', -// EngineDeck4TrackSongName = '/Engine/Deck4/Track/SongName', -// EngineDeck4TrackSoundSwitchGUID = '/Engine/Deck4/Track/SoundSwitchGuid', -// EngineDeck4TrackTrackBytes = '/Engine/Deck4/Track/TrackBytes', -// EngineDeck4TrackTrackData = '/Engine/Deck4/Track/TrackData', -// EngineDeck4TrackTrackLength = '/Engine/Deck4/Track/TrackLength', -// EngineDeck4TrackTrackName = '/Engine/Deck4/Track/TrackName', -// EngineDeck4TrackTrackNetworkPath = '/Engine/Deck4/Track/TrackNetworkPath', -// EngineDeck4TrackTrackURI = '/Engine/Deck4/Track/TrackUri', -// EngineDeck4TrackTrackWasPlayed = '/Engine/Deck4/Track/TrackWasPlayed', - - -// ClientDeck1DeckIsMaster = '/Client/Deck1/DeckIsMaster', -// ClientDeck2DeckIsMaster = '/Client/Deck2/DeckIsMaster', - -// MixerNumberOfChannels = '/Mixer/NumberOfChannels', - -// MixerChannelAssignment1 = '/Mixer/ChannelAssignment1', -// MixerChannelAssignment2 = '/Mixer/ChannelAssignment2', -// MixerChannelAssignment3 = '/Mixer/ChannelAssignment3', -// MixerChannelAssignment4 = '/Mixer/ChannelAssignment4', - -// MixerCH1faderPosition = '/Mixer/CH1faderPosition', -// MixerCH2faderPosition = '/Mixer/CH2faderPosition', -// MixerCH3faderPosition = '/Mixer/CH3faderPosition', -// MixerCH4faderPosition = '/Mixer/CH4faderPosition', -// MixerCrossfaderPosition = '/Mixer/CrossfaderPosition', - - -// PrivateDeck1MidiSamplePosition = '/Private/Deck1/MidiSamplePosition', -// PrivateDeck2MidiSamplePosition = '/Private/Deck2/MidiSamplePosition', -// EngineDeck1PFL = '/Engine/Deck1/PFL', -// } - -export const StageLinqValueObj = { +export const StateNames = { player: { ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: '/Client/Librarian/DevicesController/CurrentDeviceNetworkPath', - // ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', - // ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', + ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', + ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', ClientPreferencesLayerA: '/Client/Preferences/LayerA', ClientPreferencesLayerB: '/Client/Preferences/LayerB', ClientPreferencesPlayer: '/Client/Preferences/Player', ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', - // ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', - // ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', - // ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', - // ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', - // ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', - // ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', - // ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', - // ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', - // ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', - // ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', - // ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', - // ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', + ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', + ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', + ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', + ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', + ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', + ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', + ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', + ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', + ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', + ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', + ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', + ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', - //EngineDeck1RequestUnsetSyncLead: '/Engine/Deck1/RequestUnsetSyncLead', + EngineDeck1SyncPlayState: '/Engine/Deck1/SyncPlayState', EngineDeck2SyncPlayState: '/Engine/Deck2/SyncPlayState', EngineDeck3SyncPlayState: '/Engine/Deck2/SyncPlayState', @@ -491,10 +250,13 @@ export const StageLinqValueObj = { MixerChannelAssignment3: '/Mixer/ChannelAssignment3', MixerChannelAssignment4: '/Mixer/ChannelAssignment4', MixerNumberOfChannels: '/Mixer/NumberOfChannels', - //GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', - // GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', - // ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', - // ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', + }, } + +//EngineDeck1RequestUnsetSyncLead: '/Engine/Deck1/RequestUnsetSyncLead', +// GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', +// GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', +// ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', +// ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index bab7f34..c4a6c9f 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,118 +1,5 @@ -import { Socket } from 'net'; -import { DbConnection } from '../Databases'; -import { DiscoveryMessageOptions } from '../network'; -import { FileTransfer } from '../services'; -import { DeviceId } from '../devices/DeviceId'; - - export * from './common'; -export * from './player'; -export * from './tokens'; export * from './models'; - - -export interface DiscoveryMessage { - deviceId?: DeviceId; - source: string; - action: string; - software: { - name: string; - version: string; - }; - port: number; -} - -export enum DeviceType { - Player = "PLAYER", - Mixer = "MIXER", - Controller = "CONTROLLER", -} - - -export interface ConnectionInfo extends DiscoveryMessage { - address: IpAddress; - unit?: { - name: string, - type: string, - decks: number - }; - addressPort?: string; -} - -export interface ServiceMessage { - id: number; - message: T; - socket: Socket; //TODO replace with service? - deviceId: DeviceId; -} - -export interface Source { - name: string; - deviceId: DeviceId; - service: InstanceType - database: { - location: string; - size: number; - connection?: DbConnection; - remote?: { - location: string, - device: string, - }, - local?: { - path: string, - } - }; -} - -export interface FileTransferInfo { - txid: number; - size: number; -} - -// TODO: Maybe some kind of validation? -export type IpAddress = string; -export type IpAddressPort = string; - - -export enum ServiceList { - StateMap = "StateMap", - FileTransfer = "FileTransfer", - BeatInfo = "BeatInfo", - TimeSynchronization = "TimeSynchronization", - Directory = "Directory", -} - - -export interface StageLinqOptions { - maxRetries?: number; - actingAs?: DiscoveryMessageOptions; - downloadDbSources?: boolean; - services?: ServiceList[]; - connectToMixer?: boolean -} - -type deviceType = { - [key: string]: { - name: string, - type: string, - decks: number, - } -} - -export const deviceTypes: deviceType = { - JC11: { name: 'PRIME4', type: 'CONTROLLER', decks: 4 }, - JC16: { name: 'PRIME2', type: 'CONTROLLER', decks: 2 }, - JC20: { name: 'LC6000', type: 'OTHER', decks: 0 }, - JP07: { name: 'SC5000', type: 'PLAYER', decks: 2 }, - JP08: { name: 'SC5000M', type: 'PLAYER', decks: 2 }, - JP11: { name: 'PRIMEGO', type: 'CONTROLLER', decks: 2 }, - JP13: { name: 'SC6000', type: 'PLAYER', decks: 2 }, - JP14: { name: 'SC6000M', type: 'PLAYER', decks: 2 }, - JP20: { name: 'SCLIVE2', type: 'CONTROLLER', decks: 2 }, - JP21: { name: 'SCLIVE4', type: 'CONTROLLER', decks: 4 }, - NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER', decks: 2 }, - NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER', decks: 2 }, - NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER', decks: 2 }, - //JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, - //JM10: { name: 'DN-X1850Prime', type: 'MIXER', decks: 0 }, -} +export * from './messages'; +export * from './options'; +//export * from './player'; diff --git a/types/messages.ts b/types/messages.ts new file mode 100644 index 0000000..e037c33 --- /dev/null +++ b/types/messages.ts @@ -0,0 +1,32 @@ +import { DeviceId } from '../devices/DeviceId'; + +export interface DiscoveryMessage { + deviceId: DeviceId; + source: string; + action: string; + software: { + name: string; + version: string; + }; + port: number; +} + +export interface ConnectionInfo extends DiscoveryMessage { + address: IpAddress; + unit?: { + name: string, + type: string, + decks: number + }; + addressPort?: string; +} + +export interface ServiceMessage { + id: number; + message: T; +} + + +// TODO: Maybe some kind of validation? +export type IpAddress = string; +export type IpAddressPort = string; \ No newline at end of file diff --git a/types/models/Source.ts b/types/models/Source.ts new file mode 100644 index 0000000..db2e1d6 --- /dev/null +++ b/types/models/Source.ts @@ -0,0 +1,22 @@ +import { DbConnection } from '../../Databases'; +import { FileTransfer } from '../../services'; +import { DeviceId } from '../../devices/DeviceId'; + + +export interface Source { + name: string; + deviceId: DeviceId; + service: FileTransfer; + database: { + location: string; + size: number; + connection?: DbConnection; + remote?: { + location: string, + device: string, + }, + local?: { + path: string, + } + }; +} \ No newline at end of file diff --git a/types/models/State.ts b/types/models/State.ts index 71fa6a3..d915c14 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,4 +1,3 @@ - import { DeviceId } from "../../devices"; interface ITrackData { @@ -94,239 +93,3 @@ export class TrackData implements Partial { } } - -// export const configStates = { -// Mixer: { -// Mixer: { -// ChannelAssignment1: '', -// ChannelAssignment2: '', -// ChannelAssignment3: '', -// ChannelAssignment4: '', -// }, -// }, -// Player: { -// Client: { -// Librarian: { -// DevicesController: { -// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] -// HasSDCardConnected: false, -// HasUsbDeviceConnected: false, -// }, -// }, -// Preferences: { -// LayerB: false, -// Player: '', //type 4 ENUM? -// PlayerJogColorA: '#FFFFFF', //type 16 Colour string -// PlayerJogColorB: '#FFFFFF', -// Profile: { -// Application: { -// SyncMode: '', -// }, -// }, -// }, -// }, -// } -// } - - -// export const PlayerStates = { -// // Gui: { -// // ViewLayer: { -// // LayerB: 'LayerB', -// // }, -// // Decks: { -// // Deck: { -// // ActiveDeck: 'ActiveDeck', -// // }, -// // }, -// // }, -// Mixer: { -// //NumberOfChannels: 'NumberOfChannels', //NG -// ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' -// ChannelAssignment2: '', -// ChannelAssignment3: '', -// ChannelAssignment4: '', -// }, -// Engine: { -// DeckCount: 2, //type 10 -// Sync: { -// Network: { -// MasterStatus: false, -// }, -// }, -// Master: { -// MasterTempo: 120.0, //type 0 -// }, -// }, -// Client: { -// Librarian: { -// DevicesController: { -// CurrentDevice: '', //type 8 can be URI net://[DEVICEID]/[SOURCENAME] ([LOCATION?]) or /media/[SOURCENAME] -// HasSDCardConnected: false, -// HasUsbDeviceConnected: false, -// }, -// }, -// Preferences: { -// LayerB: false, -// Player: '', //type 4 ENUM? -// PlayerJogColorA: '#FFFFFF', //type 16 Colour string -// PlayerJogColorB: '#FFFFFF', -// Profile: { -// Application: { -// PlayerColor1: '#FFFFFF', -// PlayerColor1A: '#FFFFFF', -// PlayerColor1B: '#FFFFFF', -// PlayerColor2: '#FFFFFF', -// PlayerColor2A: '#FFFFFF', -// PlayerColor2B: '#FFFFFF', -// PlayerColor3: '#FFFFFF', -// PlayerColor3A: '#FFFFFF', -// PlayerColor3B: '#FFFFFF', -// PlayerColor4: '#FFFFFF', -// PlayerColor4A: '#FFFFFF', -// PlayerColor4B: '#FFFFFF', -// SyncMode: '', -// }, -// }, -// }, -// }, -// } - -// export const PlayerDeckStates = { -// CurrentBPM: 120.00, //type 0 -// ExternalMixerVolume: 1, //type 0 -// // ExternalScratchWheelTouch: false, //type 2 false? -// // Pads: { -// // View: '', //type 4 ENUM? 'CUES' -// // }, -// // Play: false, -// PlayState: false, -// //PlayStatePath: 'PlayStatePath', //NG -// Speed: 1.0, //0.44444535 -// // SpeedNeutral: false, -// // SpeedOffsetDown: false, -// // SpeedOffsetUp: false, -// // SpeedRange: '8', //enum -// // SpeedState: 1.0, //type 0 signed -0.39999 -// SyncMode: 'Off', //enum: Off, Tempo, TempoSync -// DeckIsMaster: false, -// Track: { -// ArtistName: '', -// Bleep: false, //type 2 -// CuePosition: 156.0, //type 14? -// CurrentBPM: 120.0, -// CurrentKeyIndex: 0, //type 10? -// CurrentLoopInPosition: 156.0, //type 14 -// CurrentLoopOutPosition: 156.0, //type 14 -// CurrentLoopSizeInBeats: 0, // type 14 -// KeyLock: false, -// LoopEnableState: false, //type 1 -// Loop: { -// QuickLoop1: false, //type 2 -// QuickLoop2: false, -// QuickLoop3: false, -// QuickLoop4: false, -// QuickLoop5: false, -// QuickLoop6: false, -// QuickLoop7: false, -// QuickLoop8: false, -// }, -// PlayPauseLEDState: false, -// SampleRate: 44100, //type 14 -// SongAnalyzed: false, -// SongLoaded: false, -// SongName: '', -// SoundSwitchGUID: '', //NG must be Analyzed? -// TrackBytes: 1, //type 10 -// TrackData: false, //type 3??? -// TrackLength: 1, //type 10 -// TrackName: '', // type 8 can be /media/[SOURCE]/FILEPATH.... -// TrackNetworkPath: '', -// TrackURI: '', //NG Only streaming? -// TrackWasPlayed: false, -// } -// } - -// export const MixerStates = { -// Mixer: { -// CH1faderPosition: 1.27, //type 0 -// CH2faderPosition: 0.0, -// CH3faderPosition: 0.0, -// CH4faderPosition: 0.0, -// CrossfaderPosition: 0.5, //type 0 -// //NumberOfChannels: 'NumberOfChannels', //NG -// // ChannelAssignment1: '', // type 8 format '{DEVICEID},1' or '{DEVICEID},2' -// // ChannelAssignment2: '', -// // ChannelAssignment3: '', -// // ChannelAssignment4: '', -// }, -// // Gui: { -// // ViewLayer: { -// // LayerB: 'LayerB', -// // }, -// // Decks: { -// // Deck: { -// // ActiveDeck: 'ActiveDeck', -// // }, -// // }, -// // }, -// } - -//const test = new MixerStates() - - - -// export const exportObj = { -// config: { - -// }, -// player: { -// ...PlayerStates, -// }, -// playerDeck: { -// ...PlayerDeckStates -// }, -// mixer: { -// ...MixerStates, -// } -// } - - - - - -// console.log(JSON.stringify(exportObj)); - -// export const PlayerDeckTrackStates = { -// ArtistName: 'ArtistName', -// Bleep: 'Bleep', -// CuePosition: 'CuePosition', -// CurrentBPM: 'CurrentBPM', -// CurrentKeyIndex: 'CurrentKeyIndex', -// CurrentLoopInPosition: 'CurrentLoopInPosition', -// CurrentLoopOutPosition: 'CurrentLoopOutPosition', -// CurrentLoopSizeInBeats: 'CurrentLoopSizeInBeats', -// KeyLock: 'KeyLock', -// LoopEnableState: 'LoopEnableState', -// LoopQuickLoop1: 'Loop/QuickLoop1', -// LoopQuickLoop2: 'Loop/QuickLoop2', -// LoopQuickLoop3: 'Loop/QuickLoop3', -// LoopQuickLoop4: 'Loop/QuickLoop4', -// LoopQuickLoop5: 'Loop/QuickLoop5', -// LoopQuickLoop6: 'Loop/QuickLoop6', -// LoopQuickLoop7: 'Loop/QuickLoop7', -// LoopQuickLoop8: 'Loop/QuickLoop8', -// PlayPauseLEDState: 'PlayPauseLEDState', -// SampleRate: 'SampleRate', -// SongAnalyzed: 'SongAnalyzed', -// SongLoaded: 'SongLoaded', -// SongName: 'SongName', -// SoundSwitchGUID: 'SoundSwitchGuid', -// TrackBytes: 'TrackBytes', -// TrackData: 'TrackData', -// TrackLength: 'TrackLength', -// TrackName: 'TrackName', -// TrackNetworkPath: 'TrackNetworkPath', -// TrackURI: 'TrackUri', -// TrackWasPlayed: 'TrackWasPlayed', -// } \ No newline at end of file diff --git a/types/models/Unit.ts b/types/models/Unit.ts new file mode 100644 index 0000000..d94357a --- /dev/null +++ b/types/models/Unit.ts @@ -0,0 +1,26 @@ + +type Unit = { + [key: string]: { + name: string, + type: string, + decks: number, + } +} + +export const Units: Unit = { + JC11: { name: 'PRIME4', type: 'CONTROLLER', decks: 4 }, + JC16: { name: 'PRIME2', type: 'CONTROLLER', decks: 2 }, + JC20: { name: 'LC6000', type: 'OTHER', decks: 0 }, + JP07: { name: 'SC5000', type: 'PLAYER', decks: 2 }, + JP08: { name: 'SC5000M', type: 'PLAYER', decks: 2 }, + JP11: { name: 'PRIMEGO', type: 'CONTROLLER', decks: 2 }, + JP13: { name: 'SC6000', type: 'PLAYER', decks: 2 }, + JP14: { name: 'SC6000M', type: 'PLAYER', decks: 2 }, + JP20: { name: 'SCLIVE2', type: 'CONTROLLER', decks: 2 }, + JP21: { name: 'SCLIVE4', type: 'CONTROLLER', decks: 4 }, + NH08: { name: 'MIXSTREAMPRO', type: 'CONTROLLER', decks: 2 }, + NH09: { name: 'MIXSTREAMPROPLUS', type: 'CONTROLLER', decks: 2 }, + NH10: { name: 'MIXSTREAMPROGO', type: 'CONTROLLER', decks: 2 }, + //JM08: { name: 'DN-X1800Prime', type: 'MIXER', decks: 0 }, + //JM10: { name: 'DN-X1850Prime', type: 'MIXER', decks: 0 }, +} diff --git a/types/models/index.ts b/types/models/index.ts index 718b110..400ab92 100644 --- a/types/models/index.ts +++ b/types/models/index.ts @@ -1,2 +1,4 @@ export * from './Track'; -export * from './State'; \ No newline at end of file +export * from './State'; +export * from './Source'; +export * from './Unit'; \ No newline at end of file diff --git a/types/options.ts b/types/options.ts new file mode 100644 index 0000000..3412999 --- /dev/null +++ b/types/options.ts @@ -0,0 +1,72 @@ +import { version } from '../package.json'; + +export interface DiscoveryMessageOptions { + name: string; + version: string; + source: string; + token: Uint8Array; + port?: number +}; + +export interface StageLinqOptions { + maxRetries?: number; + actingAs?: DiscoveryMessageOptions; + downloadDbSources?: boolean; + services?: ServiceList[]; + connectToMixer?: boolean +} + +export enum ServiceList { + StateMap = "StateMap", + FileTransfer = "FileTransfer", + BeatInfo = "BeatInfo", + TimeSynchronization = "TimeSynchronization", + Directory = "Directory", +} + +const Tokens = { + SoundSwitch: new Uint8Array([82, 253, 252, 7, 33, 130, 101, 79, 22, 63, 95, 15, 154, 98, 29, 114]), + Sc6000_1: new Uint8Array([130, 139, 235, 2, 218, 31, 78, 104, 166, 175, 176, 177, 103, 234, 240, 162]), + Sc6000_2: new Uint8Array([38, 210, 56, 103, 28, 214, 78, 63, 128, 161, 17, 130, 106, 196, 17, 32]), + Resolume: new Uint8Array([136, 250, 32, 153, 172, 122, 79, 63, 188, 22, 169, 149, 219, 218, 42, 66]), + Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) +} + +export const ActingAsDevice: { [name: string]: DiscoveryMessageOptions } = { + + StageLinqJS: { + name: 'stagelinqjs', + version: version, + source: 'SLJS', + token: Tokens.Listen + }, + + NowPlaying: { + name: 'nowplaying', + version: '2.2.0', + source: 'np2', + token: Tokens.Listen + }, + + Sc6000_1: { + name: 'sc6000', + version: '2.3.1', + source: 'JP13', + token: Tokens.Sc6000_1 + }, + + Sc6000_2: { + name: 'sc6000', + version: '2.3.1', + source: 'JP13', + token: Tokens.Sc6000_2 + }, + + Resolume: { + name: 'resolume', + version: '10.0.0', + source: 'res', + token: Tokens.Resolume + } + +} \ No newline at end of file diff --git a/types/player.ts b/types/player.ts index 92e4755..10defab 100644 --- a/types/player.ts +++ b/types/player.ts @@ -1,45 +1,45 @@ -import { DeviceId } from "../devices/DeviceId"; +// import { DeviceId } from "../devices/DeviceId"; -export interface PlayerStatus { - address: string; - artist: string; - currentBpm: number - deck: string; - deviceId: DeviceId; - externalMixerVolume: number; - fileLocation: string; - hasTrackData: boolean; - jogColor: string; - layer: string; - masterStatus: boolean; - masterTempo: number; - play: boolean; - player: number; - playState: boolean; - port: number; - songLoaded: boolean; - title: string; - trackNetworkPath: string; +// export interface PlayerStatus { +// address: string; +// artist: string; +// currentBpm: number +// deck: string; +// deviceId: DeviceId; +// externalMixerVolume: number; +// fileLocation: string; +// hasTrackData: boolean; +// jogColor: string; +// layer: string; +// masterStatus: boolean; +// masterTempo: number; +// play: boolean; +// player: number; +// playState: boolean; +// port: number; +// songLoaded: boolean; +// title: string; +// trackNetworkPath: string; - source: string; - dbSourceName: string; - trackPath: string; - trackPathAbsolute: string; -} +// source: string; +// dbSourceName: string; +// trackPath: string; +// trackPathAbsolute: string; +// } -export interface PlayerLayerState { - layer: string; - artist?: string; - currentBpm?: number; - externalMixerVolume?: number; - fileLocation?: string; - hasTrackData?: boolean; - jogColor?: string; - play?: boolean; - player?: string; - playState?: boolean; - songLoaded?: boolean; - title?: string; - trackNetworkPath?: string; - deckIsMaster?: boolean; -} +// export interface PlayerLayerState { +// layer: string; +// artist?: string; +// currentBpm?: number; +// externalMixerVolume?: number; +// fileLocation?: string; +// hasTrackData?: boolean; +// jogColor?: string; +// play?: boolean; +// player?: string; +// playState?: boolean; +// songLoaded?: boolean; +// title?: string; +// trackNetworkPath?: string; +// deckIsMaster?: boolean; +// } diff --git a/types/tokens.ts b/types/tokens.ts deleted file mode 100644 index 54db7cb..0000000 --- a/types/tokens.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { DiscoveryMessageOptions } from '../network'; -import { version } from '../package.json'; - -const Tokens = { - SoundSwitch: new Uint8Array([82, 253, 252, 7, 33, 130, 101, 79, 22, 63, 95, 15, 154, 98, 29, 114]), - Sc6000_1: new Uint8Array([ 130, 139, 235, 2, 218, 31, 78, 104, 166, 175, 176, 177, 103, 234, 240, 162 ]), - Sc6000_2: new Uint8Array([ 38, 210, 56, 103, 28, 214, 78, 63, 128, 161, 17, 130, 106, 196, 17, 32 ]), - Resolume: new Uint8Array([ 136, 250, 32, 153, 172, 122, 79, 63, 188, 22, 169, 149, 219, 218, 42, 66 ]), - Listen: new Uint8Array([255, 255, 255, 255, 255, 255, 74, 28, 155, 186, 136, 180, 190, 25, 163, 209]) -} - -export const ActingAsDevice: {[name: string]: DiscoveryMessageOptions} = { - - StageLinqJS: { - name: 'stagelinqjs', - version: version, - source: 'SLJS', - token: Tokens.Listen - }, - - NowPlaying: { - name: 'nowplaying', - version: '2.2.0', - source: 'np2', - token: Tokens.Listen - }, - - Sc6000_1: { - name: 'sc6000', - version: '2.3.1', - source: 'JP13', - token: Tokens.Sc6000_1 - }, - - Sc6000_2: { - name: 'sc6000', - version: '2.3.1', - source: 'JP13', - token: Tokens.Sc6000_2 - }, - - Resolume: { - name: 'resolume', - version: '10.0.0', - source: 'res', - token: Tokens.Resolume - } - -} From 23aaea579849130dcb87516f1af33b4d62d805f1 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 13:47:20 -0400 Subject: [PATCH 112/146] update /docs --- docs/assets/highlight.css | 16 +- docs/assets/search.js | 2 +- docs/classes/BeatInfo.html | 116 +++-- docs/classes/BeatInfoHandler.html | 84 ++-- docs/classes/Context.html | 24 +- docs/classes/Databases.html | 54 +-- docs/classes/DbConnection.html | 16 +- docs/classes/Device.html | 68 +-- docs/classes/DeviceId.html | 12 +- docs/classes/Devices.html | 64 +-- docs/classes/Directory.html | 92 ++-- docs/classes/DirectoryHandler.html | 64 +-- docs/classes/Discovery.html | 136 +++--- docs/classes/FileTransfer.html | 152 +++---- docs/classes/FileTransferHandler.html | 68 +-- docs/classes/ReadContext.html | 52 +-- docs/classes/Service.html | 92 ++-- docs/classes/ServiceHandler.html | 66 +-- docs/classes/Sources.html | 64 +-- docs/classes/StageLinq.html | 429 ++++++++---------- docs/classes/StateMap.html | 102 ++--- docs/classes/StateMapHandler.html | 66 +-- docs/classes/TimeSynchronization.html | 108 +++-- docs/classes/TimeSynchronizationHandler.html | 64 +-- docs/classes/TrackData.html | 241 ++++++++++ docs/classes/WriteContext.html | 48 +- docs/enums/Action.html | 6 +- docs/enums/DeviceType.html | 78 ---- docs/enums/MessageId.html | 8 +- docs/enums/ServiceList.html | 12 +- docs/functions/getTempFilePath.html | 13 +- docs/functions/sleep.html | 13 +- docs/index.html | 106 ++++- docs/interfaces/BeatData.html | 24 +- docs/interfaces/ConnectionInfo.html | 62 ++- docs/interfaces/DirectoryData.html | 4 +- docs/interfaces/DiscoveryMessage.html | 29 +- docs/interfaces/DiscoveryMessageOptions.html | 12 +- ...ransferInfo.html => FileTransferData.html} | 63 ++- docs/interfaces/FileTransferProgress.html | 10 +- docs/interfaces/PlayerLayerState.html | 152 ------- docs/interfaces/PlayerStatus.html | 222 --------- docs/interfaces/ServiceHandlers.html | 13 +- docs/interfaces/ServiceMessage.html | 26 +- docs/interfaces/Source.html | 10 +- docs/interfaces/StageLinqOptions.html | 17 +- docs/interfaces/StateData.html | 21 +- docs/interfaces/TimeSyncData.html | 6 +- docs/interfaces/Track.html | 98 ++-- docs/modules.html | 22 +- docs/types/IpAddress.html | 13 +- docs/types/IpAddressPort.html | 13 +- docs/types/Mixer.html | 13 +- docs/types/Player.html | 13 +- docs/types/PlayerDeck.html | 13 +- docs/types/ServiceData.html | 13 +- docs/types/StateMapDevice.html | 109 ----- docs/variables/ANNOUNCEMENT_INTERVAL.html | 13 +- docs/variables/ActingAsDevice.html | 13 +- docs/variables/CHUNK_SIZE.html | 13 +- docs/variables/CONNECT_TIMEOUT.html | 13 +- docs/variables/DISCOVERY_MESSAGE_MARKER.html | 13 +- docs/variables/DOWNLOAD_TIMEOUT.html | 13 +- docs/variables/LISTEN_PORT.html | 13 +- docs/variables/LISTEN_TIMEOUT.html | 13 +- docs/variables/MESSAGE_TIMEOUT.html | 13 +- ...StageLinqValueObj.html => StateNames.html} | 89 +++- .../{deviceTypes.html => Units.html} | 21 +- 68 files changed, 1721 insertions(+), 2020 deletions(-) create mode 100644 docs/classes/TrackData.html delete mode 100644 docs/enums/DeviceType.html rename docs/interfaces/{FileTransferInfo.html => FileTransferData.html} (51%) delete mode 100644 docs/interfaces/PlayerLayerState.html delete mode 100644 docs/interfaces/PlayerStatus.html delete mode 100644 docs/types/StateMapDevice.html rename docs/variables/{StageLinqValueObj.html => StateNames.html} (61%) rename docs/variables/{deviceTypes.html => Units.html} (89%) diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index e3ea874..6b99fd0 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -13,14 +13,14 @@ --dark-hl-5: #B5CEA8; --light-hl-6: #795E26; --dark-hl-6: #DCDCAA; - --light-hl-7: #A31515; - --dark-hl-7: #CE9178; - --light-hl-8: #000000FF; - --dark-hl-8: #D4D4D4; - --light-hl-9: #008000; - --dark-hl-9: #6A9955; - --light-hl-10: #AF00DB; - --dark-hl-10: #C586C0; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #A31515; + --dark-hl-8: #CE9178; + --light-hl-9: #000000FF; + --dark-hl-9: #D4D4D4; + --light-hl-10: #008000; + --dark-hl-10: #6A9955; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } diff --git a/docs/assets/search.js b/docs/assets/search.js index ef083cf..00ad401 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"8\":\"Enumeration\",\"16\":\"Enumeration Member\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":256,\"name\":\"DiscoveryMessageOptions\",\"url\":\"interfaces/DiscoveryMessageOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessageOptions.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessageOptions.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessageOptions.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessageOptions.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessageOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":128,\"name\":\"Discovery\",\"url\":\"classes/Discovery.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Discovery.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Discovery.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Discovery.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Discovery.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"classes/Discovery.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"broadcastAddress\",\"url\":\"classes/Discovery.html#broadcastAddress\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Discovery.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"peers\",\"url\":\"classes/Discovery.html#peers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Discovery.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"announceTimer\",\"url\":\"classes/Discovery.html#announceTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"hasLooped\",\"url\":\"classes/Discovery.html#hasLooped\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getConnectionInfo\",\"url\":\"classes/Discovery.html#getConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"setConnectionInfo\",\"url\":\"classes/Discovery.html#setConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"hasConnectionInfo\",\"url\":\"classes/Discovery.html#hasConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDeviceList\",\"url\":\"classes/Discovery.html#getDeviceList\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/Discovery.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Discovery.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"announce\",\"url\":\"classes/Discovery.html#announce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"unannounce\",\"url\":\"classes/Discovery.html#unannounce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"broadcastMessage\",\"url\":\"classes/Discovery.html#broadcastMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listenForDevices\",\"url\":\"classes/Discovery.html#listenForDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"readConnectionInfo\",\"url\":\"classes/Discovery.html#readConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"createDiscoveryMessage\",\"url\":\"classes/Discovery.html#createDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"writeDiscoveryMessage\",\"url\":\"classes/Discovery.html#writeDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"findBroadcastIPs\",\"url\":\"classes/Discovery.html#findBroadcastIPs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":32,\"name\":\"CHUNK_SIZE\",\"url\":\"variables/CHUNK_SIZE.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"FileTransferProgress\",\"url\":\"interfaces/FileTransferProgress.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"sizeLeft\",\"url\":\"interfaces/FileTransferProgress.html#sizeLeft\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/FileTransferProgress.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"bytesDownloaded\",\"url\":\"interfaces/FileTransferProgress.html#bytesDownloaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"percentComplete\",\"url\":\"interfaces/FileTransferProgress.html#percentComplete\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":128,\"name\":\"FileTransfer\",\"url\":\"classes/FileTransfer.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransfer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/FileTransfer.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransfer.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"receivedFile\",\"url\":\"classes/FileTransfer.html#receivedFile\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#txid\",\"url\":\"classes/FileTransfer.html#_txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#isAvailable\",\"url\":\"classes/FileTransfer.html#_isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":262144,\"name\":\"txid\",\"url\":\"classes/FileTransfer.html#txid\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/FileTransfer.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/FileTransfer.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getFile\",\"url\":\"classes/FileTransfer.html#getFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"updateSources\",\"url\":\"classes/FileTransfer.html#updateSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/FileTransfer.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestStat\",\"url\":\"classes/FileTransfer.html#requestStat\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestSources\",\"url\":\"classes/FileTransfer.html#requestSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestFileTransferId\",\"url\":\"classes/FileTransfer.html#requestFileTransferId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestChunkRange\",\"url\":\"classes/FileTransfer.html#requestChunkRange\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"signalTransferComplete\",\"url\":\"classes/FileTransfer.html#signalTransferComplete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"sendNoSourcesReply\",\"url\":\"classes/FileTransfer.html#sendNoSourcesReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"isAvailable\",\"url\":\"classes/FileTransfer.html#isAvailable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/FileTransfer.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/FileTransfer.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/FileTransfer.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/FileTransfer.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/FileTransfer.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/FileTransfer.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/FileTransfer.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransfer.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/FileTransfer.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/FileTransfer.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/FileTransfer.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/FileTransfer.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/FileTransfer.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/FileTransfer.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/FileTransfer.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/FileTransfer.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/FileTransfer.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":128,\"name\":\"FileTransferHandler\",\"url\":\"classes/FileTransferHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransferHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransferHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/FileTransferHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransferHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/FileTransferHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/FileTransferHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/FileTransferHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/FileTransferHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/FileTransferHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/FileTransferHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":4194304,\"name\":\"ServiceData\",\"url\":\"types/ServiceData.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/ServiceData.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"ServiceData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"types/ServiceData.html#__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"types/ServiceData.html#__type.socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"types/ServiceData.html#__type.deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"types/ServiceData.html#__type.service\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":128,\"name\":\"ServiceHandler\",\"url\":\"classes/ServiceHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ServiceHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/ServiceHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/ServiceHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"_devices\",\"url\":\"classes/ServiceHandler.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/ServiceHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/ServiceHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/ServiceHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/ServiceHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/ServiceHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/ServiceHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/ServiceHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":128,\"name\":\"Service\",\"url\":\"classes/Service.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Service.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Service.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Service.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Service.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Service.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Service.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Service.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Service.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Service.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Service.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Service.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Service.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"messageBuffer\",\"url\":\"classes/Service.html#messageBuffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Service.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Service.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Service.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"subMessageTest\",\"url\":\"classes/Service.html#subMessageTest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"dataHandler\",\"url\":\"classes/Service.html#dataHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Service.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Service.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Service.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Service.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Service.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Service.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":4194304,\"name\":\"Player\",\"url\":\"types/Player.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"PlayerDeck\",\"url\":\"types/PlayerDeck.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"Mixer\",\"url\":\"types/Mixer.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"StateMapDevice\",\"url\":\"types/StateMapDevice.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"StateData\",\"url\":\"interfaces/StateData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/StateData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/StateData.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"json\",\"url\":\"interfaces/StateData.html#json\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/StateData.html#json.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateData.json\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/StateData.html#json.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"string\",\"url\":\"interfaces/StateData.html#json.__type.string\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/StateData.html#json.__type.value\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"state\",\"url\":\"interfaces/StateData.html#json.__type.state\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"interval\",\"url\":\"interfaces/StateData.html#interval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":128,\"name\":\"StateMapHandler\",\"url\":\"classes/StateMapHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMapHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMapHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"deviceTrackRegister\",\"url\":\"classes/StateMapHandler.html#deviceTrackRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/StateMapHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMapHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/StateMapHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/StateMapHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/StateMapHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/StateMapHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/StateMapHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/StateMapHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":128,\"name\":\"StateMap\",\"url\":\"classes/StateMap.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMap.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMap.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/StateMap.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"hasReceivedState\",\"url\":\"classes/StateMap.html#hasReceivedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribe\",\"url\":\"classes/StateMap.html#subscribe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/StateMap.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/StateMap.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"sendStateResponse\",\"url\":\"classes/StateMap.html#sendStateResponse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribeState\",\"url\":\"classes/StateMap.html#subscribeState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/StateMap.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/StateMap.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/StateMap.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/StateMap.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/StateMap.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/StateMap.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/StateMap.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMap.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/StateMap.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/StateMap.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/StateMap.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/StateMap.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/StateMap.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/StateMap.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/StateMap.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/StateMap.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/StateMap.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":256,\"name\":\"DirectoryData\",\"url\":\"interfaces/DirectoryData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DirectoryData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DirectoryData\"},{\"kind\":128,\"name\":\"DirectoryHandler\",\"url\":\"classes/DirectoryHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DirectoryHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/DirectoryHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/DirectoryHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/DirectoryHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/DirectoryHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/DirectoryHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/DirectoryHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/DirectoryHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/DirectoryHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/DirectoryHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":128,\"name\":\"Directory\",\"url\":\"classes/Directory.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Directory.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Directory.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Directory.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeAlive\",\"url\":\"classes/Directory.html#timeAlive\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Directory.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Directory.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendServiceAnnouncement\",\"url\":\"classes/Directory.html#sendServiceAnnouncement\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendTimeStampReply\",\"url\":\"classes/Directory.html#sendTimeStampReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Directory.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Directory.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Directory.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Directory.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Directory.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Directory.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Directory.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Directory.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Directory.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Directory.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Directory.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Directory.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Directory.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Directory.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Directory.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Directory.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":256,\"name\":\"BeatData\",\"url\":\"interfaces/BeatData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"clock\",\"url\":\"interfaces/BeatData.html#clock\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deckCount\",\"url\":\"interfaces/BeatData.html#deckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/BeatData.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":128,\"name\":\"BeatInfoHandler\",\"url\":\"classes/BeatInfoHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfoHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfoHandler.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfoHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"#beatRegister\",\"url\":\"classes/BeatInfoHandler.html#_beatRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfoHandler.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setBeatData\",\"url\":\"classes/BeatInfoHandler.html#setBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/BeatInfoHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfoHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/BeatInfoHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/BeatInfoHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/BeatInfoHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/BeatInfoHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/BeatInfoHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/BeatInfoHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":128,\"name\":\"BeatInfo\",\"url\":\"classes/BeatInfo.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfo.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfo.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfo.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/BeatInfo.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatCallback\",\"url\":\"classes/BeatInfo.html#_userBeatCallback\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatOptions\",\"url\":\"classes/BeatInfo.html#_userBeatOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_currentBeatData\",\"url\":\"classes/BeatInfo.html#_currentBeatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/BeatInfo.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfo.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"startBeatInfo\",\"url\":\"classes/BeatInfo.html#startBeatInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"sendBeatInfoRequest\",\"url\":\"classes/BeatInfo.html#sendBeatInfoRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/BeatInfo.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/BeatInfo.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/BeatInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/BeatInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/BeatInfo.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/BeatInfo.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/BeatInfo.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/BeatInfo.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfo.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/BeatInfo.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/BeatInfo.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/BeatInfo.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/BeatInfo.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/BeatInfo.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/BeatInfo.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/BeatInfo.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/BeatInfo.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/BeatInfo.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":256,\"name\":\"TimeSyncData\",\"url\":\"interfaces/TimeSyncData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"msgs\",\"url\":\"interfaces/TimeSyncData.html#msgs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/TimeSyncData.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":128,\"name\":\"TimeSynchronizationHandler\",\"url\":\"classes/TimeSynchronizationHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronizationHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronizationHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/TimeSynchronizationHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronizationHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/TimeSynchronizationHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":128,\"name\":\"TimeSynchronization\",\"url\":\"classes/TimeSynchronization.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronization.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronization.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/TimeSynchronization.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"localTime\",\"url\":\"classes/TimeSynchronization.html#localTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"remoteTime\",\"url\":\"classes/TimeSynchronization.html#remoteTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"avgTimeArray\",\"url\":\"classes/TimeSynchronization.html#avgTimeArray\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncRequest\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeSyncMsgHelper\",\"url\":\"classes/TimeSynchronization.html#timeSyncMsgHelper\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"getTimeStamp\",\"url\":\"classes/TimeSynchronization.html#getTimeStamp\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncQuery\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncQuery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/TimeSynchronization.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeAvg\",\"url\":\"classes/TimeSynchronization.html#timeAvg\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/TimeSynchronization.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/TimeSynchronization.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/TimeSynchronization.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/TimeSynchronization.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/TimeSynchronization.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/TimeSynchronization.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/TimeSynchronization.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronization.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/TimeSynchronization.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/TimeSynchronization.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/TimeSynchronization.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/TimeSynchronization.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/TimeSynchronization.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/TimeSynchronization.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/TimeSynchronization.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/TimeSynchronization.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/TimeSynchronization.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":256,\"name\":\"ServiceHandlers\",\"url\":\"interfaces/ServiceHandlers.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":128,\"name\":\"StageLinq\",\"url\":\"classes/StageLinq.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StageLinq.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/StageLinq.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/StageLinq.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/StageLinq.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/StageLinq.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/StageLinq.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"discovery\",\"url\":\"classes/StageLinq.html#discovery\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"stateMap\",\"url\":\"classes/StageLinq.html#stateMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"fileTransfer\",\"url\":\"classes/StageLinq.html#fileTransfer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"beatInfo\",\"url\":\"classes/StageLinq.html#beatInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"timeSync\",\"url\":\"classes/StageLinq.html#timeSync\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"databases\",\"url\":\"classes/StageLinq.html#databases\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"classes/StageLinq.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"classes/StageLinq.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"directory\",\"url\":\"classes/StageLinq.html#directory\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"servers\",\"url\":\"classes/StageLinq.html#servers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"addServer\",\"url\":\"classes/StageLinq.html#addServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"deleteServer\",\"url\":\"classes/StageLinq.html#deleteServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"getServers\",\"url\":\"classes/StageLinq.html#getServers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/StageLinq.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"disconnect\",\"url\":\"classes/StageLinq.html#disconnect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":256,\"name\":\"DiscoveryMessage\",\"url\":\"interfaces/DiscoveryMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessage.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessage.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/DiscoveryMessage.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/DiscoveryMessage.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"DiscoveryMessage.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessage.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":8,\"name\":\"DeviceType\",\"url\":\"enums/DeviceType.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Player\",\"url\":\"enums/DeviceType.html#Player\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":16,\"name\":\"Mixer\",\"url\":\"enums/DeviceType.html#Mixer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":16,\"name\":\"Controller\",\"url\":\"enums/DeviceType.html#Controller\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"DeviceType\"},{\"kind\":256,\"name\":\"ConnectionInfo\",\"url\":\"interfaces/ConnectionInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/ConnectionInfo.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/ConnectionInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#device.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.device\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"decks\",\"url\":\"interfaces/ConnectionInfo.html#device.__type.decks\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.device.__type\"},{\"kind\":1024,\"name\":\"addressPort\",\"url\":\"interfaces/ConnectionInfo.html#addressPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/ConnectionInfo.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ConnectionInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/ConnectionInfo.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/ConnectionInfo.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/ConnectionInfo.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/ConnectionInfo.html#software.__type-1.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ConnectionInfo.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":256,\"name\":\"ServiceMessage\",\"url\":\"interfaces/ServiceMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ServiceMessage.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"message\",\"url\":\"interfaces/ServiceMessage.html#message\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"interfaces/ServiceMessage.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ServiceMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":256,\"name\":\"Source\",\"url\":\"interfaces/Source.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/Source.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/Source.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/Source.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"database\",\"url\":\"interfaces/Source.html#database\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/Source.html#database.__type.size\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"connection\",\"url\":\"interfaces/Source.html#database.__type.connection\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"remote\",\"url\":\"interfaces/Source.html#database.__type.remote\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.remote\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.device\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"local\",\"url\":\"interfaces/Source.html#database.__type.local\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.local\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":256,\"name\":\"FileTransferInfo\",\"url\":\"interfaces/FileTransferInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"txid\",\"url\":\"interfaces/FileTransferInfo.html#txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferInfo\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/FileTransferInfo.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferInfo\"},{\"kind\":4194304,\"name\":\"IpAddress\",\"url\":\"types/IpAddress.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"IpAddressPort\",\"url\":\"types/IpAddressPort.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":8,\"name\":\"ServiceList\",\"url\":\"enums/ServiceList.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"StateMap\",\"url\":\"enums/ServiceList.html#StateMap\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"FileTransfer\",\"url\":\"enums/ServiceList.html#FileTransfer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"BeatInfo\",\"url\":\"enums/ServiceList.html#BeatInfo\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"TimeSynchronization\",\"url\":\"enums/ServiceList.html#TimeSynchronization\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"Directory\",\"url\":\"enums/ServiceList.html#Directory\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":256,\"name\":\"StageLinqOptions\",\"url\":\"interfaces/StageLinqOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"maxRetries\",\"url\":\"interfaces/StageLinqOptions.html#maxRetries\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"actingAs\",\"url\":\"interfaces/StageLinqOptions.html#actingAs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"downloadDbSources\",\"url\":\"interfaces/StageLinqOptions.html#downloadDbSources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"interfaces/StageLinqOptions.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":32,\"name\":\"deviceTypes\",\"url\":\"variables/deviceTypes.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"ANNOUNCEMENT_INTERVAL\",\"url\":\"variables/ANNOUNCEMENT_INTERVAL.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_PORT\",\"url\":\"variables/LISTEN_PORT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_TIMEOUT\",\"url\":\"variables/LISTEN_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"MESSAGE_TIMEOUT\",\"url\":\"variables/MESSAGE_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"CONNECT_TIMEOUT\",\"url\":\"variables/CONNECT_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DOWNLOAD_TIMEOUT\",\"url\":\"variables/DOWNLOAD_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DISCOVERY_MESSAGE_MARKER\",\"url\":\"variables/DISCOVERY_MESSAGE_MARKER.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":8,\"name\":\"Action\",\"url\":\"enums/Action.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Login\",\"url\":\"enums/Action.html#Login\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":16,\"name\":\"Logout\",\"url\":\"enums/Action.html#Logout\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":8,\"name\":\"MessageId\",\"url\":\"enums/MessageId.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"ServicesAnnouncement\",\"url\":\"enums/MessageId.html#ServicesAnnouncement\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"TimeStamp\",\"url\":\"enums/MessageId.html#TimeStamp\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"ServicesRequest\",\"url\":\"enums/MessageId.html#ServicesRequest\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":32,\"name\":\"StageLinqValueObj\",\"url\":\"variables/StageLinqValueObj.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"StageLinqValueObj\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"variables/StageLinqValueObj.html#__type.player\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StageLinqValueObj.__type.player\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkMasterStatus\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineSyncNetworkMasterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineMasterMasterTempo\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineMasterMasterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeckCount\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck1TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck2TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck3TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4CurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalMixerVolume\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalScratchWheelTouch\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PadsView\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Play\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayStatePath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Speed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedNeutral\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetDown\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetUp\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedRange\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncMode\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackArtistName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackBleep\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCuePosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentBPM\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentKeyIndex\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopInPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopOutPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackKeyLock\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopEnableState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop1\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop2\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop3\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop4\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop5\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop6\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop7\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop8\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackPlayPauseLEDState\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSampleRate\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongAnalyzed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongLoaded\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSoundSwitchGUID\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackBytes\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackData\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackLength\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackName\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackNetworkPath\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackURI\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackWasPlayed\",\"url\":\"variables/StageLinqValueObj.html#__type.player.__type-2.EngineDeck4TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.player.__type\"},{\"kind\":1024,\"name\":\"mixer\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StageLinqValueObj.__type.mixer\"},{\"kind\":1024,\"name\":\"MixerCH1faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH1faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH2faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH2faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH3faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH3faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH4faderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCH4faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCrossfaderPosition\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerCrossfaderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment1\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment2\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment3\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment4\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerChannelAssignment4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerNumberOfChannels\",\"url\":\"variables/StageLinqValueObj.html#__type.mixer.__type-1.MixerNumberOfChannels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StageLinqValueObj.__type.mixer.__type\"},{\"kind\":256,\"name\":\"PlayerStatus\",\"url\":\"interfaces/PlayerStatus.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/PlayerStatus.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/PlayerStatus.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"currentBpm\",\"url\":\"interfaces/PlayerStatus.html#currentBpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/PlayerStatus.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/PlayerStatus.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"externalMixerVolume\",\"url\":\"interfaces/PlayerStatus.html#externalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"fileLocation\",\"url\":\"interfaces/PlayerStatus.html#fileLocation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"hasTrackData\",\"url\":\"interfaces/PlayerStatus.html#hasTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"jogColor\",\"url\":\"interfaces/PlayerStatus.html#jogColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"layer\",\"url\":\"interfaces/PlayerStatus.html#layer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"masterStatus\",\"url\":\"interfaces/PlayerStatus.html#masterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"masterTempo\",\"url\":\"interfaces/PlayerStatus.html#masterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"play\",\"url\":\"interfaces/PlayerStatus.html#play\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"interfaces/PlayerStatus.html#player\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"playState\",\"url\":\"interfaces/PlayerStatus.html#playState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/PlayerStatus.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"songLoaded\",\"url\":\"interfaces/PlayerStatus.html#songLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/PlayerStatus.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackNetworkPath\",\"url\":\"interfaces/PlayerStatus.html#trackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/PlayerStatus.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"dbSourceName\",\"url\":\"interfaces/PlayerStatus.html#dbSourceName\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackPath\",\"url\":\"interfaces/PlayerStatus.html#trackPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":1024,\"name\":\"trackPathAbsolute\",\"url\":\"interfaces/PlayerStatus.html#trackPathAbsolute\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerStatus\"},{\"kind\":256,\"name\":\"PlayerLayerState\",\"url\":\"interfaces/PlayerLayerState.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"layer\",\"url\":\"interfaces/PlayerLayerState.html#layer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/PlayerLayerState.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"currentBpm\",\"url\":\"interfaces/PlayerLayerState.html#currentBpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"externalMixerVolume\",\"url\":\"interfaces/PlayerLayerState.html#externalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"fileLocation\",\"url\":\"interfaces/PlayerLayerState.html#fileLocation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"hasTrackData\",\"url\":\"interfaces/PlayerLayerState.html#hasTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"jogColor\",\"url\":\"interfaces/PlayerLayerState.html#jogColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"play\",\"url\":\"interfaces/PlayerLayerState.html#play\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"interfaces/PlayerLayerState.html#player\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"playState\",\"url\":\"interfaces/PlayerLayerState.html#playState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"songLoaded\",\"url\":\"interfaces/PlayerLayerState.html#songLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/PlayerLayerState.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":1024,\"name\":\"trackNetworkPath\",\"url\":\"interfaces/PlayerLayerState.html#trackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlayerLayerState\"},{\"kind\":32,\"name\":\"ActingAsDevice\",\"url\":\"variables/ActingAsDevice.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/ActingAsDevice.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"ActingAsDevice\"},{\"kind\":256,\"name\":\"Track\",\"url\":\"interfaces/Track.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/Track.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playOrder\",\"url\":\"interfaces/Track.html#playOrder\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"length\",\"url\":\"interfaces/Track.html#length\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpm\",\"url\":\"interfaces/Track.html#bpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"year\",\"url\":\"interfaces/Track.html#year\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Track.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"filename\",\"url\":\"interfaces/Track.html#filename\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bitrate\",\"url\":\"interfaces/Track.html#bitrate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpmAnalyzed\",\"url\":\"interfaces/Track.html#bpmAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArtId\",\"url\":\"interfaces/Track.html#albumArtId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileBytes\",\"url\":\"interfaces/Track.html#fileBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/Track.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/Track.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"album\",\"url\":\"interfaces/Track.html#album\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"genre\",\"url\":\"interfaces/Track.html#genre\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"comment\",\"url\":\"interfaces/Track.html#comment\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/Track.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"composer\",\"url\":\"interfaces/Track.html#composer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"remixer\",\"url\":\"interfaces/Track.html#remixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/Track.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"rating\",\"url\":\"interfaces/Track.html#rating\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArt\",\"url\":\"interfaces/Track.html#albumArt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"timeLastPlayed\",\"url\":\"interfaces/Track.html#timeLastPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPlayed\",\"url\":\"interfaces/Track.html#isPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileType\",\"url\":\"interfaces/Track.html#fileType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAnalyzed\",\"url\":\"interfaces/Track.html#isAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateCreated\",\"url\":\"interfaces/Track.html#dateCreated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateAdded\",\"url\":\"interfaces/Track.html#dateAdded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAvailable\",\"url\":\"interfaces/Track.html#isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isMetadataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPerfomanceDataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isPerfomanceDataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playedIndicator\",\"url\":\"interfaces/Track.html#playedIndicator\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataImported\",\"url\":\"interfaces/Track.html#isMetadataImported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"pdbImportKey\",\"url\":\"interfaces/Track.html#pdbImportKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingSource\",\"url\":\"interfaces/Track.html#streamingSource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"uri\",\"url\":\"interfaces/Track.html#uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isBeatGridLocked\",\"url\":\"interfaces/Track.html#isBeatGridLocked\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originDatabaseUuid\",\"url\":\"interfaces/Track.html#originDatabaseUuid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originTrackId\",\"url\":\"interfaces/Track.html#originTrackId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"trackData\",\"url\":\"interfaces/Track.html#trackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"overviewWaveFormData\",\"url\":\"interfaces/Track.html#overviewWaveFormData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"beatData\",\"url\":\"interfaces/Track.html#beatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"quickCues\",\"url\":\"interfaces/Track.html#quickCues\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"loops\",\"url\":\"interfaces/Track.html#loops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"thirdPartySourceId\",\"url\":\"interfaces/Track.html#thirdPartySourceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingFlags\",\"url\":\"interfaces/Track.html#streamingFlags\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"explicitLyrics\",\"url\":\"interfaces/Track.html#explicitLyrics\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"activeOnLoadLoops\",\"url\":\"interfaces/Track.html#activeOnLoadLoops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":128,\"name\":\"Context\",\"url\":\"classes/Context.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Context.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/Context.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/Context.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/Context.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/Context.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/Context.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/Context.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/Context.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/Context.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/Context.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/Context.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":64,\"name\":\"getTempFilePath\",\"url\":\"functions/getTempFilePath.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"ReadContext\",\"url\":\"classes/ReadContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ReadContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"read\",\"url\":\"classes/ReadContext.html#read\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"peek\",\"url\":\"classes/ReadContext.html#peek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemaining\",\"url\":\"classes/ReadContext.html#readRemaining\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewArrayBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewArrayBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewCtx\",\"url\":\"classes/ReadContext.html#readRemainingAsNewCtx\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/ReadContext.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readNetworkStringUTF16\",\"url\":\"classes/ReadContext.html#readNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readFloat64\",\"url\":\"classes/ReadContext.html#readFloat64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt64\",\"url\":\"classes/ReadContext.html#readUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt32\",\"url\":\"classes/ReadContext.html#readUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readInt32\",\"url\":\"classes/ReadContext.html#readInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt16\",\"url\":\"classes/ReadContext.html#readUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt8\",\"url\":\"classes/ReadContext.html#readUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/ReadContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/ReadContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/ReadContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/ReadContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/ReadContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/ReadContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/ReadContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/ReadContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/ReadContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/ReadContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":128,\"name\":\"WriteContext\",\"url\":\"classes/WriteContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WriteContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"autoGrow\",\"url\":\"classes/WriteContext.html#autoGrow\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"getBuffer\",\"url\":\"classes/WriteContext.html#getBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/WriteContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"checkSize\",\"url\":\"classes/WriteContext.html#checkSize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"resize\",\"url\":\"classes/WriteContext.html#resize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/WriteContext.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeFixedSizedString\",\"url\":\"classes/WriteContext.html#writeFixedSizedString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeNetworkStringUTF16\",\"url\":\"classes/WriteContext.html#writeNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt64\",\"url\":\"classes/WriteContext.html#writeUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt32\",\"url\":\"classes/WriteContext.html#writeUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeInt32\",\"url\":\"classes/WriteContext.html#writeInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt16\",\"url\":\"classes/WriteContext.html#writeUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt8\",\"url\":\"classes/WriteContext.html#writeUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/WriteContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/WriteContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/WriteContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/WriteContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/WriteContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/WriteContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/WriteContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/WriteContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/WriteContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":64,\"name\":\"sleep\",\"url\":\"functions/sleep.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"DeviceId\",\"url\":\"classes/DeviceId.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DeviceId.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_str\",\"url\":\"classes/DeviceId.html#m_str\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_array\",\"url\":\"classes/DeviceId.html#m_array\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"string\",\"url\":\"classes/DeviceId.html#string\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"array\",\"url\":\"classes/DeviceId.html#array\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":128,\"name\":\"Devices\",\"url\":\"classes/Devices.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Devices.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":1024,\"name\":\"#devices\",\"url\":\"classes/Devices.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/Devices.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Devices.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"device\",\"url\":\"classes/Devices.html#device\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/Devices.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasNewInfo\",\"url\":\"classes/Devices.html#hasNewInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"updateDeviceInfo\",\"url\":\"classes/Devices.html#updateDeviceInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Devices.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Devices.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Device.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"classes/Device.html#info\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/Device.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Device.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Device.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":128,\"name\":\"Databases\",\"url\":\"classes/Databases.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Databases.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Databases.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Databases.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"downloadDb\",\"url\":\"classes/Databases.html#downloadDb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":128,\"name\":\"DbConnection\",\"url\":\"classes/DbConnection.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DbConnection.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"db\",\"url\":\"classes/DbConnection.html#db\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"dbPath\",\"url\":\"classes/DbConnection.html#dbPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"querySource\",\"url\":\"classes/DbConnection.html#querySource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"zInflate\",\"url\":\"classes/DbConnection.html#zInflate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"getTrackInfo\",\"url\":\"classes/DbConnection.html#getTrackInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"close\",\"url\":\"classes/DbConnection.html#close\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":128,\"name\":\"Sources\",\"url\":\"classes/Sources.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Sources.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Sources.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"_sources\",\"url\":\"classes/Sources.html#_sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Sources.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSource\",\"url\":\"classes/Sources.html#hasSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSourceAndDB\",\"url\":\"classes/Sources.html#hasSourceAndDB\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSource\",\"url\":\"classes/Sources.html#getSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/Sources.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"setSource\",\"url\":\"classes/Sources.html#setSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"deleteSource\",\"url\":\"classes/Sources.html#deleteSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadFile\",\"url\":\"classes/Sources.html#downloadFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,63.063]],[\"comment/0\",[]],[\"name/1\",[1,37.413]],[\"comment/1\",[]],[\"name/2\",[2,54.59]],[\"comment/2\",[]],[\"name/3\",[3,50.07]],[\"comment/3\",[]],[\"name/4\",[4,54.59]],[\"comment/4\",[]],[\"name/5\",[5,52.077]],[\"comment/5\",[]],[\"name/6\",[6,57.954]],[\"comment/6\",[]],[\"name/7\",[7,35.982]],[\"comment/7\",[]],[\"name/8\",[8,45.717]],[\"comment/8\",[]],[\"name/9\",[9,39.084]],[\"comment/9\",[]],[\"name/10\",[10,44.604]],[\"comment/10\",[]],[\"name/11\",[11,54.59]],[\"comment/11\",[]],[\"name/12\",[12,63.063]],[\"comment/12\",[]],[\"name/13\",[13,57.954]],[\"comment/13\",[]],[\"name/14\",[14,63.063]],[\"comment/14\",[]],[\"name/15\",[15,39.084]],[\"comment/15\",[]],[\"name/16\",[16,63.063]],[\"comment/16\",[]],[\"name/17\",[17,63.063]],[\"comment/17\",[]],[\"name/18\",[18,63.063]],[\"comment/18\",[]],[\"name/19\",[19,63.063]],[\"comment/19\",[]],[\"name/20\",[20,63.063]],[\"comment/20\",[]],[\"name/21\",[21,63.063]],[\"comment/21\",[]],[\"name/22\",[22,46.968]],[\"comment/22\",[]],[\"name/23\",[23,46.968]],[\"comment/23\",[]],[\"name/24\",[24,63.063]],[\"comment/24\",[]],[\"name/25\",[25,63.063]],[\"comment/25\",[]],[\"name/26\",[26,63.063]],[\"comment/26\",[]],[\"name/27\",[27,63.063]],[\"comment/27\",[]],[\"name/28\",[28,63.063]],[\"comment/28\",[]],[\"name/29\",[29,63.063]],[\"comment/29\",[]],[\"name/30\",[30,63.063]],[\"comment/30\",[]],[\"name/31\",[31,63.063]],[\"comment/31\",[]],[\"name/32\",[32,63.063]],[\"comment/32\",[]],[\"name/33\",[33,63.063]],[\"comment/33\",[]],[\"name/34\",[34,52.077]],[\"comment/34\",[]],[\"name/35\",[35,63.063]],[\"comment/35\",[]],[\"name/36\",[36,63.063]],[\"comment/36\",[]],[\"name/37\",[37,63.063]],[\"comment/37\",[]],[\"name/38\",[38,54.59]],[\"comment/38\",[]],[\"name/39\",[7,35.982]],[\"comment/39\",[]],[\"name/40\",[8,45.717]],[\"comment/40\",[]],[\"name/41\",[1,37.413]],[\"comment/41\",[]],[\"name/42\",[39,63.063]],[\"comment/42\",[]],[\"name/43\",[40,54.59]],[\"comment/43\",[]],[\"name/44\",[41,54.59]],[\"comment/44\",[]],[\"name/45\",[40,54.59]],[\"comment/45\",[]],[\"name/46\",[42,48.399]],[\"comment/46\",[]],[\"name/47\",[43,48.399]],[\"comment/47\",[]],[\"name/48\",[44,63.063]],[\"comment/48\",[]],[\"name/49\",[45,63.063]],[\"comment/49\",[]],[\"name/50\",[46,57.954]],[\"comment/50\",[]],[\"name/51\",[47,63.063]],[\"comment/51\",[]],[\"name/52\",[48,63.063]],[\"comment/52\",[]],[\"name/53\",[49,63.063]],[\"comment/53\",[]],[\"name/54\",[50,63.063]],[\"comment/54\",[]],[\"name/55\",[51,63.063]],[\"comment/55\",[]],[\"name/56\",[52,63.063]],[\"comment/56\",[]],[\"name/57\",[41,54.59]],[\"comment/57\",[]],[\"name/58\",[53,43.604]],[\"comment/58\",[]],[\"name/59\",[15,39.084]],[\"comment/59\",[]],[\"name/60\",[54,48.399]],[\"comment/60\",[]],[\"name/61\",[55,48.399]],[\"comment/61\",[]],[\"name/62\",[56,48.399]],[\"comment/62\",[]],[\"name/63\",[10,44.604]],[\"comment/63\",[]],[\"name/64\",[57,48.399]],[\"comment/64\",[]],[\"name/65\",[9,39.084]],[\"comment/65\",[]],[\"name/66\",[58,48.399]],[\"comment/66\",[]],[\"name/67\",[59,48.399]],[\"comment/67\",[]],[\"name/68\",[60,48.399]],[\"comment/68\",[]],[\"name/69\",[23,46.968]],[\"comment/69\",[]],[\"name/70\",[61,48.399]],[\"comment/70\",[]],[\"name/71\",[62,48.399]],[\"comment/71\",[]],[\"name/72\",[63,46.968]],[\"comment/72\",[]],[\"name/73\",[64,48.399]],[\"comment/73\",[]],[\"name/74\",[65,48.399]],[\"comment/74\",[]],[\"name/75\",[66,63.063]],[\"comment/75\",[]],[\"name/76\",[7,35.982]],[\"comment/76\",[]],[\"name/77\",[1,37.413]],[\"comment/77\",[]],[\"name/78\",[67,48.399]],[\"comment/78\",[]],[\"name/79\",[9,39.084]],[\"comment/79\",[]],[\"name/80\",[68,46.968]],[\"comment/80\",[]],[\"name/81\",[69,46.968]],[\"comment/81\",[]],[\"name/82\",[22,46.968]],[\"comment/82\",[]],[\"name/83\",[70,46.968]],[\"comment/83\",[]],[\"name/84\",[71,48.399]],[\"comment/84\",[]],[\"name/85\",[72,48.399]],[\"comment/85\",[]],[\"name/86\",[73,63.063]],[\"comment/86\",[]],[\"name/87\",[74,41.86]],[\"comment/87\",[]],[\"name/88\",[1,37.413]],[\"comment/88\",[]],[\"name/89\",[10,44.604]],[\"comment/89\",[]],[\"name/90\",[15,39.084]],[\"comment/90\",[]],[\"name/91\",[75,52.077]],[\"comment/91\",[]],[\"name/92\",[76,63.063]],[\"comment/92\",[]],[\"name/93\",[7,35.982]],[\"comment/93\",[]],[\"name/94\",[1,37.413]],[\"comment/94\",[]],[\"name/95\",[9,39.084]],[\"comment/95\",[]],[\"name/96\",[77,63.063]],[\"comment/96\",[]],[\"name/97\",[68,46.968]],[\"comment/97\",[]],[\"name/98\",[69,46.968]],[\"comment/98\",[]],[\"name/99\",[22,46.968]],[\"comment/99\",[]],[\"name/100\",[70,46.968]],[\"comment/100\",[]],[\"name/101\",[71,48.399]],[\"comment/101\",[]],[\"name/102\",[72,48.399]],[\"comment/102\",[]],[\"name/103\",[67,48.399]],[\"comment/103\",[]],[\"name/104\",[75,52.077]],[\"comment/104\",[]],[\"name/105\",[7,35.982]],[\"comment/105\",[]],[\"name/106\",[1,37.413]],[\"comment/106\",[]],[\"name/107\",[53,43.604]],[\"comment/107\",[]],[\"name/108\",[15,39.084]],[\"comment/108\",[]],[\"name/109\",[54,48.399]],[\"comment/109\",[]],[\"name/110\",[55,48.399]],[\"comment/110\",[]],[\"name/111\",[56,48.399]],[\"comment/111\",[]],[\"name/112\",[10,44.604]],[\"comment/112\",[]],[\"name/113\",[57,48.399]],[\"comment/113\",[]],[\"name/114\",[9,39.084]],[\"comment/114\",[]],[\"name/115\",[58,48.399]],[\"comment/115\",[]],[\"name/116\",[59,48.399]],[\"comment/116\",[]],[\"name/117\",[78,63.063]],[\"comment/117\",[]],[\"name/118\",[60,48.399]],[\"comment/118\",[]],[\"name/119\",[23,46.968]],[\"comment/119\",[]],[\"name/120\",[61,48.399]],[\"comment/120\",[]],[\"name/121\",[79,63.063]],[\"comment/121\",[]],[\"name/122\",[80,63.063]],[\"comment/122\",[]],[\"name/123\",[62,48.399]],[\"comment/123\",[]],[\"name/124\",[63,46.968]],[\"comment/124\",[]],[\"name/125\",[64,48.399]],[\"comment/125\",[]],[\"name/126\",[65,48.399]],[\"comment/126\",[]],[\"name/127\",[42,48.399]],[\"comment/127\",[]],[\"name/128\",[43,48.399]],[\"comment/128\",[]],[\"name/129\",[81,50.07]],[\"comment/129\",[]],[\"name/130\",[82,63.063]],[\"comment/130\",[]],[\"name/131\",[83,54.59]],[\"comment/131\",[]],[\"name/132\",[84,63.063]],[\"comment/132\",[]],[\"name/133\",[85,63.063]],[\"comment/133\",[]],[\"name/134\",[75,52.077]],[\"comment/134\",[]],[\"name/135\",[1,37.413]],[\"comment/135\",[]],[\"name/136\",[86,63.063]],[\"comment/136\",[]],[\"name/137\",[74,41.86]],[\"comment/137\",[]],[\"name/138\",[87,57.954]],[\"comment/138\",[]],[\"name/139\",[88,57.954]],[\"comment/139\",[]],[\"name/140\",[89,63.063]],[\"comment/140\",[]],[\"name/141\",[90,63.063]],[\"comment/141\",[]],[\"name/142\",[91,63.063]],[\"comment/142\",[]],[\"name/143\",[92,63.063]],[\"comment/143\",[]],[\"name/144\",[7,35.982]],[\"comment/144\",[]],[\"name/145\",[1,37.413]],[\"comment/145\",[]],[\"name/146\",[93,63.063]],[\"comment/146\",[]],[\"name/147\",[67,48.399]],[\"comment/147\",[]],[\"name/148\",[9,39.084]],[\"comment/148\",[]],[\"name/149\",[68,46.968]],[\"comment/149\",[]],[\"name/150\",[69,46.968]],[\"comment/150\",[]],[\"name/151\",[22,46.968]],[\"comment/151\",[]],[\"name/152\",[70,46.968]],[\"comment/152\",[]],[\"name/153\",[71,48.399]],[\"comment/153\",[]],[\"name/154\",[72,48.399]],[\"comment/154\",[]],[\"name/155\",[94,54.59]],[\"comment/155\",[]],[\"name/156\",[7,35.982]],[\"comment/156\",[]],[\"name/157\",[1,37.413]],[\"comment/157\",[]],[\"name/158\",[95,57.954]],[\"comment/158\",[]],[\"name/159\",[96,63.063]],[\"comment/159\",[]],[\"name/160\",[97,63.063]],[\"comment/160\",[]],[\"name/161\",[42,48.399]],[\"comment/161\",[]],[\"name/162\",[43,48.399]],[\"comment/162\",[]],[\"name/163\",[98,63.063]],[\"comment/163\",[]],[\"name/164\",[99,63.063]],[\"comment/164\",[]],[\"name/165\",[53,43.604]],[\"comment/165\",[]],[\"name/166\",[15,39.084]],[\"comment/166\",[]],[\"name/167\",[54,48.399]],[\"comment/167\",[]],[\"name/168\",[55,48.399]],[\"comment/168\",[]],[\"name/169\",[56,48.399]],[\"comment/169\",[]],[\"name/170\",[10,44.604]],[\"comment/170\",[]],[\"name/171\",[57,48.399]],[\"comment/171\",[]],[\"name/172\",[9,39.084]],[\"comment/172\",[]],[\"name/173\",[58,48.399]],[\"comment/173\",[]],[\"name/174\",[59,48.399]],[\"comment/174\",[]],[\"name/175\",[60,48.399]],[\"comment/175\",[]],[\"name/176\",[23,46.968]],[\"comment/176\",[]],[\"name/177\",[61,48.399]],[\"comment/177\",[]],[\"name/178\",[62,48.399]],[\"comment/178\",[]],[\"name/179\",[63,46.968]],[\"comment/179\",[]],[\"name/180\",[64,48.399]],[\"comment/180\",[]],[\"name/181\",[65,48.399]],[\"comment/181\",[]],[\"name/182\",[100,63.063]],[\"comment/182\",[]],[\"name/183\",[15,39.084]],[\"comment/183\",[]],[\"name/184\",[101,63.063]],[\"comment/184\",[]],[\"name/185\",[7,35.982]],[\"comment/185\",[]],[\"name/186\",[1,37.413]],[\"comment/186\",[]],[\"name/187\",[67,48.399]],[\"comment/187\",[]],[\"name/188\",[9,39.084]],[\"comment/188\",[]],[\"name/189\",[68,46.968]],[\"comment/189\",[]],[\"name/190\",[69,46.968]],[\"comment/190\",[]],[\"name/191\",[22,46.968]],[\"comment/191\",[]],[\"name/192\",[70,46.968]],[\"comment/192\",[]],[\"name/193\",[71,48.399]],[\"comment/193\",[]],[\"name/194\",[72,48.399]],[\"comment/194\",[]],[\"name/195\",[102,54.59]],[\"comment/195\",[]],[\"name/196\",[7,35.982]],[\"comment/196\",[]],[\"name/197\",[1,37.413]],[\"comment/197\",[]],[\"name/198\",[57,48.399]],[\"comment/198\",[]],[\"name/199\",[103,63.063]],[\"comment/199\",[]],[\"name/200\",[42,48.399]],[\"comment/200\",[]],[\"name/201\",[43,48.399]],[\"comment/201\",[]],[\"name/202\",[104,63.063]],[\"comment/202\",[]],[\"name/203\",[105,63.063]],[\"comment/203\",[]],[\"name/204\",[53,43.604]],[\"comment/204\",[]],[\"name/205\",[15,39.084]],[\"comment/205\",[]],[\"name/206\",[54,48.399]],[\"comment/206\",[]],[\"name/207\",[55,48.399]],[\"comment/207\",[]],[\"name/208\",[56,48.399]],[\"comment/208\",[]],[\"name/209\",[10,44.604]],[\"comment/209\",[]],[\"name/210\",[9,39.084]],[\"comment/210\",[]],[\"name/211\",[58,48.399]],[\"comment/211\",[]],[\"name/212\",[59,48.399]],[\"comment/212\",[]],[\"name/213\",[60,48.399]],[\"comment/213\",[]],[\"name/214\",[23,46.968]],[\"comment/214\",[]],[\"name/215\",[61,48.399]],[\"comment/215\",[]],[\"name/216\",[62,48.399]],[\"comment/216\",[]],[\"name/217\",[63,46.968]],[\"comment/217\",[]],[\"name/218\",[64,48.399]],[\"comment/218\",[]],[\"name/219\",[65,48.399]],[\"comment/219\",[]],[\"name/220\",[106,57.954]],[\"comment/220\",[]],[\"name/221\",[107,63.063]],[\"comment/221\",[]],[\"name/222\",[108,63.063]],[\"comment/222\",[]],[\"name/223\",[109,57.954]],[\"comment/223\",[]],[\"name/224\",[110,63.063]],[\"comment/224\",[]],[\"name/225\",[7,35.982]],[\"comment/225\",[]],[\"name/226\",[8,45.717]],[\"comment/226\",[]],[\"name/227\",[1,37.413]],[\"comment/227\",[]],[\"name/228\",[111,63.063]],[\"comment/228\",[]],[\"name/229\",[112,57.954]],[\"comment/229\",[]],[\"name/230\",[113,63.063]],[\"comment/230\",[]],[\"name/231\",[67,48.399]],[\"comment/231\",[]],[\"name/232\",[9,39.084]],[\"comment/232\",[]],[\"name/233\",[68,46.968]],[\"comment/233\",[]],[\"name/234\",[69,46.968]],[\"comment/234\",[]],[\"name/235\",[22,46.968]],[\"comment/235\",[]],[\"name/236\",[70,46.968]],[\"comment/236\",[]],[\"name/237\",[71,48.399]],[\"comment/237\",[]],[\"name/238\",[72,48.399]],[\"comment/238\",[]],[\"name/239\",[114,54.59]],[\"comment/239\",[]],[\"name/240\",[7,35.982]],[\"comment/240\",[]],[\"name/241\",[8,45.717]],[\"comment/241\",[]],[\"name/242\",[1,37.413]],[\"comment/242\",[]],[\"name/243\",[95,57.954]],[\"comment/243\",[]],[\"name/244\",[115,63.063]],[\"comment/244\",[]],[\"name/245\",[116,63.063]],[\"comment/245\",[]],[\"name/246\",[117,63.063]],[\"comment/246\",[]],[\"name/247\",[57,48.399]],[\"comment/247\",[]],[\"name/248\",[112,57.954]],[\"comment/248\",[]],[\"name/249\",[118,63.063]],[\"comment/249\",[]],[\"name/250\",[119,63.063]],[\"comment/250\",[]],[\"name/251\",[42,48.399]],[\"comment/251\",[]],[\"name/252\",[43,48.399]],[\"comment/252\",[]],[\"name/253\",[53,43.604]],[\"comment/253\",[]],[\"name/254\",[15,39.084]],[\"comment/254\",[]],[\"name/255\",[54,48.399]],[\"comment/255\",[]],[\"name/256\",[55,48.399]],[\"comment/256\",[]],[\"name/257\",[56,48.399]],[\"comment/257\",[]],[\"name/258\",[10,44.604]],[\"comment/258\",[]],[\"name/259\",[9,39.084]],[\"comment/259\",[]],[\"name/260\",[58,48.399]],[\"comment/260\",[]],[\"name/261\",[59,48.399]],[\"comment/261\",[]],[\"name/262\",[60,48.399]],[\"comment/262\",[]],[\"name/263\",[23,46.968]],[\"comment/263\",[]],[\"name/264\",[61,48.399]],[\"comment/264\",[]],[\"name/265\",[62,48.399]],[\"comment/265\",[]],[\"name/266\",[63,46.968]],[\"comment/266\",[]],[\"name/267\",[64,48.399]],[\"comment/267\",[]],[\"name/268\",[65,48.399]],[\"comment/268\",[]],[\"name/269\",[120,63.063]],[\"comment/269\",[]],[\"name/270\",[121,63.063]],[\"comment/270\",[]],[\"name/271\",[122,57.954]],[\"comment/271\",[]],[\"name/272\",[123,63.063]],[\"comment/272\",[]],[\"name/273\",[7,35.982]],[\"comment/273\",[]],[\"name/274\",[1,37.413]],[\"comment/274\",[]],[\"name/275\",[67,48.399]],[\"comment/275\",[]],[\"name/276\",[9,39.084]],[\"comment/276\",[]],[\"name/277\",[68,46.968]],[\"comment/277\",[]],[\"name/278\",[69,46.968]],[\"comment/278\",[]],[\"name/279\",[22,46.968]],[\"comment/279\",[]],[\"name/280\",[70,46.968]],[\"comment/280\",[]],[\"name/281\",[71,48.399]],[\"comment/281\",[]],[\"name/282\",[72,48.399]],[\"comment/282\",[]],[\"name/283\",[124,57.954]],[\"comment/283\",[]],[\"name/284\",[7,35.982]],[\"comment/284\",[]],[\"name/285\",[1,37.413]],[\"comment/285\",[]],[\"name/286\",[57,48.399]],[\"comment/286\",[]],[\"name/287\",[125,63.063]],[\"comment/287\",[]],[\"name/288\",[126,63.063]],[\"comment/288\",[]],[\"name/289\",[127,63.063]],[\"comment/289\",[]],[\"name/290\",[128,63.063]],[\"comment/290\",[]],[\"name/291\",[129,63.063]],[\"comment/291\",[]],[\"name/292\",[130,63.063]],[\"comment/292\",[]],[\"name/293\",[131,63.063]],[\"comment/293\",[]],[\"name/294\",[42,48.399]],[\"comment/294\",[]],[\"name/295\",[132,63.063]],[\"comment/295\",[]],[\"name/296\",[43,48.399]],[\"comment/296\",[]],[\"name/297\",[53,43.604]],[\"comment/297\",[]],[\"name/298\",[15,39.084]],[\"comment/298\",[]],[\"name/299\",[54,48.399]],[\"comment/299\",[]],[\"name/300\",[55,48.399]],[\"comment/300\",[]],[\"name/301\",[56,48.399]],[\"comment/301\",[]],[\"name/302\",[10,44.604]],[\"comment/302\",[]],[\"name/303\",[9,39.084]],[\"comment/303\",[]],[\"name/304\",[58,48.399]],[\"comment/304\",[]],[\"name/305\",[59,48.399]],[\"comment/305\",[]],[\"name/306\",[60,48.399]],[\"comment/306\",[]],[\"name/307\",[23,46.968]],[\"comment/307\",[]],[\"name/308\",[61,48.399]],[\"comment/308\",[]],[\"name/309\",[62,48.399]],[\"comment/309\",[]],[\"name/310\",[63,46.968]],[\"comment/310\",[]],[\"name/311\",[64,48.399]],[\"comment/311\",[]],[\"name/312\",[65,48.399]],[\"comment/312\",[]],[\"name/313\",[133,63.063]],[\"comment/313\",[]],[\"name/314\",[134,63.063]],[\"comment/314\",[]],[\"name/315\",[7,35.982]],[\"comment/315\",[]],[\"name/316\",[8,45.717]],[\"comment/316\",[]],[\"name/317\",[13,57.954]],[\"comment/317\",[]],[\"name/318\",[135,54.59]],[\"comment/318\",[]],[\"name/319\",[136,54.59]],[\"comment/319\",[]],[\"name/320\",[137,63.063]],[\"comment/320\",[]],[\"name/321\",[6,57.954]],[\"comment/321\",[]],[\"name/322\",[94,54.59]],[\"comment/322\",[]],[\"name/323\",[38,54.59]],[\"comment/323\",[]],[\"name/324\",[114,54.59]],[\"comment/324\",[]],[\"name/325\",[138,63.063]],[\"comment/325\",[]],[\"name/326\",[139,57.954]],[\"comment/326\",[]],[\"name/327\",[140,57.954]],[\"comment/327\",[]],[\"name/328\",[141,63.063]],[\"comment/328\",[]],[\"name/329\",[102,54.59]],[\"comment/329\",[]],[\"name/330\",[142,63.063]],[\"comment/330\",[]],[\"name/331\",[143,63.063]],[\"comment/331\",[]],[\"name/332\",[144,63.063]],[\"comment/332\",[]],[\"name/333\",[145,63.063]],[\"comment/333\",[]],[\"name/334\",[146,63.063]],[\"comment/334\",[]],[\"name/335\",[147,63.063]],[\"comment/335\",[]],[\"name/336\",[148,63.063]],[\"comment/336\",[]],[\"name/337\",[4,54.59]],[\"comment/337\",[]],[\"name/338\",[15,39.084]],[\"comment/338\",[]],[\"name/339\",[3,50.07]],[\"comment/339\",[]],[\"name/340\",[149,54.59]],[\"comment/340\",[]],[\"name/341\",[150,57.954]],[\"comment/341\",[]],[\"name/342\",[74,41.86]],[\"comment/342\",[]],[\"name/343\",[1,37.413]],[\"comment/343\",[]],[\"name/344\",[2,54.59]],[\"comment/344\",[]],[\"name/345\",[5,52.077]],[\"comment/345\",[]],[\"name/346\",[151,63.063]],[\"comment/346\",[]],[\"name/347\",[81,50.07]],[\"comment/347\",[]],[\"name/348\",[83,54.59]],[\"comment/348\",[]],[\"name/349\",[152,63.063]],[\"comment/349\",[]],[\"name/350\",[153,63.063]],[\"comment/350\",[]],[\"name/351\",[11,54.59]],[\"comment/351\",[]],[\"name/352\",[53,43.604]],[\"comment/352\",[]],[\"name/353\",[74,41.86]],[\"comment/353\",[]],[\"name/354\",[1,37.413]],[\"comment/354\",[]],[\"name/355\",[87,57.954]],[\"comment/355\",[]],[\"name/356\",[154,63.063]],[\"comment/356\",[]],[\"name/357\",[155,63.063]],[\"comment/357\",[]],[\"name/358\",[4,54.59]],[\"comment/358\",[]],[\"name/359\",[15,39.084]],[\"comment/359\",[]],[\"name/360\",[3,50.07]],[\"comment/360\",[]],[\"name/361\",[149,54.59]],[\"comment/361\",[]],[\"name/362\",[150,57.954]],[\"comment/362\",[]],[\"name/363\",[74,41.86]],[\"comment/363\",[]],[\"name/364\",[1,37.413]],[\"comment/364\",[]],[\"name/365\",[2,54.59]],[\"comment/365\",[]],[\"name/366\",[5,52.077]],[\"comment/366\",[]],[\"name/367\",[156,63.063]],[\"comment/367\",[]],[\"name/368\",[157,57.954]],[\"comment/368\",[]],[\"name/369\",[158,63.063]],[\"comment/369\",[]],[\"name/370\",[10,44.604]],[\"comment/370\",[]],[\"name/371\",[15,39.084]],[\"comment/371\",[]],[\"name/372\",[3,50.07]],[\"comment/372\",[]],[\"name/373\",[1,37.413]],[\"comment/373\",[]],[\"name/374\",[15,39.084]],[\"comment/374\",[]],[\"name/375\",[75,52.077]],[\"comment/375\",[]],[\"name/376\",[159,63.063]],[\"comment/376\",[]],[\"name/377\",[74,41.86]],[\"comment/377\",[]],[\"name/378\",[160,57.954]],[\"comment/378\",[]],[\"name/379\",[161,57.954]],[\"comment/379\",[]],[\"name/380\",[162,63.063]],[\"comment/380\",[]],[\"name/381\",[163,63.063]],[\"comment/381\",[]],[\"name/382\",[74,41.86]],[\"comment/382\",[]],[\"name/383\",[160,57.954]],[\"comment/383\",[]],[\"name/384\",[53,43.604]],[\"comment/384\",[]],[\"name/385\",[164,63.063]],[\"comment/385\",[]],[\"name/386\",[74,41.86]],[\"comment/386\",[]],[\"name/387\",[165,57.954]],[\"comment/387\",[]],[\"name/388\",[166,63.063]],[\"comment/388\",[]],[\"name/389\",[40,54.59]],[\"comment/389\",[]],[\"name/390\",[161,57.954]],[\"comment/390\",[]],[\"name/391\",[167,63.063]],[\"comment/391\",[]],[\"name/392\",[168,63.063]],[\"comment/392\",[]],[\"name/393\",[169,63.063]],[\"comment/393\",[]],[\"name/394\",[94,54.59]],[\"comment/394\",[]],[\"name/395\",[38,54.59]],[\"comment/395\",[]],[\"name/396\",[114,54.59]],[\"comment/396\",[]],[\"name/397\",[124,57.954]],[\"comment/397\",[]],[\"name/398\",[102,54.59]],[\"comment/398\",[]],[\"name/399\",[170,63.063]],[\"comment/399\",[]],[\"name/400\",[171,63.063]],[\"comment/400\",[]],[\"name/401\",[172,63.063]],[\"comment/401\",[]],[\"name/402\",[173,63.063]],[\"comment/402\",[]],[\"name/403\",[135,54.59]],[\"comment/403\",[]],[\"name/404\",[174,63.063]],[\"comment/404\",[]],[\"name/405\",[175,63.063]],[\"comment/405\",[]],[\"name/406\",[176,63.063]],[\"comment/406\",[]],[\"name/407\",[177,63.063]],[\"comment/407\",[]],[\"name/408\",[178,63.063]],[\"comment/408\",[]],[\"name/409\",[179,63.063]],[\"comment/409\",[]],[\"name/410\",[180,63.063]],[\"comment/410\",[]],[\"name/411\",[181,63.063]],[\"comment/411\",[]],[\"name/412\",[149,54.59]],[\"comment/412\",[]],[\"name/413\",[182,63.063]],[\"comment/413\",[]],[\"name/414\",[183,63.063]],[\"comment/414\",[]],[\"name/415\",[184,63.063]],[\"comment/415\",[]],[\"name/416\",[185,63.063]],[\"comment/416\",[]],[\"name/417\",[122,57.954]],[\"comment/417\",[]],[\"name/418\",[186,63.063]],[\"comment/418\",[]],[\"name/419\",[187,63.063]],[\"comment/419\",[]],[\"name/420\",[74,41.86]],[\"comment/420\",[]],[\"name/421\",[81,50.07]],[\"comment/421\",[]],[\"name/422\",[74,41.86]],[\"comment/422\",[]],[\"name/423\",[188,63.063]],[\"comment/423\",[]],[\"name/424\",[189,63.063]],[\"comment/424\",[]],[\"name/425\",[190,63.063]],[\"comment/425\",[]],[\"name/426\",[191,63.063]],[\"comment/426\",[]],[\"name/427\",[192,63.063]],[\"comment/427\",[]],[\"name/428\",[193,63.063]],[\"comment/428\",[]],[\"name/429\",[194,63.063]],[\"comment/429\",[]],[\"name/430\",[195,63.063]],[\"comment/430\",[]],[\"name/431\",[196,63.063]],[\"comment/431\",[]],[\"name/432\",[197,63.063]],[\"comment/432\",[]],[\"name/433\",[198,63.063]],[\"comment/433\",[]],[\"name/434\",[199,63.063]],[\"comment/434\",[]],[\"name/435\",[200,63.063]],[\"comment/435\",[]],[\"name/436\",[201,63.063]],[\"comment/436\",[]],[\"name/437\",[202,63.063]],[\"comment/437\",[]],[\"name/438\",[203,63.063]],[\"comment/438\",[]],[\"name/439\",[204,63.063]],[\"comment/439\",[]],[\"name/440\",[205,63.063]],[\"comment/440\",[]],[\"name/441\",[206,63.063]],[\"comment/441\",[]],[\"name/442\",[207,63.063]],[\"comment/442\",[]],[\"name/443\",[208,63.063]],[\"comment/443\",[]],[\"name/444\",[209,63.063]],[\"comment/444\",[]],[\"name/445\",[210,63.063]],[\"comment/445\",[]],[\"name/446\",[211,63.063]],[\"comment/446\",[]],[\"name/447\",[212,63.063]],[\"comment/447\",[]],[\"name/448\",[213,63.063]],[\"comment/448\",[]],[\"name/449\",[214,63.063]],[\"comment/449\",[]],[\"name/450\",[215,63.063]],[\"comment/450\",[]],[\"name/451\",[216,63.063]],[\"comment/451\",[]],[\"name/452\",[217,63.063]],[\"comment/452\",[]],[\"name/453\",[218,63.063]],[\"comment/453\",[]],[\"name/454\",[219,63.063]],[\"comment/454\",[]],[\"name/455\",[220,63.063]],[\"comment/455\",[]],[\"name/456\",[221,63.063]],[\"comment/456\",[]],[\"name/457\",[222,63.063]],[\"comment/457\",[]],[\"name/458\",[223,63.063]],[\"comment/458\",[]],[\"name/459\",[224,63.063]],[\"comment/459\",[]],[\"name/460\",[225,63.063]],[\"comment/460\",[]],[\"name/461\",[226,63.063]],[\"comment/461\",[]],[\"name/462\",[227,63.063]],[\"comment/462\",[]],[\"name/463\",[228,63.063]],[\"comment/463\",[]],[\"name/464\",[229,63.063]],[\"comment/464\",[]],[\"name/465\",[230,63.063]],[\"comment/465\",[]],[\"name/466\",[231,63.063]],[\"comment/466\",[]],[\"name/467\",[232,63.063]],[\"comment/467\",[]],[\"name/468\",[233,63.063]],[\"comment/468\",[]],[\"name/469\",[234,63.063]],[\"comment/469\",[]],[\"name/470\",[235,63.063]],[\"comment/470\",[]],[\"name/471\",[236,63.063]],[\"comment/471\",[]],[\"name/472\",[237,63.063]],[\"comment/472\",[]],[\"name/473\",[238,63.063]],[\"comment/473\",[]],[\"name/474\",[239,63.063]],[\"comment/474\",[]],[\"name/475\",[240,63.063]],[\"comment/475\",[]],[\"name/476\",[241,63.063]],[\"comment/476\",[]],[\"name/477\",[242,63.063]],[\"comment/477\",[]],[\"name/478\",[243,63.063]],[\"comment/478\",[]],[\"name/479\",[244,63.063]],[\"comment/479\",[]],[\"name/480\",[245,63.063]],[\"comment/480\",[]],[\"name/481\",[246,63.063]],[\"comment/481\",[]],[\"name/482\",[247,63.063]],[\"comment/482\",[]],[\"name/483\",[248,63.063]],[\"comment/483\",[]],[\"name/484\",[249,63.063]],[\"comment/484\",[]],[\"name/485\",[250,63.063]],[\"comment/485\",[]],[\"name/486\",[251,63.063]],[\"comment/486\",[]],[\"name/487\",[252,63.063]],[\"comment/487\",[]],[\"name/488\",[253,63.063]],[\"comment/488\",[]],[\"name/489\",[254,63.063]],[\"comment/489\",[]],[\"name/490\",[255,63.063]],[\"comment/490\",[]],[\"name/491\",[256,63.063]],[\"comment/491\",[]],[\"name/492\",[257,63.063]],[\"comment/492\",[]],[\"name/493\",[258,63.063]],[\"comment/493\",[]],[\"name/494\",[259,63.063]],[\"comment/494\",[]],[\"name/495\",[260,63.063]],[\"comment/495\",[]],[\"name/496\",[261,63.063]],[\"comment/496\",[]],[\"name/497\",[262,63.063]],[\"comment/497\",[]],[\"name/498\",[263,63.063]],[\"comment/498\",[]],[\"name/499\",[264,63.063]],[\"comment/499\",[]],[\"name/500\",[265,63.063]],[\"comment/500\",[]],[\"name/501\",[266,63.063]],[\"comment/501\",[]],[\"name/502\",[267,63.063]],[\"comment/502\",[]],[\"name/503\",[268,63.063]],[\"comment/503\",[]],[\"name/504\",[269,63.063]],[\"comment/504\",[]],[\"name/505\",[270,63.063]],[\"comment/505\",[]],[\"name/506\",[271,63.063]],[\"comment/506\",[]],[\"name/507\",[272,63.063]],[\"comment/507\",[]],[\"name/508\",[273,63.063]],[\"comment/508\",[]],[\"name/509\",[274,63.063]],[\"comment/509\",[]],[\"name/510\",[275,63.063]],[\"comment/510\",[]],[\"name/511\",[276,63.063]],[\"comment/511\",[]],[\"name/512\",[277,63.063]],[\"comment/512\",[]],[\"name/513\",[278,63.063]],[\"comment/513\",[]],[\"name/514\",[279,63.063]],[\"comment/514\",[]],[\"name/515\",[280,63.063]],[\"comment/515\",[]],[\"name/516\",[281,63.063]],[\"comment/516\",[]],[\"name/517\",[282,63.063]],[\"comment/517\",[]],[\"name/518\",[283,63.063]],[\"comment/518\",[]],[\"name/519\",[284,63.063]],[\"comment/519\",[]],[\"name/520\",[285,63.063]],[\"comment/520\",[]],[\"name/521\",[286,63.063]],[\"comment/521\",[]],[\"name/522\",[287,63.063]],[\"comment/522\",[]],[\"name/523\",[288,63.063]],[\"comment/523\",[]],[\"name/524\",[289,63.063]],[\"comment/524\",[]],[\"name/525\",[290,63.063]],[\"comment/525\",[]],[\"name/526\",[291,63.063]],[\"comment/526\",[]],[\"name/527\",[292,63.063]],[\"comment/527\",[]],[\"name/528\",[293,63.063]],[\"comment/528\",[]],[\"name/529\",[294,63.063]],[\"comment/529\",[]],[\"name/530\",[295,63.063]],[\"comment/530\",[]],[\"name/531\",[296,63.063]],[\"comment/531\",[]],[\"name/532\",[297,63.063]],[\"comment/532\",[]],[\"name/533\",[298,63.063]],[\"comment/533\",[]],[\"name/534\",[299,63.063]],[\"comment/534\",[]],[\"name/535\",[300,63.063]],[\"comment/535\",[]],[\"name/536\",[301,63.063]],[\"comment/536\",[]],[\"name/537\",[302,63.063]],[\"comment/537\",[]],[\"name/538\",[303,63.063]],[\"comment/538\",[]],[\"name/539\",[304,63.063]],[\"comment/539\",[]],[\"name/540\",[305,63.063]],[\"comment/540\",[]],[\"name/541\",[306,63.063]],[\"comment/541\",[]],[\"name/542\",[307,63.063]],[\"comment/542\",[]],[\"name/543\",[308,63.063]],[\"comment/543\",[]],[\"name/544\",[309,63.063]],[\"comment/544\",[]],[\"name/545\",[310,63.063]],[\"comment/545\",[]],[\"name/546\",[311,63.063]],[\"comment/546\",[]],[\"name/547\",[312,63.063]],[\"comment/547\",[]],[\"name/548\",[313,63.063]],[\"comment/548\",[]],[\"name/549\",[314,63.063]],[\"comment/549\",[]],[\"name/550\",[315,63.063]],[\"comment/550\",[]],[\"name/551\",[316,63.063]],[\"comment/551\",[]],[\"name/552\",[317,63.063]],[\"comment/552\",[]],[\"name/553\",[318,63.063]],[\"comment/553\",[]],[\"name/554\",[319,63.063]],[\"comment/554\",[]],[\"name/555\",[320,63.063]],[\"comment/555\",[]],[\"name/556\",[321,63.063]],[\"comment/556\",[]],[\"name/557\",[322,63.063]],[\"comment/557\",[]],[\"name/558\",[323,63.063]],[\"comment/558\",[]],[\"name/559\",[324,63.063]],[\"comment/559\",[]],[\"name/560\",[325,63.063]],[\"comment/560\",[]],[\"name/561\",[326,63.063]],[\"comment/561\",[]],[\"name/562\",[327,63.063]],[\"comment/562\",[]],[\"name/563\",[328,63.063]],[\"comment/563\",[]],[\"name/564\",[329,63.063]],[\"comment/564\",[]],[\"name/565\",[330,63.063]],[\"comment/565\",[]],[\"name/566\",[331,63.063]],[\"comment/566\",[]],[\"name/567\",[332,63.063]],[\"comment/567\",[]],[\"name/568\",[333,63.063]],[\"comment/568\",[]],[\"name/569\",[334,63.063]],[\"comment/569\",[]],[\"name/570\",[335,63.063]],[\"comment/570\",[]],[\"name/571\",[336,63.063]],[\"comment/571\",[]],[\"name/572\",[337,63.063]],[\"comment/572\",[]],[\"name/573\",[338,63.063]],[\"comment/573\",[]],[\"name/574\",[339,63.063]],[\"comment/574\",[]],[\"name/575\",[340,63.063]],[\"comment/575\",[]],[\"name/576\",[341,63.063]],[\"comment/576\",[]],[\"name/577\",[342,63.063]],[\"comment/577\",[]],[\"name/578\",[343,63.063]],[\"comment/578\",[]],[\"name/579\",[344,63.063]],[\"comment/579\",[]],[\"name/580\",[345,63.063]],[\"comment/580\",[]],[\"name/581\",[346,63.063]],[\"comment/581\",[]],[\"name/582\",[347,63.063]],[\"comment/582\",[]],[\"name/583\",[348,63.063]],[\"comment/583\",[]],[\"name/584\",[349,63.063]],[\"comment/584\",[]],[\"name/585\",[350,63.063]],[\"comment/585\",[]],[\"name/586\",[351,63.063]],[\"comment/586\",[]],[\"name/587\",[352,63.063]],[\"comment/587\",[]],[\"name/588\",[353,63.063]],[\"comment/588\",[]],[\"name/589\",[354,63.063]],[\"comment/589\",[]],[\"name/590\",[355,63.063]],[\"comment/590\",[]],[\"name/591\",[356,63.063]],[\"comment/591\",[]],[\"name/592\",[357,63.063]],[\"comment/592\",[]],[\"name/593\",[358,63.063]],[\"comment/593\",[]],[\"name/594\",[359,63.063]],[\"comment/594\",[]],[\"name/595\",[360,63.063]],[\"comment/595\",[]],[\"name/596\",[361,63.063]],[\"comment/596\",[]],[\"name/597\",[362,63.063]],[\"comment/597\",[]],[\"name/598\",[363,63.063]],[\"comment/598\",[]],[\"name/599\",[364,63.063]],[\"comment/599\",[]],[\"name/600\",[365,63.063]],[\"comment/600\",[]],[\"name/601\",[366,63.063]],[\"comment/601\",[]],[\"name/602\",[367,63.063]],[\"comment/602\",[]],[\"name/603\",[368,63.063]],[\"comment/603\",[]],[\"name/604\",[369,63.063]],[\"comment/604\",[]],[\"name/605\",[370,63.063]],[\"comment/605\",[]],[\"name/606\",[83,54.59]],[\"comment/606\",[]],[\"name/607\",[74,41.86]],[\"comment/607\",[]],[\"name/608\",[371,63.063]],[\"comment/608\",[]],[\"name/609\",[372,63.063]],[\"comment/609\",[]],[\"name/610\",[373,63.063]],[\"comment/610\",[]],[\"name/611\",[374,63.063]],[\"comment/611\",[]],[\"name/612\",[375,63.063]],[\"comment/612\",[]],[\"name/613\",[376,63.063]],[\"comment/613\",[]],[\"name/614\",[377,63.063]],[\"comment/614\",[]],[\"name/615\",[378,63.063]],[\"comment/615\",[]],[\"name/616\",[379,63.063]],[\"comment/616\",[]],[\"name/617\",[380,63.063]],[\"comment/617\",[]],[\"name/618\",[381,63.063]],[\"comment/618\",[]],[\"name/619\",[11,54.59]],[\"comment/619\",[]],[\"name/620\",[382,54.59]],[\"comment/620\",[]],[\"name/621\",[383,57.954]],[\"comment/621\",[]],[\"name/622\",[109,57.954]],[\"comment/622\",[]],[\"name/623\",[15,39.084]],[\"comment/623\",[]],[\"name/624\",[384,57.954]],[\"comment/624\",[]],[\"name/625\",[385,57.954]],[\"comment/625\",[]],[\"name/626\",[386,57.954]],[\"comment/626\",[]],[\"name/627\",[387,57.954]],[\"comment/627\",[]],[\"name/628\",[388,57.954]],[\"comment/628\",[]],[\"name/629\",[389,63.063]],[\"comment/629\",[]],[\"name/630\",[390,63.063]],[\"comment/630\",[]],[\"name/631\",[391,57.954]],[\"comment/631\",[]],[\"name/632\",[81,50.07]],[\"comment/632\",[]],[\"name/633\",[392,57.954]],[\"comment/633\",[]],[\"name/634\",[5,52.077]],[\"comment/634\",[]],[\"name/635\",[393,57.954]],[\"comment/635\",[]],[\"name/636\",[394,54.59]],[\"comment/636\",[]],[\"name/637\",[395,57.954]],[\"comment/637\",[]],[\"name/638\",[3,50.07]],[\"comment/638\",[]],[\"name/639\",[396,63.063]],[\"comment/639\",[]],[\"name/640\",[397,63.063]],[\"comment/640\",[]],[\"name/641\",[398,63.063]],[\"comment/641\",[]],[\"name/642\",[399,63.063]],[\"comment/642\",[]],[\"name/643\",[388,57.954]],[\"comment/643\",[]],[\"name/644\",[382,54.59]],[\"comment/644\",[]],[\"name/645\",[383,57.954]],[\"comment/645\",[]],[\"name/646\",[384,57.954]],[\"comment/646\",[]],[\"name/647\",[385,57.954]],[\"comment/647\",[]],[\"name/648\",[386,57.954]],[\"comment/648\",[]],[\"name/649\",[387,57.954]],[\"comment/649\",[]],[\"name/650\",[391,57.954]],[\"comment/650\",[]],[\"name/651\",[81,50.07]],[\"comment/651\",[]],[\"name/652\",[392,57.954]],[\"comment/652\",[]],[\"name/653\",[393,57.954]],[\"comment/653\",[]],[\"name/654\",[394,54.59]],[\"comment/654\",[]],[\"name/655\",[395,57.954]],[\"comment/655\",[]],[\"name/656\",[400,63.063]],[\"comment/656\",[]],[\"name/657\",[74,41.86]],[\"comment/657\",[]],[\"name/658\",[401,63.063]],[\"comment/658\",[]],[\"name/659\",[157,57.954]],[\"comment/659\",[]],[\"name/660\",[402,63.063]],[\"comment/660\",[]],[\"name/661\",[403,63.063]],[\"comment/661\",[]],[\"name/662\",[404,63.063]],[\"comment/662\",[]],[\"name/663\",[405,63.063]],[\"comment/663\",[]],[\"name/664\",[165,57.954]],[\"comment/664\",[]],[\"name/665\",[406,63.063]],[\"comment/665\",[]],[\"name/666\",[407,63.063]],[\"comment/666\",[]],[\"name/667\",[408,63.063]],[\"comment/667\",[]],[\"name/668\",[409,63.063]],[\"comment/668\",[]],[\"name/669\",[410,63.063]],[\"comment/669\",[]],[\"name/670\",[394,54.59]],[\"comment/670\",[]],[\"name/671\",[382,54.59]],[\"comment/671\",[]],[\"name/672\",[411,63.063]],[\"comment/672\",[]],[\"name/673\",[412,63.063]],[\"comment/673\",[]],[\"name/674\",[413,63.063]],[\"comment/674\",[]],[\"name/675\",[414,63.063]],[\"comment/675\",[]],[\"name/676\",[415,63.063]],[\"comment/676\",[]],[\"name/677\",[416,63.063]],[\"comment/677\",[]],[\"name/678\",[417,63.063]],[\"comment/678\",[]],[\"name/679\",[418,63.063]],[\"comment/679\",[]],[\"name/680\",[419,63.063]],[\"comment/680\",[]],[\"name/681\",[420,63.063]],[\"comment/681\",[]],[\"name/682\",[421,63.063]],[\"comment/682\",[]],[\"name/683\",[422,63.063]],[\"comment/683\",[]],[\"name/684\",[423,63.063]],[\"comment/684\",[]],[\"name/685\",[424,63.063]],[\"comment/685\",[]],[\"name/686\",[425,63.063]],[\"comment/686\",[]],[\"name/687\",[41,54.59]],[\"comment/687\",[]],[\"name/688\",[426,63.063]],[\"comment/688\",[]],[\"name/689\",[427,63.063]],[\"comment/689\",[]],[\"name/690\",[428,63.063]],[\"comment/690\",[]],[\"name/691\",[429,63.063]],[\"comment/691\",[]],[\"name/692\",[430,63.063]],[\"comment/692\",[]],[\"name/693\",[431,63.063]],[\"comment/693\",[]],[\"name/694\",[432,63.063]],[\"comment/694\",[]],[\"name/695\",[433,63.063]],[\"comment/695\",[]],[\"name/696\",[434,63.063]],[\"comment/696\",[]],[\"name/697\",[435,63.063]],[\"comment/697\",[]],[\"name/698\",[436,63.063]],[\"comment/698\",[]],[\"name/699\",[437,63.063]],[\"comment/699\",[]],[\"name/700\",[106,57.954]],[\"comment/700\",[]],[\"name/701\",[438,63.063]],[\"comment/701\",[]],[\"name/702\",[439,63.063]],[\"comment/702\",[]],[\"name/703\",[440,63.063]],[\"comment/703\",[]],[\"name/704\",[441,63.063]],[\"comment/704\",[]],[\"name/705\",[442,63.063]],[\"comment/705\",[]],[\"name/706\",[443,63.063]],[\"comment/706\",[]],[\"name/707\",[444,63.063]],[\"comment/707\",[]],[\"name/708\",[7,35.982]],[\"comment/708\",[]],[\"name/709\",[445,54.59]],[\"comment/709\",[]],[\"name/710\",[446,54.59]],[\"comment/710\",[]],[\"name/711\",[447,54.59]],[\"comment/711\",[]],[\"name/712\",[34,52.077]],[\"comment/712\",[]],[\"name/713\",[448,54.59]],[\"comment/713\",[]],[\"name/714\",[449,54.59]],[\"comment/714\",[]],[\"name/715\",[450,54.59]],[\"comment/715\",[]],[\"name/716\",[451,54.59]],[\"comment/716\",[]],[\"name/717\",[452,54.59]],[\"comment/717\",[]],[\"name/718\",[453,54.59]],[\"comment/718\",[]],[\"name/719\",[454,63.063]],[\"comment/719\",[]],[\"name/720\",[455,63.063]],[\"comment/720\",[]],[\"name/721\",[7,35.982]],[\"comment/721\",[]],[\"name/722\",[456,63.063]],[\"comment/722\",[]],[\"name/723\",[457,63.063]],[\"comment/723\",[]],[\"name/724\",[458,63.063]],[\"comment/724\",[]],[\"name/725\",[459,63.063]],[\"comment/725\",[]],[\"name/726\",[460,63.063]],[\"comment/726\",[]],[\"name/727\",[461,63.063]],[\"comment/727\",[]],[\"name/728\",[462,63.063]],[\"comment/728\",[]],[\"name/729\",[463,63.063]],[\"comment/729\",[]],[\"name/730\",[464,63.063]],[\"comment/730\",[]],[\"name/731\",[465,63.063]],[\"comment/731\",[]],[\"name/732\",[466,63.063]],[\"comment/732\",[]],[\"name/733\",[467,63.063]],[\"comment/733\",[]],[\"name/734\",[468,63.063]],[\"comment/734\",[]],[\"name/735\",[469,63.063]],[\"comment/735\",[]],[\"name/736\",[445,54.59]],[\"comment/736\",[]],[\"name/737\",[446,54.59]],[\"comment/737\",[]],[\"name/738\",[447,54.59]],[\"comment/738\",[]],[\"name/739\",[34,52.077]],[\"comment/739\",[]],[\"name/740\",[448,54.59]],[\"comment/740\",[]],[\"name/741\",[449,54.59]],[\"comment/741\",[]],[\"name/742\",[450,54.59]],[\"comment/742\",[]],[\"name/743\",[451,54.59]],[\"comment/743\",[]],[\"name/744\",[452,54.59]],[\"comment/744\",[]],[\"name/745\",[453,54.59]],[\"comment/745\",[]],[\"name/746\",[470,63.063]],[\"comment/746\",[]],[\"name/747\",[7,35.982]],[\"comment/747\",[]],[\"name/748\",[471,63.063]],[\"comment/748\",[]],[\"name/749\",[472,63.063]],[\"comment/749\",[]],[\"name/750\",[34,52.077]],[\"comment/750\",[]],[\"name/751\",[473,63.063]],[\"comment/751\",[]],[\"name/752\",[474,63.063]],[\"comment/752\",[]],[\"name/753\",[63,46.968]],[\"comment/753\",[]],[\"name/754\",[475,63.063]],[\"comment/754\",[]],[\"name/755\",[476,63.063]],[\"comment/755\",[]],[\"name/756\",[477,63.063]],[\"comment/756\",[]],[\"name/757\",[478,63.063]],[\"comment/757\",[]],[\"name/758\",[479,63.063]],[\"comment/758\",[]],[\"name/759\",[480,63.063]],[\"comment/759\",[]],[\"name/760\",[481,63.063]],[\"comment/760\",[]],[\"name/761\",[445,54.59]],[\"comment/761\",[]],[\"name/762\",[446,54.59]],[\"comment/762\",[]],[\"name/763\",[447,54.59]],[\"comment/763\",[]],[\"name/764\",[448,54.59]],[\"comment/764\",[]],[\"name/765\",[449,54.59]],[\"comment/765\",[]],[\"name/766\",[450,54.59]],[\"comment/766\",[]],[\"name/767\",[451,54.59]],[\"comment/767\",[]],[\"name/768\",[452,54.59]],[\"comment/768\",[]],[\"name/769\",[453,54.59]],[\"comment/769\",[]],[\"name/770\",[482,63.063]],[\"comment/770\",[]],[\"name/771\",[15,39.084]],[\"comment/771\",[]],[\"name/772\",[7,35.982]],[\"comment/772\",[]],[\"name/773\",[483,63.063]],[\"comment/773\",[]],[\"name/774\",[484,63.063]],[\"comment/774\",[]],[\"name/775\",[88,57.954]],[\"comment/775\",[]],[\"name/776\",[485,63.063]],[\"comment/776\",[]],[\"name/777\",[136,54.59]],[\"comment/777\",[]],[\"name/778\",[8,45.717]],[\"comment/778\",[]],[\"name/779\",[136,54.59]],[\"comment/779\",[]],[\"name/780\",[70,46.968]],[\"comment/780\",[]],[\"name/781\",[69,46.968]],[\"comment/781\",[]],[\"name/782\",[53,43.604]],[\"comment/782\",[]],[\"name/783\",[68,46.968]],[\"comment/783\",[]],[\"name/784\",[486,63.063]],[\"comment/784\",[]],[\"name/785\",[487,63.063]],[\"comment/785\",[]],[\"name/786\",[488,57.954]],[\"comment/786\",[]],[\"name/787\",[489,57.954]],[\"comment/787\",[]],[\"name/788\",[53,43.604]],[\"comment/788\",[]],[\"name/789\",[7,35.982]],[\"comment/789\",[]],[\"name/790\",[9,39.084]],[\"comment/790\",[]],[\"name/791\",[15,39.084]],[\"comment/791\",[]],[\"name/792\",[490,63.063]],[\"comment/792\",[]],[\"name/793\",[135,54.59]],[\"comment/793\",[]],[\"name/794\",[488,57.954]],[\"comment/794\",[]],[\"name/795\",[489,57.954]],[\"comment/795\",[]],[\"name/796\",[139,57.954]],[\"comment/796\",[]],[\"name/797\",[7,35.982]],[\"comment/797\",[]],[\"name/798\",[8,45.717]],[\"comment/798\",[]],[\"name/799\",[9,39.084]],[\"comment/799\",[]],[\"name/800\",[491,63.063]],[\"comment/800\",[]],[\"name/801\",[492,63.063]],[\"comment/801\",[]],[\"name/802\",[7,35.982]],[\"comment/802\",[]],[\"name/803\",[493,63.063]],[\"comment/803\",[]],[\"name/804\",[494,63.063]],[\"comment/804\",[]],[\"name/805\",[495,63.063]],[\"comment/805\",[]],[\"name/806\",[496,63.063]],[\"comment/806\",[]],[\"name/807\",[497,63.063]],[\"comment/807\",[]],[\"name/808\",[498,63.063]],[\"comment/808\",[]],[\"name/809\",[140,57.954]],[\"comment/809\",[]],[\"name/810\",[7,35.982]],[\"comment/810\",[]],[\"name/811\",[8,45.717]],[\"comment/811\",[]],[\"name/812\",[499,63.063]],[\"comment/812\",[]],[\"name/813\",[9,39.084]],[\"comment/813\",[]],[\"name/814\",[500,63.063]],[\"comment/814\",[]],[\"name/815\",[501,63.063]],[\"comment/815\",[]],[\"name/816\",[502,63.063]],[\"comment/816\",[]],[\"name/817\",[46,57.954]],[\"comment/817\",[]],[\"name/818\",[503,63.063]],[\"comment/818\",[]],[\"name/819\",[504,63.063]],[\"comment/819\",[]],[\"name/820\",[505,63.063]],[\"comment/820\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":74,\"name\":{\"87\":{},\"137\":{},\"342\":{},\"353\":{},\"363\":{},\"377\":{},\"382\":{},\"386\":{},\"420\":{},\"422\":{},\"607\":{},\"657\":{}},\"comment\":{}}],[\"_currentbeatdata\",{\"_index\":117,\"name\":{\"246\":{}},\"comment\":{}}],[\"_devices\",{\"_index\":77,\"name\":{\"96\":{}},\"comment\":{}}],[\"_handler\",{\"_index\":58,\"name\":{\"66\":{},\"115\":{},\"173\":{},\"211\":{},\"260\":{},\"304\":{}},\"comment\":{}}],[\"_sources\",{\"_index\":499,\"name\":{\"812\":{}},\"comment\":{}}],[\"_userbeatcallback\",{\"_index\":115,\"name\":{\"244\":{}},\"comment\":{}}],[\"_userbeatoptions\",{\"_index\":116,\"name\":{\"245\":{}},\"comment\":{}}],[\"actingas\",{\"_index\":172,\"name\":{\"401\":{}},\"comment\":{}}],[\"actingasdevice\",{\"_index\":400,\"name\":{\"656\":{}},\"comment\":{}}],[\"action\",{\"_index\":149,\"name\":{\"340\":{},\"361\":{},\"412\":{}},\"comment\":{}}],[\"activeonloadloops\",{\"_index\":443,\"name\":{\"706\":{}},\"comment\":{}}],[\"adddevice\",{\"_index\":70,\"name\":{\"83\":{},\"100\":{},\"152\":{},\"192\":{},\"236\":{},\"280\":{},\"780\":{}},\"comment\":{}}],[\"address\",{\"_index\":11,\"name\":{\"11\":{},\"351\":{},\"619\":{}},\"comment\":{}}],[\"addressport\",{\"_index\":155,\"name\":{\"357\":{}},\"comment\":{}}],[\"addserver\",{\"_index\":143,\"name\":{\"331\":{}},\"comment\":{}}],[\"addservice\",{\"_index\":488,\"name\":{\"786\":{},\"794\":{}},\"comment\":{}}],[\"album\",{\"_index\":411,\"name\":{\"672\":{}},\"comment\":{}}],[\"albumart\",{\"_index\":419,\"name\":{\"680\":{}},\"comment\":{}}],[\"albumartid\",{\"_index\":409,\"name\":{\"668\":{}},\"comment\":{}}],[\"announce\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"announcement_interval\",{\"_index\":175,\"name\":{\"405\":{}},\"comment\":{}}],[\"announcetimer\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"array\",{\"_index\":485,\"name\":{\"776\":{}},\"comment\":{}}],[\"artist\",{\"_index\":382,\"name\":{\"620\":{},\"644\":{},\"671\":{}},\"comment\":{}}],[\"autogrow\",{\"_index\":471,\"name\":{\"748\":{}},\"comment\":{}}],[\"avgtimearray\",{\"_index\":127,\"name\":{\"289\":{}},\"comment\":{}}],[\"beatdata\",{\"_index\":106,\"name\":{\"220\":{},\"700\":{}},\"comment\":{}}],[\"beatinfo\",{\"_index\":114,\"name\":{\"239\":{},\"324\":{},\"396\":{}},\"comment\":{}}],[\"beatinfohandler\",{\"_index\":110,\"name\":{\"224\":{}},\"comment\":{}}],[\"beatregister\",{\"_index\":111,\"name\":{\"228\":{}},\"comment\":{}}],[\"bitrate\",{\"_index\":407,\"name\":{\"666\":{}},\"comment\":{}}],[\"bpm\",{\"_index\":404,\"name\":{\"662\":{}},\"comment\":{}}],[\"bpmanalyzed\",{\"_index\":408,\"name\":{\"667\":{}},\"comment\":{}}],[\"broadcastaddress\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"broadcastmessage\",{\"_index\":26,\"name\":{\"26\":{}},\"comment\":{}}],[\"buffer\",{\"_index\":445,\"name\":{\"709\":{},\"736\":{},\"761\":{}},\"comment\":{}}],[\"bytesdownloaded\",{\"_index\":36,\"name\":{\"36\":{}},\"comment\":{}}],[\"checksize\",{\"_index\":473,\"name\":{\"751\":{}},\"comment\":{}}],[\"chunk_size\",{\"_index\":32,\"name\":{\"32\":{}},\"comment\":{}}],[\"clock\",{\"_index\":107,\"name\":{\"221\":{}},\"comment\":{}}],[\"close\",{\"_index\":498,\"name\":{\"808\":{}},\"comment\":{}}],[\"closeserver\",{\"_index\":61,\"name\":{\"70\":{},\"120\":{},\"177\":{},\"215\":{},\"264\":{},\"308\":{}},\"comment\":{}}],[\"closeservice\",{\"_index\":65,\"name\":{\"74\":{},\"126\":{},\"181\":{},\"219\":{},\"268\":{},\"312\":{}},\"comment\":{}}],[\"comment\",{\"_index\":413,\"name\":{\"674\":{}},\"comment\":{}}],[\"composer\",{\"_index\":415,\"name\":{\"676\":{}},\"comment\":{}}],[\"connect\",{\"_index\":146,\"name\":{\"334\":{}},\"comment\":{}}],[\"connect_timeout\",{\"_index\":179,\"name\":{\"409\":{}},\"comment\":{}}],[\"connection\",{\"_index\":162,\"name\":{\"380\":{}},\"comment\":{}}],[\"connectioninfo\",{\"_index\":153,\"name\":{\"350\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":7,\"name\":{\"7\":{},\"39\":{},\"76\":{},\"93\":{},\"105\":{},\"144\":{},\"156\":{},\"185\":{},\"196\":{},\"225\":{},\"240\":{},\"273\":{},\"284\":{},\"315\":{},\"708\":{},\"721\":{},\"747\":{},\"772\":{},\"789\":{},\"797\":{},\"802\":{},\"810\":{}},\"comment\":{}}],[\"context\",{\"_index\":444,\"name\":{\"707\":{}},\"comment\":{}}],[\"controller\",{\"_index\":152,\"name\":{\"349\":{}},\"comment\":{}}],[\"creatediscoverymessage\",{\"_index\":29,\"name\":{\"29\":{}},\"comment\":{}}],[\"createserver\",{\"_index\":60,\"name\":{\"68\":{},\"118\":{},\"175\":{},\"213\":{},\"262\":{},\"306\":{}},\"comment\":{}}],[\"currentbpm\",{\"_index\":383,\"name\":{\"621\":{},\"645\":{}},\"comment\":{}}],[\"database\",{\"_index\":159,\"name\":{\"376\":{}},\"comment\":{}}],[\"databases\",{\"_index\":139,\"name\":{\"326\":{},\"796\":{}},\"comment\":{}}],[\"datahandler\",{\"_index\":80,\"name\":{\"122\":{}},\"comment\":{}}],[\"dateadded\",{\"_index\":425,\"name\":{\"686\":{}},\"comment\":{}}],[\"datecreated\",{\"_index\":424,\"name\":{\"685\":{}},\"comment\":{}}],[\"db\",{\"_index\":493,\"name\":{\"803\":{}},\"comment\":{}}],[\"dbconnection\",{\"_index\":492,\"name\":{\"801\":{}},\"comment\":{}}],[\"dbpath\",{\"_index\":494,\"name\":{\"804\":{}},\"comment\":{}}],[\"dbsourcename\",{\"_index\":396,\"name\":{\"639\":{}},\"comment\":{}}],[\"deck\",{\"_index\":109,\"name\":{\"223\":{},\"622\":{}},\"comment\":{}}],[\"deckcount\",{\"_index\":108,\"name\":{\"222\":{}},\"comment\":{}}],[\"decks\",{\"_index\":154,\"name\":{\"356\":{}},\"comment\":{}}],[\"deletedevice\",{\"_index\":71,\"name\":{\"84\":{},\"101\":{},\"153\":{},\"193\":{},\"237\":{},\"281\":{}},\"comment\":{}}],[\"deleteserver\",{\"_index\":144,\"name\":{\"332\":{}},\"comment\":{}}],[\"deleteservice\",{\"_index\":489,\"name\":{\"787\":{},\"795\":{}},\"comment\":{}}],[\"deletesource\",{\"_index\":504,\"name\":{\"819\":{}},\"comment\":{}}],[\"device\",{\"_index\":53,\"name\":{\"58\":{},\"107\":{},\"165\":{},\"204\":{},\"253\":{},\"297\":{},\"352\":{},\"384\":{},\"782\":{},\"788\":{}},\"comment\":{}}],[\"deviceid\",{\"_index\":15,\"name\":{\"15\":{},\"59\":{},\"90\":{},\"108\":{},\"166\":{},\"183\":{},\"205\":{},\"254\":{},\"298\":{},\"338\":{},\"359\":{},\"371\":{},\"374\":{},\"623\":{},\"771\":{},\"791\":{}},\"comment\":{}}],[\"devices\",{\"_index\":136,\"name\":{\"319\":{},\"777\":{},\"779\":{}},\"comment\":{}}],[\"devicetrackregister\",{\"_index\":93,\"name\":{\"146\":{}},\"comment\":{}}],[\"devicetype\",{\"_index\":151,\"name\":{\"346\":{}},\"comment\":{}}],[\"devicetypes\",{\"_index\":174,\"name\":{\"404\":{}},\"comment\":{}}],[\"directory\",{\"_index\":102,\"name\":{\"195\":{},\"329\":{},\"398\":{}},\"comment\":{}}],[\"directorydata\",{\"_index\":100,\"name\":{\"182\":{}},\"comment\":{}}],[\"directoryhandler\",{\"_index\":101,\"name\":{\"184\":{}},\"comment\":{}}],[\"disconnect\",{\"_index\":147,\"name\":{\"335\":{}},\"comment\":{}}],[\"discovery\",{\"_index\":6,\"name\":{\"6\":{},\"321\":{}},\"comment\":{}}],[\"discovery_message_marker\",{\"_index\":181,\"name\":{\"411\":{}},\"comment\":{}}],[\"discoverymessage\",{\"_index\":148,\"name\":{\"336\":{}},\"comment\":{}}],[\"discoverymessageoptions\",{\"_index\":0,\"name\":{\"0\":{}},\"comment\":{}}],[\"download_timeout\",{\"_index\":180,\"name\":{\"410\":{}},\"comment\":{}}],[\"downloaddb\",{\"_index\":491,\"name\":{\"800\":{}},\"comment\":{}}],[\"downloaddbsources\",{\"_index\":173,\"name\":{\"402\":{}},\"comment\":{}}],[\"downloadfile\",{\"_index\":505,\"name\":{\"820\":{}},\"comment\":{}}],[\"enginedeck1currentbpm\",{\"_index\":191,\"name\":{\"426\":{}},\"comment\":{}}],[\"enginedeck1externalmixervolume\",{\"_index\":192,\"name\":{\"427\":{}},\"comment\":{}}],[\"enginedeck1externalscratchwheeltouch\",{\"_index\":193,\"name\":{\"428\":{}},\"comment\":{}}],[\"enginedeck1padsview\",{\"_index\":194,\"name\":{\"429\":{}},\"comment\":{}}],[\"enginedeck1play\",{\"_index\":195,\"name\":{\"430\":{}},\"comment\":{}}],[\"enginedeck1playstate\",{\"_index\":196,\"name\":{\"431\":{}},\"comment\":{}}],[\"enginedeck1playstatepath\",{\"_index\":197,\"name\":{\"432\":{}},\"comment\":{}}],[\"enginedeck1speed\",{\"_index\":198,\"name\":{\"433\":{}},\"comment\":{}}],[\"enginedeck1speedneutral\",{\"_index\":199,\"name\":{\"434\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetdown\",{\"_index\":200,\"name\":{\"435\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetup\",{\"_index\":201,\"name\":{\"436\":{}},\"comment\":{}}],[\"enginedeck1speedrange\",{\"_index\":202,\"name\":{\"437\":{}},\"comment\":{}}],[\"enginedeck1speedstate\",{\"_index\":203,\"name\":{\"438\":{}},\"comment\":{}}],[\"enginedeck1syncmode\",{\"_index\":204,\"name\":{\"439\":{}},\"comment\":{}}],[\"enginedeck1trackartistname\",{\"_index\":205,\"name\":{\"440\":{}},\"comment\":{}}],[\"enginedeck1trackbleep\",{\"_index\":206,\"name\":{\"441\":{}},\"comment\":{}}],[\"enginedeck1trackcueposition\",{\"_index\":207,\"name\":{\"442\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentbpm\",{\"_index\":208,\"name\":{\"443\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentkeyindex\",{\"_index\":209,\"name\":{\"444\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopinposition\",{\"_index\":210,\"name\":{\"445\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopoutposition\",{\"_index\":211,\"name\":{\"446\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopsizeinbeats\",{\"_index\":212,\"name\":{\"447\":{}},\"comment\":{}}],[\"enginedeck1trackkeylock\",{\"_index\":213,\"name\":{\"448\":{}},\"comment\":{}}],[\"enginedeck1trackloopenablestate\",{\"_index\":214,\"name\":{\"449\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop1\",{\"_index\":215,\"name\":{\"450\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop2\",{\"_index\":216,\"name\":{\"451\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop3\",{\"_index\":217,\"name\":{\"452\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop4\",{\"_index\":218,\"name\":{\"453\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop5\",{\"_index\":219,\"name\":{\"454\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop6\",{\"_index\":220,\"name\":{\"455\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop7\",{\"_index\":221,\"name\":{\"456\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop8\",{\"_index\":222,\"name\":{\"457\":{}},\"comment\":{}}],[\"enginedeck1trackplaypauseledstate\",{\"_index\":223,\"name\":{\"458\":{}},\"comment\":{}}],[\"enginedeck1tracksamplerate\",{\"_index\":224,\"name\":{\"459\":{}},\"comment\":{}}],[\"enginedeck1tracksonganalyzed\",{\"_index\":225,\"name\":{\"460\":{}},\"comment\":{}}],[\"enginedeck1tracksongloaded\",{\"_index\":226,\"name\":{\"461\":{}},\"comment\":{}}],[\"enginedeck1tracksongname\",{\"_index\":227,\"name\":{\"462\":{}},\"comment\":{}}],[\"enginedeck1tracksoundswitchguid\",{\"_index\":228,\"name\":{\"463\":{}},\"comment\":{}}],[\"enginedeck1tracktrackbytes\",{\"_index\":229,\"name\":{\"464\":{}},\"comment\":{}}],[\"enginedeck1tracktrackdata\",{\"_index\":230,\"name\":{\"465\":{}},\"comment\":{}}],[\"enginedeck1tracktracklength\",{\"_index\":231,\"name\":{\"466\":{}},\"comment\":{}}],[\"enginedeck1tracktrackname\",{\"_index\":232,\"name\":{\"467\":{}},\"comment\":{}}],[\"enginedeck1tracktracknetworkpath\",{\"_index\":233,\"name\":{\"468\":{}},\"comment\":{}}],[\"enginedeck1tracktrackuri\",{\"_index\":234,\"name\":{\"469\":{}},\"comment\":{}}],[\"enginedeck1tracktrackwasplayed\",{\"_index\":235,\"name\":{\"470\":{}},\"comment\":{}}],[\"enginedeck2currentbpm\",{\"_index\":236,\"name\":{\"471\":{}},\"comment\":{}}],[\"enginedeck2externalmixervolume\",{\"_index\":237,\"name\":{\"472\":{}},\"comment\":{}}],[\"enginedeck2externalscratchwheeltouch\",{\"_index\":238,\"name\":{\"473\":{}},\"comment\":{}}],[\"enginedeck2padsview\",{\"_index\":239,\"name\":{\"474\":{}},\"comment\":{}}],[\"enginedeck2play\",{\"_index\":240,\"name\":{\"475\":{}},\"comment\":{}}],[\"enginedeck2playstate\",{\"_index\":241,\"name\":{\"476\":{}},\"comment\":{}}],[\"enginedeck2playstatepath\",{\"_index\":242,\"name\":{\"477\":{}},\"comment\":{}}],[\"enginedeck2speed\",{\"_index\":243,\"name\":{\"478\":{}},\"comment\":{}}],[\"enginedeck2speedneutral\",{\"_index\":244,\"name\":{\"479\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetdown\",{\"_index\":245,\"name\":{\"480\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetup\",{\"_index\":246,\"name\":{\"481\":{}},\"comment\":{}}],[\"enginedeck2speedrange\",{\"_index\":247,\"name\":{\"482\":{}},\"comment\":{}}],[\"enginedeck2speedstate\",{\"_index\":248,\"name\":{\"483\":{}},\"comment\":{}}],[\"enginedeck2syncmode\",{\"_index\":249,\"name\":{\"484\":{}},\"comment\":{}}],[\"enginedeck2trackartistname\",{\"_index\":250,\"name\":{\"485\":{}},\"comment\":{}}],[\"enginedeck2trackbleep\",{\"_index\":251,\"name\":{\"486\":{}},\"comment\":{}}],[\"enginedeck2trackcueposition\",{\"_index\":252,\"name\":{\"487\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentbpm\",{\"_index\":253,\"name\":{\"488\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentkeyindex\",{\"_index\":254,\"name\":{\"489\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopinposition\",{\"_index\":255,\"name\":{\"490\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopoutposition\",{\"_index\":256,\"name\":{\"491\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopsizeinbeats\",{\"_index\":257,\"name\":{\"492\":{}},\"comment\":{}}],[\"enginedeck2trackkeylock\",{\"_index\":258,\"name\":{\"493\":{}},\"comment\":{}}],[\"enginedeck2trackloopenablestate\",{\"_index\":259,\"name\":{\"494\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop1\",{\"_index\":260,\"name\":{\"495\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop2\",{\"_index\":261,\"name\":{\"496\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop3\",{\"_index\":262,\"name\":{\"497\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop4\",{\"_index\":263,\"name\":{\"498\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop5\",{\"_index\":264,\"name\":{\"499\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop6\",{\"_index\":265,\"name\":{\"500\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop7\",{\"_index\":266,\"name\":{\"501\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop8\",{\"_index\":267,\"name\":{\"502\":{}},\"comment\":{}}],[\"enginedeck2trackplaypauseledstate\",{\"_index\":268,\"name\":{\"503\":{}},\"comment\":{}}],[\"enginedeck2tracksamplerate\",{\"_index\":269,\"name\":{\"504\":{}},\"comment\":{}}],[\"enginedeck2tracksonganalyzed\",{\"_index\":270,\"name\":{\"505\":{}},\"comment\":{}}],[\"enginedeck2tracksongloaded\",{\"_index\":271,\"name\":{\"506\":{}},\"comment\":{}}],[\"enginedeck2tracksongname\",{\"_index\":272,\"name\":{\"507\":{}},\"comment\":{}}],[\"enginedeck2tracksoundswitchguid\",{\"_index\":273,\"name\":{\"508\":{}},\"comment\":{}}],[\"enginedeck2tracktrackbytes\",{\"_index\":274,\"name\":{\"509\":{}},\"comment\":{}}],[\"enginedeck2tracktrackdata\",{\"_index\":275,\"name\":{\"510\":{}},\"comment\":{}}],[\"enginedeck2tracktracklength\",{\"_index\":276,\"name\":{\"511\":{}},\"comment\":{}}],[\"enginedeck2tracktrackname\",{\"_index\":277,\"name\":{\"512\":{}},\"comment\":{}}],[\"enginedeck2tracktracknetworkpath\",{\"_index\":278,\"name\":{\"513\":{}},\"comment\":{}}],[\"enginedeck2tracktrackuri\",{\"_index\":279,\"name\":{\"514\":{}},\"comment\":{}}],[\"enginedeck2tracktrackwasplayed\",{\"_index\":280,\"name\":{\"515\":{}},\"comment\":{}}],[\"enginedeck3currentbpm\",{\"_index\":281,\"name\":{\"516\":{}},\"comment\":{}}],[\"enginedeck3externalmixervolume\",{\"_index\":282,\"name\":{\"517\":{}},\"comment\":{}}],[\"enginedeck3externalscratchwheeltouch\",{\"_index\":283,\"name\":{\"518\":{}},\"comment\":{}}],[\"enginedeck3padsview\",{\"_index\":284,\"name\":{\"519\":{}},\"comment\":{}}],[\"enginedeck3play\",{\"_index\":285,\"name\":{\"520\":{}},\"comment\":{}}],[\"enginedeck3playstate\",{\"_index\":286,\"name\":{\"521\":{}},\"comment\":{}}],[\"enginedeck3playstatepath\",{\"_index\":287,\"name\":{\"522\":{}},\"comment\":{}}],[\"enginedeck3speed\",{\"_index\":288,\"name\":{\"523\":{}},\"comment\":{}}],[\"enginedeck3speedneutral\",{\"_index\":289,\"name\":{\"524\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetdown\",{\"_index\":290,\"name\":{\"525\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetup\",{\"_index\":291,\"name\":{\"526\":{}},\"comment\":{}}],[\"enginedeck3speedrange\",{\"_index\":292,\"name\":{\"527\":{}},\"comment\":{}}],[\"enginedeck3speedstate\",{\"_index\":293,\"name\":{\"528\":{}},\"comment\":{}}],[\"enginedeck3syncmode\",{\"_index\":294,\"name\":{\"529\":{}},\"comment\":{}}],[\"enginedeck3trackartistname\",{\"_index\":295,\"name\":{\"530\":{}},\"comment\":{}}],[\"enginedeck3trackbleep\",{\"_index\":296,\"name\":{\"531\":{}},\"comment\":{}}],[\"enginedeck3trackcueposition\",{\"_index\":297,\"name\":{\"532\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentbpm\",{\"_index\":298,\"name\":{\"533\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentkeyindex\",{\"_index\":299,\"name\":{\"534\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopinposition\",{\"_index\":300,\"name\":{\"535\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopoutposition\",{\"_index\":301,\"name\":{\"536\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopsizeinbeats\",{\"_index\":302,\"name\":{\"537\":{}},\"comment\":{}}],[\"enginedeck3trackkeylock\",{\"_index\":303,\"name\":{\"538\":{}},\"comment\":{}}],[\"enginedeck3trackloopenablestate\",{\"_index\":304,\"name\":{\"539\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop1\",{\"_index\":305,\"name\":{\"540\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop2\",{\"_index\":306,\"name\":{\"541\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop3\",{\"_index\":307,\"name\":{\"542\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop4\",{\"_index\":308,\"name\":{\"543\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop5\",{\"_index\":309,\"name\":{\"544\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop6\",{\"_index\":310,\"name\":{\"545\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop7\",{\"_index\":311,\"name\":{\"546\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop8\",{\"_index\":312,\"name\":{\"547\":{}},\"comment\":{}}],[\"enginedeck3trackplaypauseledstate\",{\"_index\":313,\"name\":{\"548\":{}},\"comment\":{}}],[\"enginedeck3tracksamplerate\",{\"_index\":314,\"name\":{\"549\":{}},\"comment\":{}}],[\"enginedeck3tracksonganalyzed\",{\"_index\":315,\"name\":{\"550\":{}},\"comment\":{}}],[\"enginedeck3tracksongloaded\",{\"_index\":316,\"name\":{\"551\":{}},\"comment\":{}}],[\"enginedeck3tracksongname\",{\"_index\":317,\"name\":{\"552\":{}},\"comment\":{}}],[\"enginedeck3tracksoundswitchguid\",{\"_index\":318,\"name\":{\"553\":{}},\"comment\":{}}],[\"enginedeck3tracktrackbytes\",{\"_index\":319,\"name\":{\"554\":{}},\"comment\":{}}],[\"enginedeck3tracktrackdata\",{\"_index\":320,\"name\":{\"555\":{}},\"comment\":{}}],[\"enginedeck3tracktracklength\",{\"_index\":321,\"name\":{\"556\":{}},\"comment\":{}}],[\"enginedeck3tracktrackname\",{\"_index\":322,\"name\":{\"557\":{}},\"comment\":{}}],[\"enginedeck3tracktracknetworkpath\",{\"_index\":323,\"name\":{\"558\":{}},\"comment\":{}}],[\"enginedeck3tracktrackuri\",{\"_index\":324,\"name\":{\"559\":{}},\"comment\":{}}],[\"enginedeck3tracktrackwasplayed\",{\"_index\":325,\"name\":{\"560\":{}},\"comment\":{}}],[\"enginedeck4currentbpm\",{\"_index\":326,\"name\":{\"561\":{}},\"comment\":{}}],[\"enginedeck4externalmixervolume\",{\"_index\":327,\"name\":{\"562\":{}},\"comment\":{}}],[\"enginedeck4externalscratchwheeltouch\",{\"_index\":328,\"name\":{\"563\":{}},\"comment\":{}}],[\"enginedeck4padsview\",{\"_index\":329,\"name\":{\"564\":{}},\"comment\":{}}],[\"enginedeck4play\",{\"_index\":330,\"name\":{\"565\":{}},\"comment\":{}}],[\"enginedeck4playstate\",{\"_index\":331,\"name\":{\"566\":{}},\"comment\":{}}],[\"enginedeck4playstatepath\",{\"_index\":332,\"name\":{\"567\":{}},\"comment\":{}}],[\"enginedeck4speed\",{\"_index\":333,\"name\":{\"568\":{}},\"comment\":{}}],[\"enginedeck4speedneutral\",{\"_index\":334,\"name\":{\"569\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetdown\",{\"_index\":335,\"name\":{\"570\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetup\",{\"_index\":336,\"name\":{\"571\":{}},\"comment\":{}}],[\"enginedeck4speedrange\",{\"_index\":337,\"name\":{\"572\":{}},\"comment\":{}}],[\"enginedeck4speedstate\",{\"_index\":338,\"name\":{\"573\":{}},\"comment\":{}}],[\"enginedeck4syncmode\",{\"_index\":339,\"name\":{\"574\":{}},\"comment\":{}}],[\"enginedeck4trackartistname\",{\"_index\":340,\"name\":{\"575\":{}},\"comment\":{}}],[\"enginedeck4trackbleep\",{\"_index\":341,\"name\":{\"576\":{}},\"comment\":{}}],[\"enginedeck4trackcueposition\",{\"_index\":342,\"name\":{\"577\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentbpm\",{\"_index\":343,\"name\":{\"578\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentkeyindex\",{\"_index\":344,\"name\":{\"579\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopinposition\",{\"_index\":345,\"name\":{\"580\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopoutposition\",{\"_index\":346,\"name\":{\"581\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopsizeinbeats\",{\"_index\":347,\"name\":{\"582\":{}},\"comment\":{}}],[\"enginedeck4trackkeylock\",{\"_index\":348,\"name\":{\"583\":{}},\"comment\":{}}],[\"enginedeck4trackloopenablestate\",{\"_index\":349,\"name\":{\"584\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop1\",{\"_index\":350,\"name\":{\"585\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop2\",{\"_index\":351,\"name\":{\"586\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop3\",{\"_index\":352,\"name\":{\"587\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop4\",{\"_index\":353,\"name\":{\"588\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop5\",{\"_index\":354,\"name\":{\"589\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop6\",{\"_index\":355,\"name\":{\"590\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop7\",{\"_index\":356,\"name\":{\"591\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop8\",{\"_index\":357,\"name\":{\"592\":{}},\"comment\":{}}],[\"enginedeck4trackplaypauseledstate\",{\"_index\":358,\"name\":{\"593\":{}},\"comment\":{}}],[\"enginedeck4tracksamplerate\",{\"_index\":359,\"name\":{\"594\":{}},\"comment\":{}}],[\"enginedeck4tracksonganalyzed\",{\"_index\":360,\"name\":{\"595\":{}},\"comment\":{}}],[\"enginedeck4tracksongloaded\",{\"_index\":361,\"name\":{\"596\":{}},\"comment\":{}}],[\"enginedeck4tracksongname\",{\"_index\":362,\"name\":{\"597\":{}},\"comment\":{}}],[\"enginedeck4tracksoundswitchguid\",{\"_index\":363,\"name\":{\"598\":{}},\"comment\":{}}],[\"enginedeck4tracktrackbytes\",{\"_index\":364,\"name\":{\"599\":{}},\"comment\":{}}],[\"enginedeck4tracktrackdata\",{\"_index\":365,\"name\":{\"600\":{}},\"comment\":{}}],[\"enginedeck4tracktracklength\",{\"_index\":366,\"name\":{\"601\":{}},\"comment\":{}}],[\"enginedeck4tracktrackname\",{\"_index\":367,\"name\":{\"602\":{}},\"comment\":{}}],[\"enginedeck4tracktracknetworkpath\",{\"_index\":368,\"name\":{\"603\":{}},\"comment\":{}}],[\"enginedeck4tracktrackuri\",{\"_index\":369,\"name\":{\"604\":{}},\"comment\":{}}],[\"enginedeck4tracktrackwasplayed\",{\"_index\":370,\"name\":{\"605\":{}},\"comment\":{}}],[\"enginedeckcount\",{\"_index\":190,\"name\":{\"425\":{}},\"comment\":{}}],[\"enginemastermastertempo\",{\"_index\":189,\"name\":{\"424\":{}},\"comment\":{}}],[\"enginesyncnetworkmasterstatus\",{\"_index\":188,\"name\":{\"423\":{}},\"comment\":{}}],[\"explicitlyrics\",{\"_index\":442,\"name\":{\"705\":{}},\"comment\":{}}],[\"externalmixervolume\",{\"_index\":384,\"name\":{\"624\":{},\"646\":{}},\"comment\":{}}],[\"filebytes\",{\"_index\":410,\"name\":{\"669\":{}},\"comment\":{}}],[\"filelocation\",{\"_index\":385,\"name\":{\"625\":{},\"647\":{}},\"comment\":{}}],[\"filename\",{\"_index\":406,\"name\":{\"665\":{}},\"comment\":{}}],[\"filetransfer\",{\"_index\":38,\"name\":{\"38\":{},\"323\":{},\"395\":{}},\"comment\":{}}],[\"filetransferhandler\",{\"_index\":66,\"name\":{\"75\":{}},\"comment\":{}}],[\"filetransferinfo\",{\"_index\":166,\"name\":{\"388\":{}},\"comment\":{}}],[\"filetransferprogress\",{\"_index\":33,\"name\":{\"33\":{}},\"comment\":{}}],[\"filetype\",{\"_index\":422,\"name\":{\"683\":{}},\"comment\":{}}],[\"findbroadcastips\",{\"_index\":31,\"name\":{\"31\":{}},\"comment\":{}}],[\"genre\",{\"_index\":412,\"name\":{\"673\":{}},\"comment\":{}}],[\"getbeatdata\",{\"_index\":112,\"name\":{\"229\":{},\"248\":{}},\"comment\":{}}],[\"getbuffer\",{\"_index\":472,\"name\":{\"749\":{}},\"comment\":{}}],[\"getconnectioninfo\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"getdevice\",{\"_index\":69,\"name\":{\"81\":{},\"98\":{},\"150\":{},\"190\":{},\"234\":{},\"278\":{},\"781\":{}},\"comment\":{}}],[\"getdevicelist\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"getdevices\",{\"_index\":22,\"name\":{\"22\":{},\"82\":{},\"99\":{},\"151\":{},\"191\":{},\"235\":{},\"279\":{}},\"comment\":{}}],[\"getfile\",{\"_index\":44,\"name\":{\"48\":{}},\"comment\":{}}],[\"getservers\",{\"_index\":145,\"name\":{\"333\":{}},\"comment\":{}}],[\"getsource\",{\"_index\":502,\"name\":{\"816\":{}},\"comment\":{}}],[\"getsources\",{\"_index\":46,\"name\":{\"50\":{},\"817\":{}},\"comment\":{}}],[\"getstring\",{\"_index\":462,\"name\":{\"728\":{}},\"comment\":{}}],[\"gettempfilepath\",{\"_index\":454,\"name\":{\"719\":{}},\"comment\":{}}],[\"gettimestamp\",{\"_index\":130,\"name\":{\"292\":{}},\"comment\":{}}],[\"gettrackinfo\",{\"_index\":497,\"name\":{\"807\":{}},\"comment\":{}}],[\"handler\",{\"_index\":95,\"name\":{\"158\":{},\"243\":{}},\"comment\":{}}],[\"hasconnectioninfo\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"hasdevice\",{\"_index\":68,\"name\":{\"80\":{},\"97\":{},\"149\":{},\"189\":{},\"233\":{},\"277\":{},\"783\":{}},\"comment\":{}}],[\"haslooped\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"hasnewinfo\",{\"_index\":486,\"name\":{\"784\":{}},\"comment\":{}}],[\"hasreceivedstate\",{\"_index\":96,\"name\":{\"159\":{}},\"comment\":{}}],[\"hassource\",{\"_index\":500,\"name\":{\"814\":{}},\"comment\":{}}],[\"hassourceanddb\",{\"_index\":501,\"name\":{\"815\":{}},\"comment\":{}}],[\"hastrackdata\",{\"_index\":386,\"name\":{\"626\":{},\"648\":{}},\"comment\":{}}],[\"id\",{\"_index\":157,\"name\":{\"368\":{},\"659\":{}},\"comment\":{}}],[\"info\",{\"_index\":490,\"name\":{\"792\":{}},\"comment\":{}}],[\"interval\",{\"_index\":91,\"name\":{\"142\":{}},\"comment\":{}}],[\"ipaddress\",{\"_index\":167,\"name\":{\"391\":{}},\"comment\":{}}],[\"ipaddressport\",{\"_index\":168,\"name\":{\"392\":{}},\"comment\":{}}],[\"isanalyzed\",{\"_index\":423,\"name\":{\"684\":{}},\"comment\":{}}],[\"isavailable\",{\"_index\":41,\"name\":{\"44\":{},\"57\":{},\"687\":{}},\"comment\":{}}],[\"isbeatgridlocked\",{\"_index\":433,\"name\":{\"695\":{}},\"comment\":{}}],[\"isbufferedservice\",{\"_index\":57,\"name\":{\"64\":{},\"113\":{},\"171\":{},\"198\":{},\"247\":{},\"286\":{}},\"comment\":{}}],[\"iseof\",{\"_index\":451,\"name\":{\"716\":{},\"743\":{},\"767\":{}},\"comment\":{}}],[\"islittleendian\",{\"_index\":452,\"name\":{\"717\":{},\"744\":{},\"768\":{}},\"comment\":{}}],[\"ismetadataimported\",{\"_index\":429,\"name\":{\"691\":{}},\"comment\":{}}],[\"ismetadataofpackedtrackchanged\",{\"_index\":426,\"name\":{\"688\":{}},\"comment\":{}}],[\"isperfomancedataofpackedtrackchanged\",{\"_index\":427,\"name\":{\"689\":{}},\"comment\":{}}],[\"isplayed\",{\"_index\":421,\"name\":{\"682\":{}},\"comment\":{}}],[\"jogcolor\",{\"_index\":387,\"name\":{\"627\":{},\"649\":{}},\"comment\":{}}],[\"json\",{\"_index\":86,\"name\":{\"136\":{}},\"comment\":{}}],[\"key\",{\"_index\":417,\"name\":{\"678\":{}},\"comment\":{}}],[\"label\",{\"_index\":414,\"name\":{\"675\":{}},\"comment\":{}}],[\"layer\",{\"_index\":388,\"name\":{\"628\":{},\"643\":{}},\"comment\":{}}],[\"length\",{\"_index\":403,\"name\":{\"661\":{}},\"comment\":{}}],[\"listen\",{\"_index\":23,\"name\":{\"23\":{},\"69\":{},\"119\":{},\"176\":{},\"214\":{},\"263\":{},\"307\":{}},\"comment\":{}}],[\"listen_port\",{\"_index\":176,\"name\":{\"406\":{}},\"comment\":{}}],[\"listen_timeout\",{\"_index\":177,\"name\":{\"407\":{}},\"comment\":{}}],[\"listenfordevices\",{\"_index\":27,\"name\":{\"27\":{}},\"comment\":{}}],[\"littleendian\",{\"_index\":447,\"name\":{\"711\":{},\"738\":{},\"763\":{}},\"comment\":{}}],[\"local\",{\"_index\":164,\"name\":{\"385\":{}},\"comment\":{}}],[\"localtime\",{\"_index\":125,\"name\":{\"287\":{}},\"comment\":{}}],[\"location\",{\"_index\":160,\"name\":{\"378\":{},\"383\":{}},\"comment\":{}}],[\"logger\",{\"_index\":137,\"name\":{\"320\":{}},\"comment\":{}}],[\"login\",{\"_index\":182,\"name\":{\"413\":{}},\"comment\":{}}],[\"logout\",{\"_index\":183,\"name\":{\"414\":{}},\"comment\":{}}],[\"loops\",{\"_index\":439,\"name\":{\"702\":{}},\"comment\":{}}],[\"m_array\",{\"_index\":484,\"name\":{\"774\":{}},\"comment\":{}}],[\"m_str\",{\"_index\":483,\"name\":{\"773\":{}},\"comment\":{}}],[\"masterstatus\",{\"_index\":389,\"name\":{\"629\":{}},\"comment\":{}}],[\"mastertempo\",{\"_index\":390,\"name\":{\"630\":{}},\"comment\":{}}],[\"maxretries\",{\"_index\":171,\"name\":{\"400\":{}},\"comment\":{}}],[\"message\",{\"_index\":158,\"name\":{\"369\":{}},\"comment\":{}}],[\"message_timeout\",{\"_index\":178,\"name\":{\"408\":{}},\"comment\":{}}],[\"messagebuffer\",{\"_index\":78,\"name\":{\"117\":{}},\"comment\":{}}],[\"messagehandler\",{\"_index\":43,\"name\":{\"47\":{},\"128\":{},\"162\":{},\"201\":{},\"252\":{},\"296\":{}},\"comment\":{}}],[\"messageid\",{\"_index\":184,\"name\":{\"415\":{}},\"comment\":{}}],[\"mixer\",{\"_index\":83,\"name\":{\"131\":{},\"348\":{},\"606\":{}},\"comment\":{}}],[\"mixerch1faderposition\",{\"_index\":371,\"name\":{\"608\":{}},\"comment\":{}}],[\"mixerch2faderposition\",{\"_index\":372,\"name\":{\"609\":{}},\"comment\":{}}],[\"mixerch3faderposition\",{\"_index\":373,\"name\":{\"610\":{}},\"comment\":{}}],[\"mixerch4faderposition\",{\"_index\":374,\"name\":{\"611\":{}},\"comment\":{}}],[\"mixerchannelassignment1\",{\"_index\":376,\"name\":{\"613\":{}},\"comment\":{}}],[\"mixerchannelassignment2\",{\"_index\":377,\"name\":{\"614\":{}},\"comment\":{}}],[\"mixerchannelassignment3\",{\"_index\":378,\"name\":{\"615\":{}},\"comment\":{}}],[\"mixerchannelassignment4\",{\"_index\":379,\"name\":{\"616\":{}},\"comment\":{}}],[\"mixercrossfaderposition\",{\"_index\":375,\"name\":{\"612\":{}},\"comment\":{}}],[\"mixernumberofchannels\",{\"_index\":380,\"name\":{\"617\":{}},\"comment\":{}}],[\"msgs\",{\"_index\":121,\"name\":{\"270\":{}},\"comment\":{}}],[\"name\",{\"_index\":1,\"name\":{\"1\":{},\"41\":{},\"77\":{},\"88\":{},\"94\":{},\"106\":{},\"135\":{},\"145\":{},\"157\":{},\"186\":{},\"197\":{},\"227\":{},\"242\":{},\"274\":{},\"285\":{},\"343\":{},\"354\":{},\"364\":{},\"373\":{}},\"comment\":{}}],[\"on\",{\"_index\":8,\"name\":{\"8\":{},\"40\":{},\"226\":{},\"241\":{},\"316\":{},\"778\":{},\"798\":{},\"811\":{}},\"comment\":{}}],[\"options\",{\"_index\":13,\"name\":{\"13\":{},\"317\":{}},\"comment\":{}}],[\"origindatabaseuuid\",{\"_index\":434,\"name\":{\"696\":{}},\"comment\":{}}],[\"origintrackid\",{\"_index\":435,\"name\":{\"697\":{}},\"comment\":{}}],[\"overviewwaveformdata\",{\"_index\":437,\"name\":{\"699\":{}},\"comment\":{}}],[\"parent\",{\"_index\":9,\"name\":{\"9\":{},\"65\":{},\"79\":{},\"95\":{},\"114\":{},\"148\":{},\"172\":{},\"188\":{},\"210\":{},\"232\":{},\"259\":{},\"276\":{},\"303\":{},\"790\":{},\"799\":{},\"813\":{}},\"comment\":{}}],[\"parsedata\",{\"_index\":42,\"name\":{\"46\":{},\"127\":{},\"161\":{},\"200\":{},\"251\":{},\"294\":{}},\"comment\":{}}],[\"path\",{\"_index\":165,\"name\":{\"387\":{},\"664\":{}},\"comment\":{}}],[\"pdbimportkey\",{\"_index\":430,\"name\":{\"692\":{}},\"comment\":{}}],[\"peek\",{\"_index\":457,\"name\":{\"723\":{}},\"comment\":{}}],[\"peers\",{\"_index\":14,\"name\":{\"14\":{}},\"comment\":{}}],[\"percentcomplete\",{\"_index\":37,\"name\":{\"37\":{}},\"comment\":{}}],[\"play\",{\"_index\":391,\"name\":{\"631\":{},\"650\":{}},\"comment\":{}}],[\"playedindicator\",{\"_index\":428,\"name\":{\"690\":{}},\"comment\":{}}],[\"player\",{\"_index\":81,\"name\":{\"129\":{},\"347\":{},\"421\":{},\"632\":{},\"651\":{}},\"comment\":{}}],[\"playerdeck\",{\"_index\":82,\"name\":{\"130\":{}},\"comment\":{}}],[\"playerlayerstate\",{\"_index\":399,\"name\":{\"642\":{}},\"comment\":{}}],[\"playerstatus\",{\"_index\":381,\"name\":{\"618\":{}},\"comment\":{}}],[\"playorder\",{\"_index\":402,\"name\":{\"660\":{}},\"comment\":{}}],[\"playstate\",{\"_index\":392,\"name\":{\"633\":{},\"652\":{}},\"comment\":{}}],[\"port\",{\"_index\":5,\"name\":{\"5\":{},\"345\":{},\"366\":{},\"634\":{}},\"comment\":{}}],[\"pos\",{\"_index\":446,\"name\":{\"710\":{},\"737\":{},\"762\":{}},\"comment\":{}}],[\"querysource\",{\"_index\":495,\"name\":{\"805\":{}},\"comment\":{}}],[\"quickcues\",{\"_index\":438,\"name\":{\"701\":{}},\"comment\":{}}],[\"rating\",{\"_index\":418,\"name\":{\"679\":{}},\"comment\":{}}],[\"read\",{\"_index\":456,\"name\":{\"722\":{}},\"comment\":{}}],[\"readconnectioninfo\",{\"_index\":28,\"name\":{\"28\":{}},\"comment\":{}}],[\"readcontext\",{\"_index\":455,\"name\":{\"720\":{}},\"comment\":{}}],[\"readfloat64\",{\"_index\":464,\"name\":{\"730\":{}},\"comment\":{}}],[\"readint32\",{\"_index\":467,\"name\":{\"733\":{}},\"comment\":{}}],[\"readnetworkstringutf16\",{\"_index\":463,\"name\":{\"729\":{}},\"comment\":{}}],[\"readremaining\",{\"_index\":458,\"name\":{\"724\":{}},\"comment\":{}}],[\"readremainingasnewarraybuffer\",{\"_index\":460,\"name\":{\"726\":{}},\"comment\":{}}],[\"readremainingasnewbuffer\",{\"_index\":459,\"name\":{\"725\":{}},\"comment\":{}}],[\"readremainingasnewctx\",{\"_index\":461,\"name\":{\"727\":{}},\"comment\":{}}],[\"readuint16\",{\"_index\":468,\"name\":{\"734\":{}},\"comment\":{}}],[\"readuint32\",{\"_index\":466,\"name\":{\"732\":{}},\"comment\":{}}],[\"readuint64\",{\"_index\":465,\"name\":{\"731\":{}},\"comment\":{}}],[\"readuint8\",{\"_index\":469,\"name\":{\"735\":{}},\"comment\":{}}],[\"receivedfile\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"remixer\",{\"_index\":416,\"name\":{\"677\":{}},\"comment\":{}}],[\"remote\",{\"_index\":163,\"name\":{\"381\":{}},\"comment\":{}}],[\"remotetime\",{\"_index\":126,\"name\":{\"288\":{}},\"comment\":{}}],[\"requestchunkrange\",{\"_index\":50,\"name\":{\"54\":{}},\"comment\":{}}],[\"requestfiletransferid\",{\"_index\":49,\"name\":{\"53\":{}},\"comment\":{}}],[\"requestsources\",{\"_index\":48,\"name\":{\"52\":{}},\"comment\":{}}],[\"requeststat\",{\"_index\":47,\"name\":{\"51\":{}},\"comment\":{}}],[\"resize\",{\"_index\":474,\"name\":{\"752\":{}},\"comment\":{}}],[\"rewind\",{\"_index\":453,\"name\":{\"718\":{},\"745\":{},\"769\":{}},\"comment\":{}}],[\"seek\",{\"_index\":449,\"name\":{\"714\":{},\"741\":{},\"765\":{}},\"comment\":{}}],[\"sendbeatinforequest\",{\"_index\":119,\"name\":{\"250\":{}},\"comment\":{}}],[\"sendnosourcesreply\",{\"_index\":52,\"name\":{\"56\":{}},\"comment\":{}}],[\"sendserviceannouncement\",{\"_index\":104,\"name\":{\"202\":{}},\"comment\":{}}],[\"sendstateresponse\",{\"_index\":98,\"name\":{\"163\":{}},\"comment\":{}}],[\"sendtimestampreply\",{\"_index\":105,\"name\":{\"203\":{}},\"comment\":{}}],[\"sendtimesyncquery\",{\"_index\":131,\"name\":{\"293\":{}},\"comment\":{}}],[\"sendtimesyncrequest\",{\"_index\":128,\"name\":{\"290\":{}},\"comment\":{}}],[\"server\",{\"_index\":54,\"name\":{\"60\":{},\"109\":{},\"167\":{},\"206\":{},\"255\":{},\"299\":{}},\"comment\":{}}],[\"serverinfo\",{\"_index\":55,\"name\":{\"61\":{},\"110\":{},\"168\":{},\"207\":{},\"256\":{},\"300\":{}},\"comment\":{}}],[\"servers\",{\"_index\":142,\"name\":{\"330\":{}},\"comment\":{}}],[\"serverstatus\",{\"_index\":56,\"name\":{\"62\":{},\"111\":{},\"169\":{},\"208\":{},\"257\":{},\"301\":{}},\"comment\":{}}],[\"service\",{\"_index\":75,\"name\":{\"91\":{},\"104\":{},\"134\":{},\"375\":{}},\"comment\":{}}],[\"servicedata\",{\"_index\":73,\"name\":{\"86\":{}},\"comment\":{}}],[\"servicehandler\",{\"_index\":76,\"name\":{\"92\":{}},\"comment\":{}}],[\"servicehandlers\",{\"_index\":133,\"name\":{\"313\":{}},\"comment\":{}}],[\"servicelist\",{\"_index\":169,\"name\":{\"393\":{}},\"comment\":{}}],[\"servicemessage\",{\"_index\":156,\"name\":{\"367\":{}},\"comment\":{}}],[\"services\",{\"_index\":135,\"name\":{\"318\":{},\"403\":{},\"793\":{}},\"comment\":{}}],[\"servicesannouncement\",{\"_index\":185,\"name\":{\"416\":{}},\"comment\":{}}],[\"servicesrequest\",{\"_index\":186,\"name\":{\"418\":{}},\"comment\":{}}],[\"set\",{\"_index\":450,\"name\":{\"715\":{},\"742\":{},\"766\":{}},\"comment\":{}}],[\"setbeatdata\",{\"_index\":113,\"name\":{\"230\":{}},\"comment\":{}}],[\"setconnectioninfo\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"setsource\",{\"_index\":503,\"name\":{\"818\":{}},\"comment\":{}}],[\"setupservice\",{\"_index\":67,\"name\":{\"78\":{},\"103\":{},\"147\":{},\"187\":{},\"231\":{},\"275\":{}},\"comment\":{}}],[\"signaltransfercomplete\",{\"_index\":51,\"name\":{\"55\":{}},\"comment\":{}}],[\"size\",{\"_index\":161,\"name\":{\"379\":{},\"390\":{}},\"comment\":{}}],[\"sizeleft\",{\"_index\":34,\"name\":{\"34\":{},\"712\":{},\"739\":{},\"750\":{}},\"comment\":{}}],[\"sleep\",{\"_index\":482,\"name\":{\"770\":{}},\"comment\":{}}],[\"socket\",{\"_index\":10,\"name\":{\"10\":{},\"63\":{},\"89\":{},\"112\":{},\"170\":{},\"209\":{},\"258\":{},\"302\":{},\"370\":{}},\"comment\":{}}],[\"software\",{\"_index\":150,\"name\":{\"341\":{},\"362\":{}},\"comment\":{}}],[\"songloaded\",{\"_index\":393,\"name\":{\"635\":{},\"653\":{}},\"comment\":{}}],[\"source\",{\"_index\":3,\"name\":{\"3\":{},\"339\":{},\"360\":{},\"372\":{},\"638\":{}},\"comment\":{}}],[\"sources\",{\"_index\":140,\"name\":{\"327\":{},\"809\":{}},\"comment\":{}}],[\"stagelinq\",{\"_index\":134,\"name\":{\"314\":{}},\"comment\":{}}],[\"stagelinqoptions\",{\"_index\":170,\"name\":{\"399\":{}},\"comment\":{}}],[\"stagelinqvalueobj\",{\"_index\":187,\"name\":{\"419\":{}},\"comment\":{}}],[\"startbeatinfo\",{\"_index\":118,\"name\":{\"249\":{}},\"comment\":{}}],[\"startservicelistener\",{\"_index\":72,\"name\":{\"85\":{},\"102\":{},\"154\":{},\"194\":{},\"238\":{},\"282\":{}},\"comment\":{}}],[\"state\",{\"_index\":90,\"name\":{\"141\":{}},\"comment\":{}}],[\"statedata\",{\"_index\":85,\"name\":{\"133\":{}},\"comment\":{}}],[\"statemap\",{\"_index\":94,\"name\":{\"155\":{},\"322\":{},\"394\":{}},\"comment\":{}}],[\"statemapdevice\",{\"_index\":84,\"name\":{\"132\":{}},\"comment\":{}}],[\"statemaphandler\",{\"_index\":92,\"name\":{\"143\":{}},\"comment\":{}}],[\"status\",{\"_index\":141,\"name\":{\"328\":{}},\"comment\":{}}],[\"streamingflags\",{\"_index\":441,\"name\":{\"704\":{}},\"comment\":{}}],[\"streamingsource\",{\"_index\":431,\"name\":{\"693\":{}},\"comment\":{}}],[\"string\",{\"_index\":88,\"name\":{\"139\":{},\"775\":{}},\"comment\":{}}],[\"submessagetest\",{\"_index\":79,\"name\":{\"121\":{}},\"comment\":{}}],[\"subscribe\",{\"_index\":97,\"name\":{\"160\":{}},\"comment\":{}}],[\"subscribestate\",{\"_index\":99,\"name\":{\"164\":{}},\"comment\":{}}],[\"tell\",{\"_index\":448,\"name\":{\"713\":{},\"740\":{},\"764\":{}},\"comment\":{}}],[\"thirdpartysourceid\",{\"_index\":440,\"name\":{\"703\":{}},\"comment\":{}}],[\"timealive\",{\"_index\":103,\"name\":{\"199\":{}},\"comment\":{}}],[\"timeavg\",{\"_index\":132,\"name\":{\"295\":{}},\"comment\":{}}],[\"timelastplayed\",{\"_index\":420,\"name\":{\"681\":{}},\"comment\":{}}],[\"timeout\",{\"_index\":59,\"name\":{\"67\":{},\"116\":{},\"174\":{},\"212\":{},\"261\":{},\"305\":{}},\"comment\":{}}],[\"timestamp\",{\"_index\":122,\"name\":{\"271\":{},\"417\":{}},\"comment\":{}}],[\"timesync\",{\"_index\":138,\"name\":{\"325\":{}},\"comment\":{}}],[\"timesyncdata\",{\"_index\":120,\"name\":{\"269\":{}},\"comment\":{}}],[\"timesynchronization\",{\"_index\":124,\"name\":{\"283\":{},\"397\":{}},\"comment\":{}}],[\"timesynchronizationhandler\",{\"_index\":123,\"name\":{\"272\":{}},\"comment\":{}}],[\"timesyncmsghelper\",{\"_index\":129,\"name\":{\"291\":{}},\"comment\":{}}],[\"title\",{\"_index\":394,\"name\":{\"636\":{},\"654\":{},\"670\":{}},\"comment\":{}}],[\"token\",{\"_index\":4,\"name\":{\"4\":{},\"337\":{},\"358\":{}},\"comment\":{}}],[\"total\",{\"_index\":35,\"name\":{\"35\":{}},\"comment\":{}}],[\"track\",{\"_index\":401,\"name\":{\"658\":{}},\"comment\":{}}],[\"trackdata\",{\"_index\":436,\"name\":{\"698\":{}},\"comment\":{}}],[\"tracknetworkpath\",{\"_index\":395,\"name\":{\"637\":{},\"655\":{}},\"comment\":{}}],[\"trackpath\",{\"_index\":397,\"name\":{\"640\":{}},\"comment\":{}}],[\"trackpathabsolute\",{\"_index\":398,\"name\":{\"641\":{}},\"comment\":{}}],[\"txid\",{\"_index\":40,\"name\":{\"43\":{},\"45\":{},\"389\":{}},\"comment\":{}}],[\"type\",{\"_index\":87,\"name\":{\"138\":{},\"355\":{}},\"comment\":{}}],[\"unannounce\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"updatedeviceinfo\",{\"_index\":487,\"name\":{\"785\":{}},\"comment\":{}}],[\"updatesources\",{\"_index\":45,\"name\":{\"49\":{}},\"comment\":{}}],[\"uri\",{\"_index\":432,\"name\":{\"694\":{}},\"comment\":{}}],[\"value\",{\"_index\":89,\"name\":{\"140\":{}},\"comment\":{}}],[\"version\",{\"_index\":2,\"name\":{\"2\":{},\"344\":{},\"365\":{}},\"comment\":{}}],[\"waitformessage\",{\"_index\":62,\"name\":{\"71\":{},\"123\":{},\"178\":{},\"216\":{},\"265\":{},\"309\":{}},\"comment\":{}}],[\"write\",{\"_index\":63,\"name\":{\"72\":{},\"124\":{},\"179\":{},\"217\":{},\"266\":{},\"310\":{},\"753\":{}},\"comment\":{}}],[\"writecontext\",{\"_index\":470,\"name\":{\"746\":{}},\"comment\":{}}],[\"writediscoverymessage\",{\"_index\":30,\"name\":{\"30\":{}},\"comment\":{}}],[\"writefixedsizedstring\",{\"_index\":475,\"name\":{\"754\":{}},\"comment\":{}}],[\"writeint32\",{\"_index\":479,\"name\":{\"758\":{}},\"comment\":{}}],[\"writenetworkstringutf16\",{\"_index\":476,\"name\":{\"755\":{}},\"comment\":{}}],[\"writeuint16\",{\"_index\":480,\"name\":{\"759\":{}},\"comment\":{}}],[\"writeuint32\",{\"_index\":478,\"name\":{\"757\":{}},\"comment\":{}}],[\"writeuint64\",{\"_index\":477,\"name\":{\"756\":{}},\"comment\":{}}],[\"writeuint8\",{\"_index\":481,\"name\":{\"760\":{}},\"comment\":{}}],[\"writewithlength\",{\"_index\":64,\"name\":{\"73\":{},\"125\":{},\"180\":{},\"218\":{},\"267\":{},\"311\":{}},\"comment\":{}}],[\"year\",{\"_index\":405,\"name\":{\"663\":{}},\"comment\":{}}],[\"zinflate\",{\"_index\":496,\"name\":{\"806\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = JSON.parse("{\"kinds\":{\"8\":\"Enumeration\",\"16\":\"Enumeration Member\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":128,\"name\":\"Discovery\",\"url\":\"classes/Discovery.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Discovery.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Discovery.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Discovery.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Discovery.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"classes/Discovery.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"broadcastAddress\",\"url\":\"classes/Discovery.html#broadcastAddress\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Discovery.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"peers\",\"url\":\"classes/Discovery.html#peers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Discovery.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"announceTimer\",\"url\":\"classes/Discovery.html#announceTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"hasLooped\",\"url\":\"classes/Discovery.html#hasLooped\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getConnectionInfo\",\"url\":\"classes/Discovery.html#getConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDeviceList\",\"url\":\"classes/Discovery.html#getDeviceList\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/Discovery.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Discovery.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"announce\",\"url\":\"classes/Discovery.html#announce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"unannounce\",\"url\":\"classes/Discovery.html#unannounce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"broadcastMessage\",\"url\":\"classes/Discovery.html#broadcastMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listenForDevices\",\"url\":\"classes/Discovery.html#listenForDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"readConnectionInfo\",\"url\":\"classes/Discovery.html#readConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"createDiscoveryMessage\",\"url\":\"classes/Discovery.html#createDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"writeDiscoveryMessage\",\"url\":\"classes/Discovery.html#writeDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"findBroadcastIPs\",\"url\":\"classes/Discovery.html#findBroadcastIPs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":32,\"name\":\"CHUNK_SIZE\",\"url\":\"variables/CHUNK_SIZE.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"FileTransferData\",\"url\":\"interfaces/FileTransferData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/FileTransferData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/FileTransferData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"txid\",\"url\":\"interfaces/FileTransferData.html#txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/FileTransferData.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"offset\",\"url\":\"interfaces/FileTransferData.html#offset\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"interfaces/FileTransferData.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/FileTransferData.html#data\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":256,\"name\":\"FileTransferProgress\",\"url\":\"interfaces/FileTransferProgress.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"sizeLeft\",\"url\":\"interfaces/FileTransferProgress.html#sizeLeft\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/FileTransferProgress.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"bytesDownloaded\",\"url\":\"interfaces/FileTransferProgress.html#bytesDownloaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"percentComplete\",\"url\":\"interfaces/FileTransferProgress.html#percentComplete\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":128,\"name\":\"FileTransfer\",\"url\":\"classes/FileTransfer.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransfer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/FileTransfer.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransfer.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"receivedFile\",\"url\":\"classes/FileTransfer.html#receivedFile\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#txid\",\"url\":\"classes/FileTransfer.html#_txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#isAvailable\",\"url\":\"classes/FileTransfer.html#_isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":262144,\"name\":\"txid\",\"url\":\"classes/FileTransfer.html#txid\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/FileTransfer.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/FileTransfer.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getFile\",\"url\":\"classes/FileTransfer.html#getFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"updateSources\",\"url\":\"classes/FileTransfer.html#updateSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/FileTransfer.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestStat\",\"url\":\"classes/FileTransfer.html#requestStat\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestSources\",\"url\":\"classes/FileTransfer.html#requestSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestFileTransferId\",\"url\":\"classes/FileTransfer.html#requestFileTransferId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestChunkRange\",\"url\":\"classes/FileTransfer.html#requestChunkRange\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"signalTransferComplete\",\"url\":\"classes/FileTransfer.html#signalTransferComplete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"sendNoSourcesReply\",\"url\":\"classes/FileTransfer.html#sendNoSourcesReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"isAvailable\",\"url\":\"classes/FileTransfer.html#isAvailable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/FileTransfer.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/FileTransfer.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/FileTransfer.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/FileTransfer.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/FileTransfer.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/FileTransfer.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/FileTransfer.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransfer.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/FileTransfer.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/FileTransfer.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/FileTransfer.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/FileTransfer.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/FileTransfer.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/FileTransfer.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/FileTransfer.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/FileTransfer.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/FileTransfer.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":128,\"name\":\"FileTransferHandler\",\"url\":\"classes/FileTransferHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransferHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransferHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/FileTransferHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransferHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/FileTransferHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/FileTransferHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/FileTransferHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/FileTransferHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/FileTransferHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/FileTransferHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":4194304,\"name\":\"ServiceData\",\"url\":\"types/ServiceData.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/ServiceData.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"ServiceData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"types/ServiceData.html#__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"types/ServiceData.html#__type.socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"types/ServiceData.html#__type.deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"types/ServiceData.html#__type.service\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":128,\"name\":\"ServiceHandler\",\"url\":\"classes/ServiceHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ServiceHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/ServiceHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/ServiceHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"_devices\",\"url\":\"classes/ServiceHandler.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/ServiceHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/ServiceHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/ServiceHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/ServiceHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/ServiceHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/ServiceHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/ServiceHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":128,\"name\":\"Service\",\"url\":\"classes/Service.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Service.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Service.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Service.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Service.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Service.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Service.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Service.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Service.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Service.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Service.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Service.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Service.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"messageBuffer\",\"url\":\"classes/Service.html#messageBuffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Service.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Service.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Service.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"subMessageTest\",\"url\":\"classes/Service.html#subMessageTest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"dataHandler\",\"url\":\"classes/Service.html#dataHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Service.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Service.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Service.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Service.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Service.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Service.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":4194304,\"name\":\"Player\",\"url\":\"types/Player.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"PlayerDeck\",\"url\":\"types/PlayerDeck.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"Mixer\",\"url\":\"types/Mixer.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"StateData\",\"url\":\"interfaces/StateData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/StateData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/StateData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/StateData.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"json\",\"url\":\"interfaces/StateData.html#json\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/StateData.html#json.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateData.json\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/StateData.html#json.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"string\",\"url\":\"interfaces/StateData.html#json.__type.string\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/StateData.html#json.__type.value\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"state\",\"url\":\"interfaces/StateData.html#json.__type.state\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"interval\",\"url\":\"interfaces/StateData.html#interval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":128,\"name\":\"StateMapHandler\",\"url\":\"classes/StateMapHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMapHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMapHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"deviceTrackRegister\",\"url\":\"classes/StateMapHandler.html#deviceTrackRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/StateMapHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMapHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/StateMapHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/StateMapHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/StateMapHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/StateMapHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/StateMapHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/StateMapHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":128,\"name\":\"StateMap\",\"url\":\"classes/StateMap.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMap.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMap.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/StateMap.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"hasReceivedState\",\"url\":\"classes/StateMap.html#hasReceivedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribe\",\"url\":\"classes/StateMap.html#subscribe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/StateMap.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/StateMap.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"sendStateResponse\",\"url\":\"classes/StateMap.html#sendStateResponse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribeState\",\"url\":\"classes/StateMap.html#subscribeState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/StateMap.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/StateMap.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/StateMap.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/StateMap.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/StateMap.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/StateMap.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/StateMap.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMap.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/StateMap.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/StateMap.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/StateMap.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/StateMap.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/StateMap.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/StateMap.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/StateMap.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/StateMap.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/StateMap.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":256,\"name\":\"DirectoryData\",\"url\":\"interfaces/DirectoryData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DirectoryData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DirectoryData\"},{\"kind\":128,\"name\":\"DirectoryHandler\",\"url\":\"classes/DirectoryHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DirectoryHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/DirectoryHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/DirectoryHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/DirectoryHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/DirectoryHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/DirectoryHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/DirectoryHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/DirectoryHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/DirectoryHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/DirectoryHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":128,\"name\":\"Directory\",\"url\":\"classes/Directory.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Directory.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Directory.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Directory.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeAlive\",\"url\":\"classes/Directory.html#timeAlive\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Directory.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Directory.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendServiceAnnouncement\",\"url\":\"classes/Directory.html#sendServiceAnnouncement\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendTimeStampReply\",\"url\":\"classes/Directory.html#sendTimeStampReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Directory.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Directory.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Directory.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Directory.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Directory.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Directory.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Directory.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Directory.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Directory.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Directory.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Directory.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Directory.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Directory.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Directory.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Directory.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Directory.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":256,\"name\":\"BeatData\",\"url\":\"interfaces/BeatData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/BeatData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/BeatData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"clock\",\"url\":\"interfaces/BeatData.html#clock\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deckCount\",\"url\":\"interfaces/BeatData.html#deckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/BeatData.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":128,\"name\":\"BeatInfoHandler\",\"url\":\"classes/BeatInfoHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfoHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfoHandler.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfoHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"#beatRegister\",\"url\":\"classes/BeatInfoHandler.html#_beatRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfoHandler.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setBeatData\",\"url\":\"classes/BeatInfoHandler.html#setBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/BeatInfoHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfoHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/BeatInfoHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/BeatInfoHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/BeatInfoHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/BeatInfoHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/BeatInfoHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/BeatInfoHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":128,\"name\":\"BeatInfo\",\"url\":\"classes/BeatInfo.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfo.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfo.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfo.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/BeatInfo.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatCallback\",\"url\":\"classes/BeatInfo.html#_userBeatCallback\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatOptions\",\"url\":\"classes/BeatInfo.html#_userBeatOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_currentBeatData\",\"url\":\"classes/BeatInfo.html#_currentBeatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/BeatInfo.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfo.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"startBeatInfo\",\"url\":\"classes/BeatInfo.html#startBeatInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"sendBeatInfoRequest\",\"url\":\"classes/BeatInfo.html#sendBeatInfoRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/BeatInfo.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/BeatInfo.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/BeatInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/BeatInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/BeatInfo.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/BeatInfo.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/BeatInfo.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/BeatInfo.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfo.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/BeatInfo.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/BeatInfo.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/BeatInfo.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/BeatInfo.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/BeatInfo.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/BeatInfo.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/BeatInfo.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/BeatInfo.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/BeatInfo.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":256,\"name\":\"TimeSyncData\",\"url\":\"interfaces/TimeSyncData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"msgs\",\"url\":\"interfaces/TimeSyncData.html#msgs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/TimeSyncData.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":128,\"name\":\"TimeSynchronizationHandler\",\"url\":\"classes/TimeSynchronizationHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronizationHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronizationHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/TimeSynchronizationHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronizationHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/TimeSynchronizationHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":128,\"name\":\"TimeSynchronization\",\"url\":\"classes/TimeSynchronization.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronization.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronization.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/TimeSynchronization.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"localTime\",\"url\":\"classes/TimeSynchronization.html#localTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"remoteTime\",\"url\":\"classes/TimeSynchronization.html#remoteTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"avgTimeArray\",\"url\":\"classes/TimeSynchronization.html#avgTimeArray\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncRequest\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeSyncMsgHelper\",\"url\":\"classes/TimeSynchronization.html#timeSyncMsgHelper\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"getTimeStamp\",\"url\":\"classes/TimeSynchronization.html#getTimeStamp\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncQuery\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncQuery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/TimeSynchronization.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeAvg\",\"url\":\"classes/TimeSynchronization.html#timeAvg\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/TimeSynchronization.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/TimeSynchronization.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/TimeSynchronization.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/TimeSynchronization.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/TimeSynchronization.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/TimeSynchronization.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/TimeSynchronization.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronization.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/TimeSynchronization.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/TimeSynchronization.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/TimeSynchronization.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/TimeSynchronization.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/TimeSynchronization.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/TimeSynchronization.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/TimeSynchronization.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/TimeSynchronization.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/TimeSynchronization.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":256,\"name\":\"ServiceHandlers\",\"url\":\"interfaces/ServiceHandlers.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":128,\"name\":\"StageLinq\",\"url\":\"classes/StageLinq.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StageLinq.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/StageLinq.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/StageLinq.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/StageLinq.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/StageLinq.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"discovery\",\"url\":\"classes/StageLinq.html#discovery\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"stateMap\",\"url\":\"classes/StageLinq.html#stateMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"fileTransfer\",\"url\":\"classes/StageLinq.html#fileTransfer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"beatInfo\",\"url\":\"classes/StageLinq.html#beatInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"timeSync\",\"url\":\"classes/StageLinq.html#timeSync\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"databases\",\"url\":\"classes/StageLinq.html#databases\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"classes/StageLinq.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"classes/StageLinq.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"directory\",\"url\":\"classes/StageLinq.html#directory\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"servers\",\"url\":\"classes/StageLinq.html#servers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"addServer\",\"url\":\"classes/StageLinq.html#addServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"deleteServer\",\"url\":\"classes/StageLinq.html#deleteServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"getServers\",\"url\":\"classes/StageLinq.html#getServers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/StageLinq.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"disconnect\",\"url\":\"classes/StageLinq.html#disconnect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":32,\"name\":\"ANNOUNCEMENT_INTERVAL\",\"url\":\"variables/ANNOUNCEMENT_INTERVAL.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_PORT\",\"url\":\"variables/LISTEN_PORT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_TIMEOUT\",\"url\":\"variables/LISTEN_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"MESSAGE_TIMEOUT\",\"url\":\"variables/MESSAGE_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"CONNECT_TIMEOUT\",\"url\":\"variables/CONNECT_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DOWNLOAD_TIMEOUT\",\"url\":\"variables/DOWNLOAD_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DISCOVERY_MESSAGE_MARKER\",\"url\":\"variables/DISCOVERY_MESSAGE_MARKER.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":8,\"name\":\"Action\",\"url\":\"enums/Action.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Login\",\"url\":\"enums/Action.html#Login\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":16,\"name\":\"Logout\",\"url\":\"enums/Action.html#Logout\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":8,\"name\":\"MessageId\",\"url\":\"enums/MessageId.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"ServicesAnnouncement\",\"url\":\"enums/MessageId.html#ServicesAnnouncement\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"TimeStamp\",\"url\":\"enums/MessageId.html#TimeStamp\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"ServicesRequest\",\"url\":\"enums/MessageId.html#ServicesRequest\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":32,\"name\":\"StateNames\",\"url\":\"variables/StateNames.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"StateNames\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"variables/StateNames.html#__type.player\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.player.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.player\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDevice\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDevice\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasSDCardConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasSDCardConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayer\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationSyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationSyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkSyncType\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkSyncType\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkMasterStatus\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkMasterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineMasterMasterTempo\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineMasterMasterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeckCount\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"GUIDecksDeckActiveDeck\",\"url\":\"variables/StateNames.html#__type.player.__type-2.GUIDecksDeckActiveDeck\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"mixer\",\"url\":\"variables/StateNames.html#__type.mixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.mixer\"},{\"kind\":1024,\"name\":\"MixerCH1faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH1faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH2faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH2faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH3faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH3faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH4faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH4faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCrossfaderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCrossfaderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment1\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment2\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment3\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment4\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerNumberOfChannels\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerNumberOfChannels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":256,\"name\":\"Track\",\"url\":\"interfaces/Track.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/Track.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playOrder\",\"url\":\"interfaces/Track.html#playOrder\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"length\",\"url\":\"interfaces/Track.html#length\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpm\",\"url\":\"interfaces/Track.html#bpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"year\",\"url\":\"interfaces/Track.html#year\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Track.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"filename\",\"url\":\"interfaces/Track.html#filename\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bitrate\",\"url\":\"interfaces/Track.html#bitrate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpmAnalyzed\",\"url\":\"interfaces/Track.html#bpmAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArtId\",\"url\":\"interfaces/Track.html#albumArtId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileBytes\",\"url\":\"interfaces/Track.html#fileBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/Track.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/Track.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"album\",\"url\":\"interfaces/Track.html#album\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"genre\",\"url\":\"interfaces/Track.html#genre\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"comment\",\"url\":\"interfaces/Track.html#comment\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/Track.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"composer\",\"url\":\"interfaces/Track.html#composer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"remixer\",\"url\":\"interfaces/Track.html#remixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/Track.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"rating\",\"url\":\"interfaces/Track.html#rating\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArt\",\"url\":\"interfaces/Track.html#albumArt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"timeLastPlayed\",\"url\":\"interfaces/Track.html#timeLastPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPlayed\",\"url\":\"interfaces/Track.html#isPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileType\",\"url\":\"interfaces/Track.html#fileType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAnalyzed\",\"url\":\"interfaces/Track.html#isAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateCreated\",\"url\":\"interfaces/Track.html#dateCreated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateAdded\",\"url\":\"interfaces/Track.html#dateAdded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAvailable\",\"url\":\"interfaces/Track.html#isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isMetadataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPerfomanceDataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isPerfomanceDataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playedIndicator\",\"url\":\"interfaces/Track.html#playedIndicator\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataImported\",\"url\":\"interfaces/Track.html#isMetadataImported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"pdbImportKey\",\"url\":\"interfaces/Track.html#pdbImportKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingSource\",\"url\":\"interfaces/Track.html#streamingSource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"uri\",\"url\":\"interfaces/Track.html#uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isBeatGridLocked\",\"url\":\"interfaces/Track.html#isBeatGridLocked\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originDatabaseUuid\",\"url\":\"interfaces/Track.html#originDatabaseUuid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originTrackId\",\"url\":\"interfaces/Track.html#originTrackId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"trackData\",\"url\":\"interfaces/Track.html#trackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"overviewWaveFormData\",\"url\":\"interfaces/Track.html#overviewWaveFormData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"beatData\",\"url\":\"interfaces/Track.html#beatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"quickCues\",\"url\":\"interfaces/Track.html#quickCues\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"loops\",\"url\":\"interfaces/Track.html#loops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"thirdPartySourceId\",\"url\":\"interfaces/Track.html#thirdPartySourceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingFlags\",\"url\":\"interfaces/Track.html#streamingFlags\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"explicitLyrics\",\"url\":\"interfaces/Track.html#explicitLyrics\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"activeOnLoadLoops\",\"url\":\"interfaces/Track.html#activeOnLoadLoops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":128,\"name\":\"TrackData\",\"url\":\"classes/TrackData.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TrackData.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"#prefix\",\"url\":\"classes/TrackData.html#_prefix\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"#source\",\"url\":\"classes/TrackData.html#_source\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TrackData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/TrackData.html#_source.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"TrackData.#source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TrackData.html#_source.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/TrackData.html#_source.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/TrackData.html#_source.__type.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"ArtistName\",\"url\":\"classes/TrackData.html#ArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"CurrentBPM\",\"url\":\"classes/TrackData.html#CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SampleRate\",\"url\":\"classes/TrackData.html#SampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongAnalyzed\",\"url\":\"classes/TrackData.html#SongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongLoaded\",\"url\":\"classes/TrackData.html#SongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongName\",\"url\":\"classes/TrackData.html#SongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SoundSwitchGUID\",\"url\":\"classes/TrackData.html#SoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackBytes\",\"url\":\"classes/TrackData.html#TrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackLength\",\"url\":\"classes/TrackData.html#TrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackName\",\"url\":\"classes/TrackData.html#TrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackNetworkPath\",\"url\":\"classes/TrackData.html#TrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackURI\",\"url\":\"classes/TrackData.html#TrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":262144,\"name\":\"prefix\",\"url\":\"classes/TrackData.html#prefix\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":262144,\"name\":\"source\",\"url\":\"classes/TrackData.html#source\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/TrackData.html#source.source-1.__type-1\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"TrackData.source.source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.path-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":256,\"name\":\"Source\",\"url\":\"interfaces/Source.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/Source.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/Source.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/Source.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"database\",\"url\":\"interfaces/Source.html#database\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/Source.html#database.__type.size\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"connection\",\"url\":\"interfaces/Source.html#database.__type.connection\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"remote\",\"url\":\"interfaces/Source.html#database.__type.remote\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.remote\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.device\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"local\",\"url\":\"interfaces/Source.html#database.__type.local\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.local\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":32,\"name\":\"Units\",\"url\":\"variables/Units.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"DiscoveryMessage\",\"url\":\"interfaces/DiscoveryMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessage.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/DiscoveryMessage.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/DiscoveryMessage.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"DiscoveryMessage.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessage.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":256,\"name\":\"ConnectionInfo\",\"url\":\"interfaces/ConnectionInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/ConnectionInfo.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"unit\",\"url\":\"interfaces/ConnectionInfo.html#unit\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.unit\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"decks\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.decks\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"addressPort\",\"url\":\"interfaces/ConnectionInfo.html#addressPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ConnectionInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/ConnectionInfo.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/ConnectionInfo.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/ConnectionInfo.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ConnectionInfo.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":256,\"name\":\"ServiceMessage\",\"url\":\"interfaces/ServiceMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ServiceMessage.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"message\",\"url\":\"interfaces/ServiceMessage.html#message\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":4194304,\"name\":\"IpAddress\",\"url\":\"types/IpAddress.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"IpAddressPort\",\"url\":\"types/IpAddressPort.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"DiscoveryMessageOptions\",\"url\":\"interfaces/DiscoveryMessageOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessageOptions.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessageOptions.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessageOptions.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessageOptions.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessageOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":256,\"name\":\"StageLinqOptions\",\"url\":\"interfaces/StageLinqOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"maxRetries\",\"url\":\"interfaces/StageLinqOptions.html#maxRetries\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"actingAs\",\"url\":\"interfaces/StageLinqOptions.html#actingAs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"downloadDbSources\",\"url\":\"interfaces/StageLinqOptions.html#downloadDbSources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"interfaces/StageLinqOptions.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"connectToMixer\",\"url\":\"interfaces/StageLinqOptions.html#connectToMixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":8,\"name\":\"ServiceList\",\"url\":\"enums/ServiceList.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"StateMap\",\"url\":\"enums/ServiceList.html#StateMap\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"FileTransfer\",\"url\":\"enums/ServiceList.html#FileTransfer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"BeatInfo\",\"url\":\"enums/ServiceList.html#BeatInfo\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"TimeSynchronization\",\"url\":\"enums/ServiceList.html#TimeSynchronization\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"Directory\",\"url\":\"enums/ServiceList.html#Directory\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":32,\"name\":\"ActingAsDevice\",\"url\":\"variables/ActingAsDevice.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/ActingAsDevice.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"ActingAsDevice\"},{\"kind\":128,\"name\":\"Context\",\"url\":\"classes/Context.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Context.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/Context.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/Context.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/Context.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/Context.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/Context.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/Context.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/Context.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/Context.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/Context.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/Context.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":64,\"name\":\"getTempFilePath\",\"url\":\"functions/getTempFilePath.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"ReadContext\",\"url\":\"classes/ReadContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ReadContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"read\",\"url\":\"classes/ReadContext.html#read\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"peek\",\"url\":\"classes/ReadContext.html#peek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemaining\",\"url\":\"classes/ReadContext.html#readRemaining\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewArrayBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewArrayBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewCtx\",\"url\":\"classes/ReadContext.html#readRemainingAsNewCtx\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/ReadContext.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readNetworkStringUTF16\",\"url\":\"classes/ReadContext.html#readNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readFloat64\",\"url\":\"classes/ReadContext.html#readFloat64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt64\",\"url\":\"classes/ReadContext.html#readUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt32\",\"url\":\"classes/ReadContext.html#readUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readInt32\",\"url\":\"classes/ReadContext.html#readInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt16\",\"url\":\"classes/ReadContext.html#readUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt8\",\"url\":\"classes/ReadContext.html#readUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/ReadContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/ReadContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/ReadContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/ReadContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/ReadContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/ReadContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/ReadContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/ReadContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/ReadContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/ReadContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":128,\"name\":\"WriteContext\",\"url\":\"classes/WriteContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WriteContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"autoGrow\",\"url\":\"classes/WriteContext.html#autoGrow\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"getBuffer\",\"url\":\"classes/WriteContext.html#getBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/WriteContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"checkSize\",\"url\":\"classes/WriteContext.html#checkSize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"resize\",\"url\":\"classes/WriteContext.html#resize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/WriteContext.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeFixedSizedString\",\"url\":\"classes/WriteContext.html#writeFixedSizedString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeNetworkStringUTF16\",\"url\":\"classes/WriteContext.html#writeNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt64\",\"url\":\"classes/WriteContext.html#writeUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt32\",\"url\":\"classes/WriteContext.html#writeUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeInt32\",\"url\":\"classes/WriteContext.html#writeInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt16\",\"url\":\"classes/WriteContext.html#writeUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt8\",\"url\":\"classes/WriteContext.html#writeUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/WriteContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/WriteContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/WriteContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/WriteContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/WriteContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/WriteContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/WriteContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/WriteContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/WriteContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":64,\"name\":\"sleep\",\"url\":\"functions/sleep.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"DeviceId\",\"url\":\"classes/DeviceId.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DeviceId.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_str\",\"url\":\"classes/DeviceId.html#m_str\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_array\",\"url\":\"classes/DeviceId.html#m_array\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"string\",\"url\":\"classes/DeviceId.html#string\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"array\",\"url\":\"classes/DeviceId.html#array\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":128,\"name\":\"Devices\",\"url\":\"classes/Devices.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Devices.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":1024,\"name\":\"#devices\",\"url\":\"classes/Devices.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/Devices.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Devices.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"device\",\"url\":\"classes/Devices.html#device\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/Devices.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasNewInfo\",\"url\":\"classes/Devices.html#hasNewInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"updateDeviceInfo\",\"url\":\"classes/Devices.html#updateDeviceInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Devices.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Devices.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Device.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"classes/Device.html#info\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/Device.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deckCount\",\"url\":\"classes/Device.html#deckCount\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Device.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Device.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":128,\"name\":\"Databases\",\"url\":\"classes/Databases.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Databases.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Databases.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Databases.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"downloadDb\",\"url\":\"classes/Databases.html#downloadDb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":128,\"name\":\"DbConnection\",\"url\":\"classes/DbConnection.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DbConnection.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"db\",\"url\":\"classes/DbConnection.html#db\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"dbPath\",\"url\":\"classes/DbConnection.html#dbPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"querySource\",\"url\":\"classes/DbConnection.html#querySource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"zInflate\",\"url\":\"classes/DbConnection.html#zInflate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"getTrackInfo\",\"url\":\"classes/DbConnection.html#getTrackInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"close\",\"url\":\"classes/DbConnection.html#close\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":128,\"name\":\"Sources\",\"url\":\"classes/Sources.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Sources.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Sources.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"_sources\",\"url\":\"classes/Sources.html#_sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Sources.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSource\",\"url\":\"classes/Sources.html#hasSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSourceAndDB\",\"url\":\"classes/Sources.html#hasSourceAndDB\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSource\",\"url\":\"classes/Sources.html#getSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/Sources.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"setSource\",\"url\":\"classes/Sources.html#setSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"deleteSource\",\"url\":\"classes/Sources.html#deleteSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadFile\",\"url\":\"classes/Sources.html#downloadFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,58.171]],[\"comment/0\",[]],[\"name/1\",[1,35.764]],[\"comment/1\",[]],[\"name/2\",[2,47.185]],[\"comment/2\",[]],[\"name/3\",[3,39.3]],[\"comment/3\",[]],[\"name/4\",[4,45.933]],[\"comment/4\",[]],[\"name/5\",[5,58.171]],[\"comment/5\",[]],[\"name/6\",[6,63.279]],[\"comment/6\",[]],[\"name/7\",[7,58.171]],[\"comment/7\",[]],[\"name/8\",[8,63.279]],[\"comment/8\",[]],[\"name/9\",[9,38.712]],[\"comment/9\",[]],[\"name/10\",[10,63.279]],[\"comment/10\",[]],[\"name/11\",[11,63.279]],[\"comment/11\",[]],[\"name/12\",[12,63.279]],[\"comment/12\",[]],[\"name/13\",[13,63.279]],[\"comment/13\",[]],[\"name/14\",[14,47.185]],[\"comment/14\",[]],[\"name/15\",[15,47.185]],[\"comment/15\",[]],[\"name/16\",[16,63.279]],[\"comment/16\",[]],[\"name/17\",[17,63.279]],[\"comment/17\",[]],[\"name/18\",[18,63.279]],[\"comment/18\",[]],[\"name/19\",[19,63.279]],[\"comment/19\",[]],[\"name/20\",[20,63.279]],[\"comment/20\",[]],[\"name/21\",[21,63.279]],[\"comment/21\",[]],[\"name/22\",[22,63.279]],[\"comment/22\",[]],[\"name/23\",[23,63.279]],[\"comment/23\",[]],[\"name/24\",[24,63.279]],[\"comment/24\",[]],[\"name/25\",[25,63.279]],[\"comment/25\",[]],[\"name/26\",[26,48.616]],[\"comment/26\",[]],[\"name/27\",[9,38.712]],[\"comment/27\",[]],[\"name/28\",[27,54.806]],[\"comment/28\",[]],[\"name/29\",[28,58.171]],[\"comment/29\",[]],[\"name/30\",[29,63.279]],[\"comment/30\",[]],[\"name/31\",[30,54.806]],[\"comment/31\",[]],[\"name/32\",[31,63.279]],[\"comment/32\",[]],[\"name/33\",[32,63.279]],[\"comment/33\",[]],[\"name/34\",[33,52.293]],[\"comment/34\",[]],[\"name/35\",[34,63.279]],[\"comment/35\",[]],[\"name/36\",[35,63.279]],[\"comment/36\",[]],[\"name/37\",[36,63.279]],[\"comment/37\",[]],[\"name/38\",[37,54.806]],[\"comment/38\",[]],[\"name/39\",[1,35.764]],[\"comment/39\",[]],[\"name/40\",[2,47.185]],[\"comment/40\",[]],[\"name/41\",[38,36.653]],[\"comment/41\",[]],[\"name/42\",[39,63.279]],[\"comment/42\",[]],[\"name/43\",[27,54.806]],[\"comment/43\",[]],[\"name/44\",[40,54.806]],[\"comment/44\",[]],[\"name/45\",[27,54.806]],[\"comment/45\",[]],[\"name/46\",[41,48.616]],[\"comment/46\",[]],[\"name/47\",[42,48.616]],[\"comment/47\",[]],[\"name/48\",[43,63.279]],[\"comment/48\",[]],[\"name/49\",[44,63.279]],[\"comment/49\",[]],[\"name/50\",[45,58.171]],[\"comment/50\",[]],[\"name/51\",[46,63.279]],[\"comment/51\",[]],[\"name/52\",[47,63.279]],[\"comment/52\",[]],[\"name/53\",[48,63.279]],[\"comment/53\",[]],[\"name/54\",[49,63.279]],[\"comment/54\",[]],[\"name/55\",[50,63.279]],[\"comment/55\",[]],[\"name/56\",[51,63.279]],[\"comment/56\",[]],[\"name/57\",[40,54.806]],[\"comment/57\",[]],[\"name/58\",[52,44.821]],[\"comment/58\",[]],[\"name/59\",[9,38.712]],[\"comment/59\",[]],[\"name/60\",[53,48.616]],[\"comment/60\",[]],[\"name/61\",[54,48.616]],[\"comment/61\",[]],[\"name/62\",[55,48.616]],[\"comment/62\",[]],[\"name/63\",[4,45.933]],[\"comment/63\",[]],[\"name/64\",[56,48.616]],[\"comment/64\",[]],[\"name/65\",[3,39.3]],[\"comment/65\",[]],[\"name/66\",[57,48.616]],[\"comment/66\",[]],[\"name/67\",[58,48.616]],[\"comment/67\",[]],[\"name/68\",[59,48.616]],[\"comment/68\",[]],[\"name/69\",[15,47.185]],[\"comment/69\",[]],[\"name/70\",[60,48.616]],[\"comment/70\",[]],[\"name/71\",[61,48.616]],[\"comment/71\",[]],[\"name/72\",[62,47.185]],[\"comment/72\",[]],[\"name/73\",[63,48.616]],[\"comment/73\",[]],[\"name/74\",[64,48.616]],[\"comment/74\",[]],[\"name/75\",[65,63.279]],[\"comment/75\",[]],[\"name/76\",[1,35.764]],[\"comment/76\",[]],[\"name/77\",[38,36.653]],[\"comment/77\",[]],[\"name/78\",[66,48.616]],[\"comment/78\",[]],[\"name/79\",[3,39.3]],[\"comment/79\",[]],[\"name/80\",[67,47.185]],[\"comment/80\",[]],[\"name/81\",[68,47.185]],[\"comment/81\",[]],[\"name/82\",[14,47.185]],[\"comment/82\",[]],[\"name/83\",[69,47.185]],[\"comment/83\",[]],[\"name/84\",[70,48.616]],[\"comment/84\",[]],[\"name/85\",[71,48.616]],[\"comment/85\",[]],[\"name/86\",[72,63.279]],[\"comment/86\",[]],[\"name/87\",[73,40.593]],[\"comment/87\",[]],[\"name/88\",[38,36.653]],[\"comment/88\",[]],[\"name/89\",[4,45.933]],[\"comment/89\",[]],[\"name/90\",[9,38.712]],[\"comment/90\",[]],[\"name/91\",[26,48.616]],[\"comment/91\",[]],[\"name/92\",[74,63.279]],[\"comment/92\",[]],[\"name/93\",[1,35.764]],[\"comment/93\",[]],[\"name/94\",[38,36.653]],[\"comment/94\",[]],[\"name/95\",[3,39.3]],[\"comment/95\",[]],[\"name/96\",[75,63.279]],[\"comment/96\",[]],[\"name/97\",[67,47.185]],[\"comment/97\",[]],[\"name/98\",[68,47.185]],[\"comment/98\",[]],[\"name/99\",[14,47.185]],[\"comment/99\",[]],[\"name/100\",[69,47.185]],[\"comment/100\",[]],[\"name/101\",[70,48.616]],[\"comment/101\",[]],[\"name/102\",[71,48.616]],[\"comment/102\",[]],[\"name/103\",[66,48.616]],[\"comment/103\",[]],[\"name/104\",[26,48.616]],[\"comment/104\",[]],[\"name/105\",[1,35.764]],[\"comment/105\",[]],[\"name/106\",[38,36.653]],[\"comment/106\",[]],[\"name/107\",[52,44.821]],[\"comment/107\",[]],[\"name/108\",[9,38.712]],[\"comment/108\",[]],[\"name/109\",[53,48.616]],[\"comment/109\",[]],[\"name/110\",[54,48.616]],[\"comment/110\",[]],[\"name/111\",[55,48.616]],[\"comment/111\",[]],[\"name/112\",[4,45.933]],[\"comment/112\",[]],[\"name/113\",[56,48.616]],[\"comment/113\",[]],[\"name/114\",[3,39.3]],[\"comment/114\",[]],[\"name/115\",[57,48.616]],[\"comment/115\",[]],[\"name/116\",[58,48.616]],[\"comment/116\",[]],[\"name/117\",[76,63.279]],[\"comment/117\",[]],[\"name/118\",[59,48.616]],[\"comment/118\",[]],[\"name/119\",[15,47.185]],[\"comment/119\",[]],[\"name/120\",[60,48.616]],[\"comment/120\",[]],[\"name/121\",[77,63.279]],[\"comment/121\",[]],[\"name/122\",[78,63.279]],[\"comment/122\",[]],[\"name/123\",[61,48.616]],[\"comment/123\",[]],[\"name/124\",[62,47.185]],[\"comment/124\",[]],[\"name/125\",[63,48.616]],[\"comment/125\",[]],[\"name/126\",[64,48.616]],[\"comment/126\",[]],[\"name/127\",[41,48.616]],[\"comment/127\",[]],[\"name/128\",[42,48.616]],[\"comment/128\",[]],[\"name/129\",[79,58.171]],[\"comment/129\",[]],[\"name/130\",[80,63.279]],[\"comment/130\",[]],[\"name/131\",[81,58.171]],[\"comment/131\",[]],[\"name/132\",[82,63.279]],[\"comment/132\",[]],[\"name/133\",[26,48.616]],[\"comment/133\",[]],[\"name/134\",[9,38.712]],[\"comment/134\",[]],[\"name/135\",[38,36.653]],[\"comment/135\",[]],[\"name/136\",[83,63.279]],[\"comment/136\",[]],[\"name/137\",[73,40.593]],[\"comment/137\",[]],[\"name/138\",[84,58.171]],[\"comment/138\",[]],[\"name/139\",[85,58.171]],[\"comment/139\",[]],[\"name/140\",[86,63.279]],[\"comment/140\",[]],[\"name/141\",[87,63.279]],[\"comment/141\",[]],[\"name/142\",[88,63.279]],[\"comment/142\",[]],[\"name/143\",[89,63.279]],[\"comment/143\",[]],[\"name/144\",[1,35.764]],[\"comment/144\",[]],[\"name/145\",[38,36.653]],[\"comment/145\",[]],[\"name/146\",[90,63.279]],[\"comment/146\",[]],[\"name/147\",[66,48.616]],[\"comment/147\",[]],[\"name/148\",[3,39.3]],[\"comment/148\",[]],[\"name/149\",[67,47.185]],[\"comment/149\",[]],[\"name/150\",[68,47.185]],[\"comment/150\",[]],[\"name/151\",[14,47.185]],[\"comment/151\",[]],[\"name/152\",[69,47.185]],[\"comment/152\",[]],[\"name/153\",[70,48.616]],[\"comment/153\",[]],[\"name/154\",[71,48.616]],[\"comment/154\",[]],[\"name/155\",[91,54.806]],[\"comment/155\",[]],[\"name/156\",[1,35.764]],[\"comment/156\",[]],[\"name/157\",[38,36.653]],[\"comment/157\",[]],[\"name/158\",[92,58.171]],[\"comment/158\",[]],[\"name/159\",[93,63.279]],[\"comment/159\",[]],[\"name/160\",[94,63.279]],[\"comment/160\",[]],[\"name/161\",[41,48.616]],[\"comment/161\",[]],[\"name/162\",[42,48.616]],[\"comment/162\",[]],[\"name/163\",[95,63.279]],[\"comment/163\",[]],[\"name/164\",[96,63.279]],[\"comment/164\",[]],[\"name/165\",[52,44.821]],[\"comment/165\",[]],[\"name/166\",[9,38.712]],[\"comment/166\",[]],[\"name/167\",[53,48.616]],[\"comment/167\",[]],[\"name/168\",[54,48.616]],[\"comment/168\",[]],[\"name/169\",[55,48.616]],[\"comment/169\",[]],[\"name/170\",[4,45.933]],[\"comment/170\",[]],[\"name/171\",[56,48.616]],[\"comment/171\",[]],[\"name/172\",[3,39.3]],[\"comment/172\",[]],[\"name/173\",[57,48.616]],[\"comment/173\",[]],[\"name/174\",[58,48.616]],[\"comment/174\",[]],[\"name/175\",[59,48.616]],[\"comment/175\",[]],[\"name/176\",[15,47.185]],[\"comment/176\",[]],[\"name/177\",[60,48.616]],[\"comment/177\",[]],[\"name/178\",[61,48.616]],[\"comment/178\",[]],[\"name/179\",[62,47.185]],[\"comment/179\",[]],[\"name/180\",[63,48.616]],[\"comment/180\",[]],[\"name/181\",[64,48.616]],[\"comment/181\",[]],[\"name/182\",[97,63.279]],[\"comment/182\",[]],[\"name/183\",[9,38.712]],[\"comment/183\",[]],[\"name/184\",[98,63.279]],[\"comment/184\",[]],[\"name/185\",[1,35.764]],[\"comment/185\",[]],[\"name/186\",[38,36.653]],[\"comment/186\",[]],[\"name/187\",[66,48.616]],[\"comment/187\",[]],[\"name/188\",[3,39.3]],[\"comment/188\",[]],[\"name/189\",[67,47.185]],[\"comment/189\",[]],[\"name/190\",[68,47.185]],[\"comment/190\",[]],[\"name/191\",[14,47.185]],[\"comment/191\",[]],[\"name/192\",[69,47.185]],[\"comment/192\",[]],[\"name/193\",[70,48.616]],[\"comment/193\",[]],[\"name/194\",[71,48.616]],[\"comment/194\",[]],[\"name/195\",[99,54.806]],[\"comment/195\",[]],[\"name/196\",[1,35.764]],[\"comment/196\",[]],[\"name/197\",[38,36.653]],[\"comment/197\",[]],[\"name/198\",[56,48.616]],[\"comment/198\",[]],[\"name/199\",[100,63.279]],[\"comment/199\",[]],[\"name/200\",[41,48.616]],[\"comment/200\",[]],[\"name/201\",[42,48.616]],[\"comment/201\",[]],[\"name/202\",[101,63.279]],[\"comment/202\",[]],[\"name/203\",[102,63.279]],[\"comment/203\",[]],[\"name/204\",[52,44.821]],[\"comment/204\",[]],[\"name/205\",[9,38.712]],[\"comment/205\",[]],[\"name/206\",[53,48.616]],[\"comment/206\",[]],[\"name/207\",[54,48.616]],[\"comment/207\",[]],[\"name/208\",[55,48.616]],[\"comment/208\",[]],[\"name/209\",[4,45.933]],[\"comment/209\",[]],[\"name/210\",[3,39.3]],[\"comment/210\",[]],[\"name/211\",[57,48.616]],[\"comment/211\",[]],[\"name/212\",[58,48.616]],[\"comment/212\",[]],[\"name/213\",[59,48.616]],[\"comment/213\",[]],[\"name/214\",[15,47.185]],[\"comment/214\",[]],[\"name/215\",[60,48.616]],[\"comment/215\",[]],[\"name/216\",[61,48.616]],[\"comment/216\",[]],[\"name/217\",[62,47.185]],[\"comment/217\",[]],[\"name/218\",[63,48.616]],[\"comment/218\",[]],[\"name/219\",[64,48.616]],[\"comment/219\",[]],[\"name/220\",[103,58.171]],[\"comment/220\",[]],[\"name/221\",[26,48.616]],[\"comment/221\",[]],[\"name/222\",[9,38.712]],[\"comment/222\",[]],[\"name/223\",[104,63.279]],[\"comment/223\",[]],[\"name/224\",[105,58.171]],[\"comment/224\",[]],[\"name/225\",[106,63.279]],[\"comment/225\",[]],[\"name/226\",[107,63.279]],[\"comment/226\",[]],[\"name/227\",[1,35.764]],[\"comment/227\",[]],[\"name/228\",[2,47.185]],[\"comment/228\",[]],[\"name/229\",[38,36.653]],[\"comment/229\",[]],[\"name/230\",[108,63.279]],[\"comment/230\",[]],[\"name/231\",[109,58.171]],[\"comment/231\",[]],[\"name/232\",[110,63.279]],[\"comment/232\",[]],[\"name/233\",[66,48.616]],[\"comment/233\",[]],[\"name/234\",[3,39.3]],[\"comment/234\",[]],[\"name/235\",[67,47.185]],[\"comment/235\",[]],[\"name/236\",[68,47.185]],[\"comment/236\",[]],[\"name/237\",[14,47.185]],[\"comment/237\",[]],[\"name/238\",[69,47.185]],[\"comment/238\",[]],[\"name/239\",[70,48.616]],[\"comment/239\",[]],[\"name/240\",[71,48.616]],[\"comment/240\",[]],[\"name/241\",[111,54.806]],[\"comment/241\",[]],[\"name/242\",[1,35.764]],[\"comment/242\",[]],[\"name/243\",[2,47.185]],[\"comment/243\",[]],[\"name/244\",[38,36.653]],[\"comment/244\",[]],[\"name/245\",[92,58.171]],[\"comment/245\",[]],[\"name/246\",[112,63.279]],[\"comment/246\",[]],[\"name/247\",[113,63.279]],[\"comment/247\",[]],[\"name/248\",[114,63.279]],[\"comment/248\",[]],[\"name/249\",[56,48.616]],[\"comment/249\",[]],[\"name/250\",[109,58.171]],[\"comment/250\",[]],[\"name/251\",[115,63.279]],[\"comment/251\",[]],[\"name/252\",[116,63.279]],[\"comment/252\",[]],[\"name/253\",[41,48.616]],[\"comment/253\",[]],[\"name/254\",[42,48.616]],[\"comment/254\",[]],[\"name/255\",[52,44.821]],[\"comment/255\",[]],[\"name/256\",[9,38.712]],[\"comment/256\",[]],[\"name/257\",[53,48.616]],[\"comment/257\",[]],[\"name/258\",[54,48.616]],[\"comment/258\",[]],[\"name/259\",[55,48.616]],[\"comment/259\",[]],[\"name/260\",[4,45.933]],[\"comment/260\",[]],[\"name/261\",[3,39.3]],[\"comment/261\",[]],[\"name/262\",[57,48.616]],[\"comment/262\",[]],[\"name/263\",[58,48.616]],[\"comment/263\",[]],[\"name/264\",[59,48.616]],[\"comment/264\",[]],[\"name/265\",[15,47.185]],[\"comment/265\",[]],[\"name/266\",[60,48.616]],[\"comment/266\",[]],[\"name/267\",[61,48.616]],[\"comment/267\",[]],[\"name/268\",[62,47.185]],[\"comment/268\",[]],[\"name/269\",[63,48.616]],[\"comment/269\",[]],[\"name/270\",[64,48.616]],[\"comment/270\",[]],[\"name/271\",[117,63.279]],[\"comment/271\",[]],[\"name/272\",[118,63.279]],[\"comment/272\",[]],[\"name/273\",[119,58.171]],[\"comment/273\",[]],[\"name/274\",[120,63.279]],[\"comment/274\",[]],[\"name/275\",[1,35.764]],[\"comment/275\",[]],[\"name/276\",[38,36.653]],[\"comment/276\",[]],[\"name/277\",[66,48.616]],[\"comment/277\",[]],[\"name/278\",[3,39.3]],[\"comment/278\",[]],[\"name/279\",[67,47.185]],[\"comment/279\",[]],[\"name/280\",[68,47.185]],[\"comment/280\",[]],[\"name/281\",[14,47.185]],[\"comment/281\",[]],[\"name/282\",[69,47.185]],[\"comment/282\",[]],[\"name/283\",[70,48.616]],[\"comment/283\",[]],[\"name/284\",[71,48.616]],[\"comment/284\",[]],[\"name/285\",[121,58.171]],[\"comment/285\",[]],[\"name/286\",[1,35.764]],[\"comment/286\",[]],[\"name/287\",[38,36.653]],[\"comment/287\",[]],[\"name/288\",[56,48.616]],[\"comment/288\",[]],[\"name/289\",[122,63.279]],[\"comment/289\",[]],[\"name/290\",[123,63.279]],[\"comment/290\",[]],[\"name/291\",[124,63.279]],[\"comment/291\",[]],[\"name/292\",[125,63.279]],[\"comment/292\",[]],[\"name/293\",[126,63.279]],[\"comment/293\",[]],[\"name/294\",[127,63.279]],[\"comment/294\",[]],[\"name/295\",[128,63.279]],[\"comment/295\",[]],[\"name/296\",[41,48.616]],[\"comment/296\",[]],[\"name/297\",[129,63.279]],[\"comment/297\",[]],[\"name/298\",[42,48.616]],[\"comment/298\",[]],[\"name/299\",[52,44.821]],[\"comment/299\",[]],[\"name/300\",[9,38.712]],[\"comment/300\",[]],[\"name/301\",[53,48.616]],[\"comment/301\",[]],[\"name/302\",[54,48.616]],[\"comment/302\",[]],[\"name/303\",[55,48.616]],[\"comment/303\",[]],[\"name/304\",[4,45.933]],[\"comment/304\",[]],[\"name/305\",[3,39.3]],[\"comment/305\",[]],[\"name/306\",[57,48.616]],[\"comment/306\",[]],[\"name/307\",[58,48.616]],[\"comment/307\",[]],[\"name/308\",[59,48.616]],[\"comment/308\",[]],[\"name/309\",[15,47.185]],[\"comment/309\",[]],[\"name/310\",[60,48.616]],[\"comment/310\",[]],[\"name/311\",[61,48.616]],[\"comment/311\",[]],[\"name/312\",[62,47.185]],[\"comment/312\",[]],[\"name/313\",[63,48.616]],[\"comment/313\",[]],[\"name/314\",[64,48.616]],[\"comment/314\",[]],[\"name/315\",[130,63.279]],[\"comment/315\",[]],[\"name/316\",[131,63.279]],[\"comment/316\",[]],[\"name/317\",[1,35.764]],[\"comment/317\",[]],[\"name/318\",[7,58.171]],[\"comment/318\",[]],[\"name/319\",[132,54.806]],[\"comment/319\",[]],[\"name/320\",[133,54.806]],[\"comment/320\",[]],[\"name/321\",[134,63.279]],[\"comment/321\",[]],[\"name/322\",[0,58.171]],[\"comment/322\",[]],[\"name/323\",[91,54.806]],[\"comment/323\",[]],[\"name/324\",[37,54.806]],[\"comment/324\",[]],[\"name/325\",[111,54.806]],[\"comment/325\",[]],[\"name/326\",[135,63.279]],[\"comment/326\",[]],[\"name/327\",[136,58.171]],[\"comment/327\",[]],[\"name/328\",[30,54.806]],[\"comment/328\",[]],[\"name/329\",[137,63.279]],[\"comment/329\",[]],[\"name/330\",[99,54.806]],[\"comment/330\",[]],[\"name/331\",[138,63.279]],[\"comment/331\",[]],[\"name/332\",[139,63.279]],[\"comment/332\",[]],[\"name/333\",[140,63.279]],[\"comment/333\",[]],[\"name/334\",[141,63.279]],[\"comment/334\",[]],[\"name/335\",[142,63.279]],[\"comment/335\",[]],[\"name/336\",[143,63.279]],[\"comment/336\",[]],[\"name/337\",[144,63.279]],[\"comment/337\",[]],[\"name/338\",[145,63.279]],[\"comment/338\",[]],[\"name/339\",[146,63.279]],[\"comment/339\",[]],[\"name/340\",[147,63.279]],[\"comment/340\",[]],[\"name/341\",[148,63.279]],[\"comment/341\",[]],[\"name/342\",[149,63.279]],[\"comment/342\",[]],[\"name/343\",[150,63.279]],[\"comment/343\",[]],[\"name/344\",[151,54.806]],[\"comment/344\",[]],[\"name/345\",[152,63.279]],[\"comment/345\",[]],[\"name/346\",[153,63.279]],[\"comment/346\",[]],[\"name/347\",[154,63.279]],[\"comment/347\",[]],[\"name/348\",[155,63.279]],[\"comment/348\",[]],[\"name/349\",[119,58.171]],[\"comment/349\",[]],[\"name/350\",[156,63.279]],[\"comment/350\",[]],[\"name/351\",[157,63.279]],[\"comment/351\",[]],[\"name/352\",[73,40.593]],[\"comment/352\",[]],[\"name/353\",[79,58.171]],[\"comment/353\",[]],[\"name/354\",[73,40.593]],[\"comment/354\",[]],[\"name/355\",[158,63.279]],[\"comment/355\",[]],[\"name/356\",[159,63.279]],[\"comment/356\",[]],[\"name/357\",[160,63.279]],[\"comment/357\",[]],[\"name/358\",[161,63.279]],[\"comment/358\",[]],[\"name/359\",[162,63.279]],[\"comment/359\",[]],[\"name/360\",[163,63.279]],[\"comment/360\",[]],[\"name/361\",[164,63.279]],[\"comment/361\",[]],[\"name/362\",[165,63.279]],[\"comment/362\",[]],[\"name/363\",[166,63.279]],[\"comment/363\",[]],[\"name/364\",[167,63.279]],[\"comment/364\",[]],[\"name/365\",[168,63.279]],[\"comment/365\",[]],[\"name/366\",[169,63.279]],[\"comment/366\",[]],[\"name/367\",[170,63.279]],[\"comment/367\",[]],[\"name/368\",[171,63.279]],[\"comment/368\",[]],[\"name/369\",[172,63.279]],[\"comment/369\",[]],[\"name/370\",[173,63.279]],[\"comment/370\",[]],[\"name/371\",[174,63.279]],[\"comment/371\",[]],[\"name/372\",[175,63.279]],[\"comment/372\",[]],[\"name/373\",[176,63.279]],[\"comment/373\",[]],[\"name/374\",[177,63.279]],[\"comment/374\",[]],[\"name/375\",[178,63.279]],[\"comment/375\",[]],[\"name/376\",[179,63.279]],[\"comment/376\",[]],[\"name/377\",[180,63.279]],[\"comment/377\",[]],[\"name/378\",[181,63.279]],[\"comment/378\",[]],[\"name/379\",[182,63.279]],[\"comment/379\",[]],[\"name/380\",[183,63.279]],[\"comment/380\",[]],[\"name/381\",[184,63.279]],[\"comment/381\",[]],[\"name/382\",[185,63.279]],[\"comment/382\",[]],[\"name/383\",[186,63.279]],[\"comment/383\",[]],[\"name/384\",[187,63.279]],[\"comment/384\",[]],[\"name/385\",[188,63.279]],[\"comment/385\",[]],[\"name/386\",[189,63.279]],[\"comment/386\",[]],[\"name/387\",[190,63.279]],[\"comment/387\",[]],[\"name/388\",[191,63.279]],[\"comment/388\",[]],[\"name/389\",[192,63.279]],[\"comment/389\",[]],[\"name/390\",[193,63.279]],[\"comment/390\",[]],[\"name/391\",[194,63.279]],[\"comment/391\",[]],[\"name/392\",[195,63.279]],[\"comment/392\",[]],[\"name/393\",[196,63.279]],[\"comment/393\",[]],[\"name/394\",[197,63.279]],[\"comment/394\",[]],[\"name/395\",[198,63.279]],[\"comment/395\",[]],[\"name/396\",[199,63.279]],[\"comment/396\",[]],[\"name/397\",[200,63.279]],[\"comment/397\",[]],[\"name/398\",[201,63.279]],[\"comment/398\",[]],[\"name/399\",[202,63.279]],[\"comment/399\",[]],[\"name/400\",[203,63.279]],[\"comment/400\",[]],[\"name/401\",[204,63.279]],[\"comment/401\",[]],[\"name/402\",[205,63.279]],[\"comment/402\",[]],[\"name/403\",[206,63.279]],[\"comment/403\",[]],[\"name/404\",[207,63.279]],[\"comment/404\",[]],[\"name/405\",[208,63.279]],[\"comment/405\",[]],[\"name/406\",[209,63.279]],[\"comment/406\",[]],[\"name/407\",[210,63.279]],[\"comment/407\",[]],[\"name/408\",[211,63.279]],[\"comment/408\",[]],[\"name/409\",[212,63.279]],[\"comment/409\",[]],[\"name/410\",[213,63.279]],[\"comment/410\",[]],[\"name/411\",[214,63.279]],[\"comment/411\",[]],[\"name/412\",[215,63.279]],[\"comment/412\",[]],[\"name/413\",[216,63.279]],[\"comment/413\",[]],[\"name/414\",[217,63.279]],[\"comment/414\",[]],[\"name/415\",[218,63.279]],[\"comment/415\",[]],[\"name/416\",[219,63.279]],[\"comment/416\",[]],[\"name/417\",[220,63.279]],[\"comment/417\",[]],[\"name/418\",[221,63.279]],[\"comment/418\",[]],[\"name/419\",[222,63.279]],[\"comment/419\",[]],[\"name/420\",[223,63.279]],[\"comment/420\",[]],[\"name/421\",[224,63.279]],[\"comment/421\",[]],[\"name/422\",[225,63.279]],[\"comment/422\",[]],[\"name/423\",[226,63.279]],[\"comment/423\",[]],[\"name/424\",[227,63.279]],[\"comment/424\",[]],[\"name/425\",[228,63.279]],[\"comment/425\",[]],[\"name/426\",[229,63.279]],[\"comment/426\",[]],[\"name/427\",[230,63.279]],[\"comment/427\",[]],[\"name/428\",[231,63.279]],[\"comment/428\",[]],[\"name/429\",[232,63.279]],[\"comment/429\",[]],[\"name/430\",[233,63.279]],[\"comment/430\",[]],[\"name/431\",[234,63.279]],[\"comment/431\",[]],[\"name/432\",[235,63.279]],[\"comment/432\",[]],[\"name/433\",[236,63.279]],[\"comment/433\",[]],[\"name/434\",[237,63.279]],[\"comment/434\",[]],[\"name/435\",[238,63.279]],[\"comment/435\",[]],[\"name/436\",[239,63.279]],[\"comment/436\",[]],[\"name/437\",[240,63.279]],[\"comment/437\",[]],[\"name/438\",[241,63.279]],[\"comment/438\",[]],[\"name/439\",[242,63.279]],[\"comment/439\",[]],[\"name/440\",[243,63.279]],[\"comment/440\",[]],[\"name/441\",[244,63.279]],[\"comment/441\",[]],[\"name/442\",[245,63.279]],[\"comment/442\",[]],[\"name/443\",[246,63.279]],[\"comment/443\",[]],[\"name/444\",[247,63.279]],[\"comment/444\",[]],[\"name/445\",[248,63.279]],[\"comment/445\",[]],[\"name/446\",[249,63.279]],[\"comment/446\",[]],[\"name/447\",[250,63.279]],[\"comment/447\",[]],[\"name/448\",[251,63.279]],[\"comment/448\",[]],[\"name/449\",[252,63.279]],[\"comment/449\",[]],[\"name/450\",[253,63.279]],[\"comment/450\",[]],[\"name/451\",[254,63.279]],[\"comment/451\",[]],[\"name/452\",[255,63.279]],[\"comment/452\",[]],[\"name/453\",[256,63.279]],[\"comment/453\",[]],[\"name/454\",[257,63.279]],[\"comment/454\",[]],[\"name/455\",[258,63.279]],[\"comment/455\",[]],[\"name/456\",[259,63.279]],[\"comment/456\",[]],[\"name/457\",[260,63.279]],[\"comment/457\",[]],[\"name/458\",[261,63.279]],[\"comment/458\",[]],[\"name/459\",[262,63.279]],[\"comment/459\",[]],[\"name/460\",[263,63.279]],[\"comment/460\",[]],[\"name/461\",[264,63.279]],[\"comment/461\",[]],[\"name/462\",[265,63.279]],[\"comment/462\",[]],[\"name/463\",[266,63.279]],[\"comment/463\",[]],[\"name/464\",[267,63.279]],[\"comment/464\",[]],[\"name/465\",[268,63.279]],[\"comment/465\",[]],[\"name/466\",[269,63.279]],[\"comment/466\",[]],[\"name/467\",[270,63.279]],[\"comment/467\",[]],[\"name/468\",[271,63.279]],[\"comment/468\",[]],[\"name/469\",[272,63.279]],[\"comment/469\",[]],[\"name/470\",[273,63.279]],[\"comment/470\",[]],[\"name/471\",[274,63.279]],[\"comment/471\",[]],[\"name/472\",[275,63.279]],[\"comment/472\",[]],[\"name/473\",[276,63.279]],[\"comment/473\",[]],[\"name/474\",[277,63.279]],[\"comment/474\",[]],[\"name/475\",[278,63.279]],[\"comment/475\",[]],[\"name/476\",[279,63.279]],[\"comment/476\",[]],[\"name/477\",[280,63.279]],[\"comment/477\",[]],[\"name/478\",[281,63.279]],[\"comment/478\",[]],[\"name/479\",[282,63.279]],[\"comment/479\",[]],[\"name/480\",[283,63.279]],[\"comment/480\",[]],[\"name/481\",[284,63.279]],[\"comment/481\",[]],[\"name/482\",[285,63.279]],[\"comment/482\",[]],[\"name/483\",[286,63.279]],[\"comment/483\",[]],[\"name/484\",[287,63.279]],[\"comment/484\",[]],[\"name/485\",[288,63.279]],[\"comment/485\",[]],[\"name/486\",[289,63.279]],[\"comment/486\",[]],[\"name/487\",[290,63.279]],[\"comment/487\",[]],[\"name/488\",[291,63.279]],[\"comment/488\",[]],[\"name/489\",[292,63.279]],[\"comment/489\",[]],[\"name/490\",[293,63.279]],[\"comment/490\",[]],[\"name/491\",[294,63.279]],[\"comment/491\",[]],[\"name/492\",[295,63.279]],[\"comment/492\",[]],[\"name/493\",[296,63.279]],[\"comment/493\",[]],[\"name/494\",[297,63.279]],[\"comment/494\",[]],[\"name/495\",[298,63.279]],[\"comment/495\",[]],[\"name/496\",[299,63.279]],[\"comment/496\",[]],[\"name/497\",[300,63.279]],[\"comment/497\",[]],[\"name/498\",[301,63.279]],[\"comment/498\",[]],[\"name/499\",[302,63.279]],[\"comment/499\",[]],[\"name/500\",[303,63.279]],[\"comment/500\",[]],[\"name/501\",[304,63.279]],[\"comment/501\",[]],[\"name/502\",[305,63.279]],[\"comment/502\",[]],[\"name/503\",[306,63.279]],[\"comment/503\",[]],[\"name/504\",[307,63.279]],[\"comment/504\",[]],[\"name/505\",[308,63.279]],[\"comment/505\",[]],[\"name/506\",[309,63.279]],[\"comment/506\",[]],[\"name/507\",[310,63.279]],[\"comment/507\",[]],[\"name/508\",[311,63.279]],[\"comment/508\",[]],[\"name/509\",[312,63.279]],[\"comment/509\",[]],[\"name/510\",[313,63.279]],[\"comment/510\",[]],[\"name/511\",[314,63.279]],[\"comment/511\",[]],[\"name/512\",[315,63.279]],[\"comment/512\",[]],[\"name/513\",[316,63.279]],[\"comment/513\",[]],[\"name/514\",[317,63.279]],[\"comment/514\",[]],[\"name/515\",[318,63.279]],[\"comment/515\",[]],[\"name/516\",[319,63.279]],[\"comment/516\",[]],[\"name/517\",[320,63.279]],[\"comment/517\",[]],[\"name/518\",[321,63.279]],[\"comment/518\",[]],[\"name/519\",[322,63.279]],[\"comment/519\",[]],[\"name/520\",[323,63.279]],[\"comment/520\",[]],[\"name/521\",[324,63.279]],[\"comment/521\",[]],[\"name/522\",[325,63.279]],[\"comment/522\",[]],[\"name/523\",[326,63.279]],[\"comment/523\",[]],[\"name/524\",[327,63.279]],[\"comment/524\",[]],[\"name/525\",[328,63.279]],[\"comment/525\",[]],[\"name/526\",[329,63.279]],[\"comment/526\",[]],[\"name/527\",[330,63.279]],[\"comment/527\",[]],[\"name/528\",[331,63.279]],[\"comment/528\",[]],[\"name/529\",[332,63.279]],[\"comment/529\",[]],[\"name/530\",[333,63.279]],[\"comment/530\",[]],[\"name/531\",[334,63.279]],[\"comment/531\",[]],[\"name/532\",[335,63.279]],[\"comment/532\",[]],[\"name/533\",[336,63.279]],[\"comment/533\",[]],[\"name/534\",[337,63.279]],[\"comment/534\",[]],[\"name/535\",[338,63.279]],[\"comment/535\",[]],[\"name/536\",[339,63.279]],[\"comment/536\",[]],[\"name/537\",[340,63.279]],[\"comment/537\",[]],[\"name/538\",[341,63.279]],[\"comment/538\",[]],[\"name/539\",[342,63.279]],[\"comment/539\",[]],[\"name/540\",[343,63.279]],[\"comment/540\",[]],[\"name/541\",[344,63.279]],[\"comment/541\",[]],[\"name/542\",[345,63.279]],[\"comment/542\",[]],[\"name/543\",[346,63.279]],[\"comment/543\",[]],[\"name/544\",[347,63.279]],[\"comment/544\",[]],[\"name/545\",[348,63.279]],[\"comment/545\",[]],[\"name/546\",[349,63.279]],[\"comment/546\",[]],[\"name/547\",[350,63.279]],[\"comment/547\",[]],[\"name/548\",[351,63.279]],[\"comment/548\",[]],[\"name/549\",[352,63.279]],[\"comment/549\",[]],[\"name/550\",[353,63.279]],[\"comment/550\",[]],[\"name/551\",[354,63.279]],[\"comment/551\",[]],[\"name/552\",[355,63.279]],[\"comment/552\",[]],[\"name/553\",[356,63.279]],[\"comment/553\",[]],[\"name/554\",[357,63.279]],[\"comment/554\",[]],[\"name/555\",[358,63.279]],[\"comment/555\",[]],[\"name/556\",[359,63.279]],[\"comment/556\",[]],[\"name/557\",[360,63.279]],[\"comment/557\",[]],[\"name/558\",[361,63.279]],[\"comment/558\",[]],[\"name/559\",[362,63.279]],[\"comment/559\",[]],[\"name/560\",[363,63.279]],[\"comment/560\",[]],[\"name/561\",[364,63.279]],[\"comment/561\",[]],[\"name/562\",[365,63.279]],[\"comment/562\",[]],[\"name/563\",[366,63.279]],[\"comment/563\",[]],[\"name/564\",[367,63.279]],[\"comment/564\",[]],[\"name/565\",[368,63.279]],[\"comment/565\",[]],[\"name/566\",[369,63.279]],[\"comment/566\",[]],[\"name/567\",[370,63.279]],[\"comment/567\",[]],[\"name/568\",[371,63.279]],[\"comment/568\",[]],[\"name/569\",[372,63.279]],[\"comment/569\",[]],[\"name/570\",[81,58.171]],[\"comment/570\",[]],[\"name/571\",[73,40.593]],[\"comment/571\",[]],[\"name/572\",[373,63.279]],[\"comment/572\",[]],[\"name/573\",[374,63.279]],[\"comment/573\",[]],[\"name/574\",[375,63.279]],[\"comment/574\",[]],[\"name/575\",[376,63.279]],[\"comment/575\",[]],[\"name/576\",[377,63.279]],[\"comment/576\",[]],[\"name/577\",[378,63.279]],[\"comment/577\",[]],[\"name/578\",[379,63.279]],[\"comment/578\",[]],[\"name/579\",[380,63.279]],[\"comment/579\",[]],[\"name/580\",[381,63.279]],[\"comment/580\",[]],[\"name/581\",[382,63.279]],[\"comment/581\",[]],[\"name/582\",[383,63.279]],[\"comment/582\",[]],[\"name/583\",[384,58.171]],[\"comment/583\",[]],[\"name/584\",[385,63.279]],[\"comment/584\",[]],[\"name/585\",[386,63.279]],[\"comment/585\",[]],[\"name/586\",[387,63.279]],[\"comment/586\",[]],[\"name/587\",[388,63.279]],[\"comment/587\",[]],[\"name/588\",[389,52.293]],[\"comment/588\",[]],[\"name/589\",[390,63.279]],[\"comment/589\",[]],[\"name/590\",[391,63.279]],[\"comment/590\",[]],[\"name/591\",[392,63.279]],[\"comment/591\",[]],[\"name/592\",[393,63.279]],[\"comment/592\",[]],[\"name/593\",[394,63.279]],[\"comment/593\",[]],[\"name/594\",[395,63.279]],[\"comment/594\",[]],[\"name/595\",[396,63.279]],[\"comment/595\",[]],[\"name/596\",[397,63.279]],[\"comment/596\",[]],[\"name/597\",[398,63.279]],[\"comment/597\",[]],[\"name/598\",[399,63.279]],[\"comment/598\",[]],[\"name/599\",[400,63.279]],[\"comment/599\",[]],[\"name/600\",[401,63.279]],[\"comment/600\",[]],[\"name/601\",[402,63.279]],[\"comment/601\",[]],[\"name/602\",[403,63.279]],[\"comment/602\",[]],[\"name/603\",[404,63.279]],[\"comment/603\",[]],[\"name/604\",[405,63.279]],[\"comment/604\",[]],[\"name/605\",[406,63.279]],[\"comment/605\",[]],[\"name/606\",[407,63.279]],[\"comment/606\",[]],[\"name/607\",[408,63.279]],[\"comment/607\",[]],[\"name/608\",[409,63.279]],[\"comment/608\",[]],[\"name/609\",[410,63.279]],[\"comment/609\",[]],[\"name/610\",[411,63.279]],[\"comment/610\",[]],[\"name/611\",[40,54.806]],[\"comment/611\",[]],[\"name/612\",[412,63.279]],[\"comment/612\",[]],[\"name/613\",[413,63.279]],[\"comment/613\",[]],[\"name/614\",[414,63.279]],[\"comment/614\",[]],[\"name/615\",[415,63.279]],[\"comment/615\",[]],[\"name/616\",[416,63.279]],[\"comment/616\",[]],[\"name/617\",[417,63.279]],[\"comment/617\",[]],[\"name/618\",[418,63.279]],[\"comment/618\",[]],[\"name/619\",[419,63.279]],[\"comment/619\",[]],[\"name/620\",[420,63.279]],[\"comment/620\",[]],[\"name/621\",[421,63.279]],[\"comment/621\",[]],[\"name/622\",[422,58.171]],[\"comment/622\",[]],[\"name/623\",[423,63.279]],[\"comment/623\",[]],[\"name/624\",[103,58.171]],[\"comment/624\",[]],[\"name/625\",[424,63.279]],[\"comment/625\",[]],[\"name/626\",[425,63.279]],[\"comment/626\",[]],[\"name/627\",[426,63.279]],[\"comment/627\",[]],[\"name/628\",[427,63.279]],[\"comment/628\",[]],[\"name/629\",[428,63.279]],[\"comment/629\",[]],[\"name/630\",[429,63.279]],[\"comment/630\",[]],[\"name/631\",[422,58.171]],[\"comment/631\",[]],[\"name/632\",[1,35.764]],[\"comment/632\",[]],[\"name/633\",[430,58.171]],[\"comment/633\",[]],[\"name/634\",[431,48.616]],[\"comment/634\",[]],[\"name/635\",[73,40.593]],[\"comment/635\",[]],[\"name/636\",[38,36.653]],[\"comment/636\",[]],[\"name/637\",[432,52.293]],[\"comment/637\",[]],[\"name/638\",[389,52.293]],[\"comment/638\",[]],[\"name/639\",[433,63.279]],[\"comment/639\",[]],[\"name/640\",[434,63.279]],[\"comment/640\",[]],[\"name/641\",[435,63.279]],[\"comment/641\",[]],[\"name/642\",[436,63.279]],[\"comment/642\",[]],[\"name/643\",[437,63.279]],[\"comment/643\",[]],[\"name/644\",[438,63.279]],[\"comment/644\",[]],[\"name/645\",[439,63.279]],[\"comment/645\",[]],[\"name/646\",[440,63.279]],[\"comment/646\",[]],[\"name/647\",[441,63.279]],[\"comment/647\",[]],[\"name/648\",[442,63.279]],[\"comment/648\",[]],[\"name/649\",[443,63.279]],[\"comment/649\",[]],[\"name/650\",[444,63.279]],[\"comment/650\",[]],[\"name/651\",[430,58.171]],[\"comment/651\",[]],[\"name/652\",[431,48.616]],[\"comment/652\",[]],[\"name/653\",[73,40.593]],[\"comment/653\",[]],[\"name/654\",[38,36.653]],[\"comment/654\",[]],[\"name/655\",[432,52.293]],[\"comment/655\",[]],[\"name/656\",[389,52.293]],[\"comment/656\",[]],[\"name/657\",[431,48.616]],[\"comment/657\",[]],[\"name/658\",[38,36.653]],[\"comment/658\",[]],[\"name/659\",[9,38.712]],[\"comment/659\",[]],[\"name/660\",[26,48.616]],[\"comment/660\",[]],[\"name/661\",[445,63.279]],[\"comment/661\",[]],[\"name/662\",[73,40.593]],[\"comment/662\",[]],[\"name/663\",[432,52.293]],[\"comment/663\",[]],[\"name/664\",[28,58.171]],[\"comment/664\",[]],[\"name/665\",[446,63.279]],[\"comment/665\",[]],[\"name/666\",[447,63.279]],[\"comment/666\",[]],[\"name/667\",[73,40.593]],[\"comment/667\",[]],[\"name/668\",[432,52.293]],[\"comment/668\",[]],[\"name/669\",[52,44.821]],[\"comment/669\",[]],[\"name/670\",[448,63.279]],[\"comment/670\",[]],[\"name/671\",[73,40.593]],[\"comment/671\",[]],[\"name/672\",[389,52.293]],[\"comment/672\",[]],[\"name/673\",[449,63.279]],[\"comment/673\",[]],[\"name/674\",[450,63.279]],[\"comment/674\",[]],[\"name/675\",[9,38.712]],[\"comment/675\",[]],[\"name/676\",[431,48.616]],[\"comment/676\",[]],[\"name/677\",[151,54.806]],[\"comment/677\",[]],[\"name/678\",[451,58.171]],[\"comment/678\",[]],[\"name/679\",[73,40.593]],[\"comment/679\",[]],[\"name/680\",[38,36.653]],[\"comment/680\",[]],[\"name/681\",[452,54.806]],[\"comment/681\",[]],[\"name/682\",[453,54.806]],[\"comment/682\",[]],[\"name/683\",[454,63.279]],[\"comment/683\",[]],[\"name/684\",[5,58.171]],[\"comment/684\",[]],[\"name/685\",[455,63.279]],[\"comment/685\",[]],[\"name/686\",[73,40.593]],[\"comment/686\",[]],[\"name/687\",[38,36.653]],[\"comment/687\",[]],[\"name/688\",[84,58.171]],[\"comment/688\",[]],[\"name/689\",[456,63.279]],[\"comment/689\",[]],[\"name/690\",[457,63.279]],[\"comment/690\",[]],[\"name/691\",[9,38.712]],[\"comment/691\",[]],[\"name/692\",[431,48.616]],[\"comment/692\",[]],[\"name/693\",[151,54.806]],[\"comment/693\",[]],[\"name/694\",[451,58.171]],[\"comment/694\",[]],[\"name/695\",[73,40.593]],[\"comment/695\",[]],[\"name/696\",[38,36.653]],[\"comment/696\",[]],[\"name/697\",[452,54.806]],[\"comment/697\",[]],[\"name/698\",[453,54.806]],[\"comment/698\",[]],[\"name/699\",[458,63.279]],[\"comment/699\",[]],[\"name/700\",[384,58.171]],[\"comment/700\",[]],[\"name/701\",[459,63.279]],[\"comment/701\",[]],[\"name/702\",[460,63.279]],[\"comment/702\",[]],[\"name/703\",[461,63.279]],[\"comment/703\",[]],[\"name/704\",[462,63.279]],[\"comment/704\",[]],[\"name/705\",[38,36.653]],[\"comment/705\",[]],[\"name/706\",[452,54.806]],[\"comment/706\",[]],[\"name/707\",[431,48.616]],[\"comment/707\",[]],[\"name/708\",[463,63.279]],[\"comment/708\",[]],[\"name/709\",[453,54.806]],[\"comment/709\",[]],[\"name/710\",[464,63.279]],[\"comment/710\",[]],[\"name/711\",[465,63.279]],[\"comment/711\",[]],[\"name/712\",[466,63.279]],[\"comment/712\",[]],[\"name/713\",[467,63.279]],[\"comment/713\",[]],[\"name/714\",[132,54.806]],[\"comment/714\",[]],[\"name/715\",[468,63.279]],[\"comment/715\",[]],[\"name/716\",[469,63.279]],[\"comment/716\",[]],[\"name/717\",[91,54.806]],[\"comment/717\",[]],[\"name/718\",[37,54.806]],[\"comment/718\",[]],[\"name/719\",[111,54.806]],[\"comment/719\",[]],[\"name/720\",[121,58.171]],[\"comment/720\",[]],[\"name/721\",[99,54.806]],[\"comment/721\",[]],[\"name/722\",[470,63.279]],[\"comment/722\",[]],[\"name/723\",[73,40.593]],[\"comment/723\",[]],[\"name/724\",[471,63.279]],[\"comment/724\",[]],[\"name/725\",[1,35.764]],[\"comment/725\",[]],[\"name/726\",[472,54.806]],[\"comment/726\",[]],[\"name/727\",[473,54.806]],[\"comment/727\",[]],[\"name/728\",[474,54.806]],[\"comment/728\",[]],[\"name/729\",[33,52.293]],[\"comment/729\",[]],[\"name/730\",[475,54.806]],[\"comment/730\",[]],[\"name/731\",[476,54.806]],[\"comment/731\",[]],[\"name/732\",[477,54.806]],[\"comment/732\",[]],[\"name/733\",[478,54.806]],[\"comment/733\",[]],[\"name/734\",[479,54.806]],[\"comment/734\",[]],[\"name/735\",[480,54.806]],[\"comment/735\",[]],[\"name/736\",[481,63.279]],[\"comment/736\",[]],[\"name/737\",[482,63.279]],[\"comment/737\",[]],[\"name/738\",[1,35.764]],[\"comment/738\",[]],[\"name/739\",[483,63.279]],[\"comment/739\",[]],[\"name/740\",[484,63.279]],[\"comment/740\",[]],[\"name/741\",[485,63.279]],[\"comment/741\",[]],[\"name/742\",[486,63.279]],[\"comment/742\",[]],[\"name/743\",[487,63.279]],[\"comment/743\",[]],[\"name/744\",[488,63.279]],[\"comment/744\",[]],[\"name/745\",[489,63.279]],[\"comment/745\",[]],[\"name/746\",[490,63.279]],[\"comment/746\",[]],[\"name/747\",[491,63.279]],[\"comment/747\",[]],[\"name/748\",[492,63.279]],[\"comment/748\",[]],[\"name/749\",[493,63.279]],[\"comment/749\",[]],[\"name/750\",[494,63.279]],[\"comment/750\",[]],[\"name/751\",[495,63.279]],[\"comment/751\",[]],[\"name/752\",[496,63.279]],[\"comment/752\",[]],[\"name/753\",[472,54.806]],[\"comment/753\",[]],[\"name/754\",[473,54.806]],[\"comment/754\",[]],[\"name/755\",[474,54.806]],[\"comment/755\",[]],[\"name/756\",[33,52.293]],[\"comment/756\",[]],[\"name/757\",[475,54.806]],[\"comment/757\",[]],[\"name/758\",[476,54.806]],[\"comment/758\",[]],[\"name/759\",[477,54.806]],[\"comment/759\",[]],[\"name/760\",[478,54.806]],[\"comment/760\",[]],[\"name/761\",[479,54.806]],[\"comment/761\",[]],[\"name/762\",[480,54.806]],[\"comment/762\",[]],[\"name/763\",[497,63.279]],[\"comment/763\",[]],[\"name/764\",[1,35.764]],[\"comment/764\",[]],[\"name/765\",[498,63.279]],[\"comment/765\",[]],[\"name/766\",[499,63.279]],[\"comment/766\",[]],[\"name/767\",[33,52.293]],[\"comment/767\",[]],[\"name/768\",[500,63.279]],[\"comment/768\",[]],[\"name/769\",[501,63.279]],[\"comment/769\",[]],[\"name/770\",[62,47.185]],[\"comment/770\",[]],[\"name/771\",[502,63.279]],[\"comment/771\",[]],[\"name/772\",[503,63.279]],[\"comment/772\",[]],[\"name/773\",[504,63.279]],[\"comment/773\",[]],[\"name/774\",[505,63.279]],[\"comment/774\",[]],[\"name/775\",[506,63.279]],[\"comment/775\",[]],[\"name/776\",[507,63.279]],[\"comment/776\",[]],[\"name/777\",[508,63.279]],[\"comment/777\",[]],[\"name/778\",[472,54.806]],[\"comment/778\",[]],[\"name/779\",[473,54.806]],[\"comment/779\",[]],[\"name/780\",[474,54.806]],[\"comment/780\",[]],[\"name/781\",[475,54.806]],[\"comment/781\",[]],[\"name/782\",[476,54.806]],[\"comment/782\",[]],[\"name/783\",[477,54.806]],[\"comment/783\",[]],[\"name/784\",[478,54.806]],[\"comment/784\",[]],[\"name/785\",[479,54.806]],[\"comment/785\",[]],[\"name/786\",[480,54.806]],[\"comment/786\",[]],[\"name/787\",[509,63.279]],[\"comment/787\",[]],[\"name/788\",[9,38.712]],[\"comment/788\",[]],[\"name/789\",[1,35.764]],[\"comment/789\",[]],[\"name/790\",[510,63.279]],[\"comment/790\",[]],[\"name/791\",[511,63.279]],[\"comment/791\",[]],[\"name/792\",[85,58.171]],[\"comment/792\",[]],[\"name/793\",[512,63.279]],[\"comment/793\",[]],[\"name/794\",[133,54.806]],[\"comment/794\",[]],[\"name/795\",[2,47.185]],[\"comment/795\",[]],[\"name/796\",[133,54.806]],[\"comment/796\",[]],[\"name/797\",[69,47.185]],[\"comment/797\",[]],[\"name/798\",[68,47.185]],[\"comment/798\",[]],[\"name/799\",[52,44.821]],[\"comment/799\",[]],[\"name/800\",[67,47.185]],[\"comment/800\",[]],[\"name/801\",[513,63.279]],[\"comment/801\",[]],[\"name/802\",[514,63.279]],[\"comment/802\",[]],[\"name/803\",[515,58.171]],[\"comment/803\",[]],[\"name/804\",[516,58.171]],[\"comment/804\",[]],[\"name/805\",[52,44.821]],[\"comment/805\",[]],[\"name/806\",[1,35.764]],[\"comment/806\",[]],[\"name/807\",[3,39.3]],[\"comment/807\",[]],[\"name/808\",[9,38.712]],[\"comment/808\",[]],[\"name/809\",[517,63.279]],[\"comment/809\",[]],[\"name/810\",[132,54.806]],[\"comment/810\",[]],[\"name/811\",[105,58.171]],[\"comment/811\",[]],[\"name/812\",[515,58.171]],[\"comment/812\",[]],[\"name/813\",[516,58.171]],[\"comment/813\",[]],[\"name/814\",[136,58.171]],[\"comment/814\",[]],[\"name/815\",[1,35.764]],[\"comment/815\",[]],[\"name/816\",[2,47.185]],[\"comment/816\",[]],[\"name/817\",[3,39.3]],[\"comment/817\",[]],[\"name/818\",[518,63.279]],[\"comment/818\",[]],[\"name/819\",[519,63.279]],[\"comment/819\",[]],[\"name/820\",[1,35.764]],[\"comment/820\",[]],[\"name/821\",[520,63.279]],[\"comment/821\",[]],[\"name/822\",[521,63.279]],[\"comment/822\",[]],[\"name/823\",[522,63.279]],[\"comment/823\",[]],[\"name/824\",[523,63.279]],[\"comment/824\",[]],[\"name/825\",[524,63.279]],[\"comment/825\",[]],[\"name/826\",[525,63.279]],[\"comment/826\",[]],[\"name/827\",[30,54.806]],[\"comment/827\",[]],[\"name/828\",[1,35.764]],[\"comment/828\",[]],[\"name/829\",[2,47.185]],[\"comment/829\",[]],[\"name/830\",[526,63.279]],[\"comment/830\",[]],[\"name/831\",[3,39.3]],[\"comment/831\",[]],[\"name/832\",[527,63.279]],[\"comment/832\",[]],[\"name/833\",[528,63.279]],[\"comment/833\",[]],[\"name/834\",[529,63.279]],[\"comment/834\",[]],[\"name/835\",[45,58.171]],[\"comment/835\",[]],[\"name/836\",[530,63.279]],[\"comment/836\",[]],[\"name/837\",[531,63.279]],[\"comment/837\",[]],[\"name/838\",[532,63.279]],[\"comment/838\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":73,\"name\":{\"87\":{},\"137\":{},\"352\":{},\"354\":{},\"571\":{},\"635\":{},\"653\":{},\"662\":{},\"667\":{},\"671\":{},\"679\":{},\"686\":{},\"695\":{},\"723\":{}},\"comment\":{}}],[\"_currentbeatdata\",{\"_index\":114,\"name\":{\"248\":{}},\"comment\":{}}],[\"_devices\",{\"_index\":75,\"name\":{\"96\":{}},\"comment\":{}}],[\"_handler\",{\"_index\":57,\"name\":{\"66\":{},\"115\":{},\"173\":{},\"211\":{},\"262\":{},\"306\":{}},\"comment\":{}}],[\"_sources\",{\"_index\":526,\"name\":{\"830\":{}},\"comment\":{}}],[\"_userbeatcallback\",{\"_index\":112,\"name\":{\"246\":{}},\"comment\":{}}],[\"_userbeatoptions\",{\"_index\":113,\"name\":{\"247\":{}},\"comment\":{}}],[\"actingas\",{\"_index\":466,\"name\":{\"712\":{}},\"comment\":{}}],[\"actingasdevice\",{\"_index\":470,\"name\":{\"722\":{}},\"comment\":{}}],[\"action\",{\"_index\":151,\"name\":{\"344\":{},\"677\":{},\"693\":{}},\"comment\":{}}],[\"activeonloadloops\",{\"_index\":429,\"name\":{\"630\":{}},\"comment\":{}}],[\"adddevice\",{\"_index\":69,\"name\":{\"83\":{},\"100\":{},\"152\":{},\"192\":{},\"238\":{},\"282\":{},\"797\":{}},\"comment\":{}}],[\"address\",{\"_index\":5,\"name\":{\"5\":{},\"684\":{}},\"comment\":{}}],[\"addressport\",{\"_index\":457,\"name\":{\"690\":{}},\"comment\":{}}],[\"addserver\",{\"_index\":139,\"name\":{\"332\":{}},\"comment\":{}}],[\"addservice\",{\"_index\":515,\"name\":{\"803\":{},\"812\":{}},\"comment\":{}}],[\"album\",{\"_index\":397,\"name\":{\"596\":{}},\"comment\":{}}],[\"albumart\",{\"_index\":405,\"name\":{\"604\":{}},\"comment\":{}}],[\"albumartid\",{\"_index\":393,\"name\":{\"592\":{}},\"comment\":{}}],[\"announce\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"announcement_interval\",{\"_index\":144,\"name\":{\"337\":{}},\"comment\":{}}],[\"announcetimer\",{\"_index\":10,\"name\":{\"10\":{}},\"comment\":{}}],[\"array\",{\"_index\":512,\"name\":{\"793\":{}},\"comment\":{}}],[\"artist\",{\"_index\":396,\"name\":{\"595\":{}},\"comment\":{}}],[\"artistname\",{\"_index\":433,\"name\":{\"639\":{}},\"comment\":{}}],[\"autogrow\",{\"_index\":498,\"name\":{\"765\":{}},\"comment\":{}}],[\"avgtimearray\",{\"_index\":124,\"name\":{\"291\":{}},\"comment\":{}}],[\"beatdata\",{\"_index\":103,\"name\":{\"220\":{},\"624\":{}},\"comment\":{}}],[\"beatinfo\",{\"_index\":111,\"name\":{\"241\":{},\"325\":{},\"719\":{}},\"comment\":{}}],[\"beatinfohandler\",{\"_index\":107,\"name\":{\"226\":{}},\"comment\":{}}],[\"beatregister\",{\"_index\":108,\"name\":{\"230\":{}},\"comment\":{}}],[\"bitrate\",{\"_index\":391,\"name\":{\"590\":{}},\"comment\":{}}],[\"bpm\",{\"_index\":387,\"name\":{\"586\":{}},\"comment\":{}}],[\"bpmanalyzed\",{\"_index\":392,\"name\":{\"591\":{}},\"comment\":{}}],[\"broadcastaddress\",{\"_index\":6,\"name\":{\"6\":{}},\"comment\":{}}],[\"broadcastmessage\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"buffer\",{\"_index\":472,\"name\":{\"726\":{},\"753\":{},\"778\":{}},\"comment\":{}}],[\"bytesdownloaded\",{\"_index\":35,\"name\":{\"36\":{}},\"comment\":{}}],[\"checksize\",{\"_index\":500,\"name\":{\"768\":{}},\"comment\":{}}],[\"chunk_size\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevice\",{\"_index\":158,\"name\":{\"355\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevicenetworkpath\",{\"_index\":159,\"name\":{\"356\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhassdcardconnected\",{\"_index\":160,\"name\":{\"357\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhasusbdeviceconnected\",{\"_index\":161,\"name\":{\"358\":{}},\"comment\":{}}],[\"clientpreferenceslayera\",{\"_index\":162,\"name\":{\"359\":{}},\"comment\":{}}],[\"clientpreferenceslayerb\",{\"_index\":163,\"name\":{\"360\":{}},\"comment\":{}}],[\"clientpreferencesplayer\",{\"_index\":164,\"name\":{\"361\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolora\",{\"_index\":165,\"name\":{\"362\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolorb\",{\"_index\":166,\"name\":{\"363\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1\",{\"_index\":167,\"name\":{\"364\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1a\",{\"_index\":168,\"name\":{\"365\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1b\",{\"_index\":169,\"name\":{\"366\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2\",{\"_index\":170,\"name\":{\"367\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2a\",{\"_index\":171,\"name\":{\"368\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2b\",{\"_index\":172,\"name\":{\"369\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3\",{\"_index\":173,\"name\":{\"370\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3a\",{\"_index\":174,\"name\":{\"371\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3b\",{\"_index\":175,\"name\":{\"372\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4\",{\"_index\":176,\"name\":{\"373\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4a\",{\"_index\":177,\"name\":{\"374\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4b\",{\"_index\":178,\"name\":{\"375\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationsyncmode\",{\"_index\":179,\"name\":{\"376\":{}},\"comment\":{}}],[\"clock\",{\"_index\":104,\"name\":{\"223\":{}},\"comment\":{}}],[\"close\",{\"_index\":525,\"name\":{\"826\":{}},\"comment\":{}}],[\"closeserver\",{\"_index\":60,\"name\":{\"70\":{},\"120\":{},\"177\":{},\"215\":{},\"266\":{},\"310\":{}},\"comment\":{}}],[\"closeservice\",{\"_index\":64,\"name\":{\"74\":{},\"126\":{},\"181\":{},\"219\":{},\"270\":{},\"314\":{}},\"comment\":{}}],[\"comment\",{\"_index\":399,\"name\":{\"598\":{}},\"comment\":{}}],[\"composer\",{\"_index\":401,\"name\":{\"600\":{}},\"comment\":{}}],[\"connect\",{\"_index\":142,\"name\":{\"335\":{}},\"comment\":{}}],[\"connect_timeout\",{\"_index\":148,\"name\":{\"341\":{}},\"comment\":{}}],[\"connection\",{\"_index\":446,\"name\":{\"665\":{}},\"comment\":{}}],[\"connectioninfo\",{\"_index\":454,\"name\":{\"683\":{}},\"comment\":{}}],[\"connecttomixer\",{\"_index\":468,\"name\":{\"715\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"39\":{},\"76\":{},\"93\":{},\"105\":{},\"144\":{},\"156\":{},\"185\":{},\"196\":{},\"227\":{},\"242\":{},\"275\":{},\"286\":{},\"317\":{},\"632\":{},\"725\":{},\"738\":{},\"764\":{},\"789\":{},\"806\":{},\"815\":{},\"820\":{},\"828\":{}},\"comment\":{}}],[\"context\",{\"_index\":471,\"name\":{\"724\":{}},\"comment\":{}}],[\"creatediscoverymessage\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"createserver\",{\"_index\":59,\"name\":{\"68\":{},\"118\":{},\"175\":{},\"213\":{},\"264\":{},\"308\":{}},\"comment\":{}}],[\"currentbpm\",{\"_index\":434,\"name\":{\"640\":{}},\"comment\":{}}],[\"data\",{\"_index\":31,\"name\":{\"32\":{}},\"comment\":{}}],[\"database\",{\"_index\":445,\"name\":{\"661\":{}},\"comment\":{}}],[\"databases\",{\"_index\":136,\"name\":{\"327\":{},\"814\":{}},\"comment\":{}}],[\"datahandler\",{\"_index\":78,\"name\":{\"122\":{}},\"comment\":{}}],[\"dateadded\",{\"_index\":411,\"name\":{\"610\":{}},\"comment\":{}}],[\"datecreated\",{\"_index\":410,\"name\":{\"609\":{}},\"comment\":{}}],[\"db\",{\"_index\":520,\"name\":{\"821\":{}},\"comment\":{}}],[\"dbconnection\",{\"_index\":519,\"name\":{\"819\":{}},\"comment\":{}}],[\"dbpath\",{\"_index\":521,\"name\":{\"822\":{}},\"comment\":{}}],[\"deck\",{\"_index\":106,\"name\":{\"225\":{}},\"comment\":{}}],[\"deckcount\",{\"_index\":105,\"name\":{\"224\":{},\"811\":{}},\"comment\":{}}],[\"decks\",{\"_index\":456,\"name\":{\"689\":{}},\"comment\":{}}],[\"deletedevice\",{\"_index\":70,\"name\":{\"84\":{},\"101\":{},\"153\":{},\"193\":{},\"239\":{},\"283\":{}},\"comment\":{}}],[\"deleteserver\",{\"_index\":140,\"name\":{\"333\":{}},\"comment\":{}}],[\"deleteservice\",{\"_index\":516,\"name\":{\"804\":{},\"813\":{}},\"comment\":{}}],[\"deletesource\",{\"_index\":531,\"name\":{\"837\":{}},\"comment\":{}}],[\"device\",{\"_index\":52,\"name\":{\"58\":{},\"107\":{},\"165\":{},\"204\":{},\"255\":{},\"299\":{},\"669\":{},\"799\":{},\"805\":{}},\"comment\":{}}],[\"deviceid\",{\"_index\":9,\"name\":{\"9\":{},\"27\":{},\"59\":{},\"90\":{},\"108\":{},\"134\":{},\"166\":{},\"183\":{},\"205\":{},\"222\":{},\"256\":{},\"300\":{},\"659\":{},\"675\":{},\"691\":{},\"788\":{},\"808\":{}},\"comment\":{}}],[\"devices\",{\"_index\":133,\"name\":{\"320\":{},\"794\":{},\"796\":{}},\"comment\":{}}],[\"devicetrackregister\",{\"_index\":90,\"name\":{\"146\":{}},\"comment\":{}}],[\"directory\",{\"_index\":99,\"name\":{\"195\":{},\"330\":{},\"721\":{}},\"comment\":{}}],[\"directorydata\",{\"_index\":97,\"name\":{\"182\":{}},\"comment\":{}}],[\"directoryhandler\",{\"_index\":98,\"name\":{\"184\":{}},\"comment\":{}}],[\"disconnect\",{\"_index\":143,\"name\":{\"336\":{}},\"comment\":{}}],[\"discovery\",{\"_index\":0,\"name\":{\"0\":{},\"322\":{}},\"comment\":{}}],[\"discovery_message_marker\",{\"_index\":150,\"name\":{\"343\":{}},\"comment\":{}}],[\"discoverymessage\",{\"_index\":450,\"name\":{\"674\":{}},\"comment\":{}}],[\"discoverymessageoptions\",{\"_index\":462,\"name\":{\"704\":{}},\"comment\":{}}],[\"download_timeout\",{\"_index\":149,\"name\":{\"342\":{}},\"comment\":{}}],[\"downloaddb\",{\"_index\":518,\"name\":{\"818\":{}},\"comment\":{}}],[\"downloaddbsources\",{\"_index\":467,\"name\":{\"713\":{}},\"comment\":{}}],[\"downloadfile\",{\"_index\":532,\"name\":{\"838\":{}},\"comment\":{}}],[\"enginedeck1currentbpm\",{\"_index\":192,\"name\":{\"389\":{}},\"comment\":{}}],[\"enginedeck1deckismaster\",{\"_index\":184,\"name\":{\"381\":{}},\"comment\":{}}],[\"enginedeck1externalmixervolume\",{\"_index\":193,\"name\":{\"390\":{}},\"comment\":{}}],[\"enginedeck1externalscratchwheeltouch\",{\"_index\":194,\"name\":{\"391\":{}},\"comment\":{}}],[\"enginedeck1padsview\",{\"_index\":195,\"name\":{\"392\":{}},\"comment\":{}}],[\"enginedeck1play\",{\"_index\":196,\"name\":{\"393\":{}},\"comment\":{}}],[\"enginedeck1playstate\",{\"_index\":197,\"name\":{\"394\":{}},\"comment\":{}}],[\"enginedeck1playstatepath\",{\"_index\":198,\"name\":{\"395\":{}},\"comment\":{}}],[\"enginedeck1speed\",{\"_index\":199,\"name\":{\"396\":{}},\"comment\":{}}],[\"enginedeck1speedneutral\",{\"_index\":200,\"name\":{\"397\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetdown\",{\"_index\":201,\"name\":{\"398\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetup\",{\"_index\":202,\"name\":{\"399\":{}},\"comment\":{}}],[\"enginedeck1speedrange\",{\"_index\":203,\"name\":{\"400\":{}},\"comment\":{}}],[\"enginedeck1speedstate\",{\"_index\":204,\"name\":{\"401\":{}},\"comment\":{}}],[\"enginedeck1syncmode\",{\"_index\":205,\"name\":{\"402\":{}},\"comment\":{}}],[\"enginedeck1syncplaystate\",{\"_index\":180,\"name\":{\"377\":{}},\"comment\":{}}],[\"enginedeck1trackartistname\",{\"_index\":206,\"name\":{\"403\":{}},\"comment\":{}}],[\"enginedeck1trackbleep\",{\"_index\":207,\"name\":{\"404\":{}},\"comment\":{}}],[\"enginedeck1trackcueposition\",{\"_index\":208,\"name\":{\"405\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentbpm\",{\"_index\":209,\"name\":{\"406\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentkeyindex\",{\"_index\":210,\"name\":{\"407\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopinposition\",{\"_index\":211,\"name\":{\"408\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopoutposition\",{\"_index\":212,\"name\":{\"409\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopsizeinbeats\",{\"_index\":213,\"name\":{\"410\":{}},\"comment\":{}}],[\"enginedeck1trackkeylock\",{\"_index\":214,\"name\":{\"411\":{}},\"comment\":{}}],[\"enginedeck1trackloopenablestate\",{\"_index\":215,\"name\":{\"412\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop1\",{\"_index\":216,\"name\":{\"413\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop2\",{\"_index\":217,\"name\":{\"414\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop3\",{\"_index\":218,\"name\":{\"415\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop4\",{\"_index\":219,\"name\":{\"416\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop5\",{\"_index\":220,\"name\":{\"417\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop6\",{\"_index\":221,\"name\":{\"418\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop7\",{\"_index\":222,\"name\":{\"419\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop8\",{\"_index\":223,\"name\":{\"420\":{}},\"comment\":{}}],[\"enginedeck1trackplaypauseledstate\",{\"_index\":224,\"name\":{\"421\":{}},\"comment\":{}}],[\"enginedeck1tracksamplerate\",{\"_index\":225,\"name\":{\"422\":{}},\"comment\":{}}],[\"enginedeck1tracksonganalyzed\",{\"_index\":226,\"name\":{\"423\":{}},\"comment\":{}}],[\"enginedeck1tracksongloaded\",{\"_index\":227,\"name\":{\"424\":{}},\"comment\":{}}],[\"enginedeck1tracksongname\",{\"_index\":228,\"name\":{\"425\":{}},\"comment\":{}}],[\"enginedeck1tracksoundswitchguid\",{\"_index\":229,\"name\":{\"426\":{}},\"comment\":{}}],[\"enginedeck1tracktrackbytes\",{\"_index\":230,\"name\":{\"427\":{}},\"comment\":{}}],[\"enginedeck1tracktrackdata\",{\"_index\":231,\"name\":{\"428\":{}},\"comment\":{}}],[\"enginedeck1tracktracklength\",{\"_index\":232,\"name\":{\"429\":{}},\"comment\":{}}],[\"enginedeck1tracktrackname\",{\"_index\":233,\"name\":{\"430\":{}},\"comment\":{}}],[\"enginedeck1tracktracknetworkpath\",{\"_index\":234,\"name\":{\"431\":{}},\"comment\":{}}],[\"enginedeck1tracktrackuri\",{\"_index\":235,\"name\":{\"432\":{}},\"comment\":{}}],[\"enginedeck1tracktrackwasplayed\",{\"_index\":236,\"name\":{\"433\":{}},\"comment\":{}}],[\"enginedeck2currentbpm\",{\"_index\":237,\"name\":{\"434\":{}},\"comment\":{}}],[\"enginedeck2deckismaster\",{\"_index\":185,\"name\":{\"382\":{}},\"comment\":{}}],[\"enginedeck2externalmixervolume\",{\"_index\":238,\"name\":{\"435\":{}},\"comment\":{}}],[\"enginedeck2externalscratchwheeltouch\",{\"_index\":239,\"name\":{\"436\":{}},\"comment\":{}}],[\"enginedeck2padsview\",{\"_index\":240,\"name\":{\"437\":{}},\"comment\":{}}],[\"enginedeck2play\",{\"_index\":241,\"name\":{\"438\":{}},\"comment\":{}}],[\"enginedeck2playstate\",{\"_index\":242,\"name\":{\"439\":{}},\"comment\":{}}],[\"enginedeck2playstatepath\",{\"_index\":243,\"name\":{\"440\":{}},\"comment\":{}}],[\"enginedeck2speed\",{\"_index\":244,\"name\":{\"441\":{}},\"comment\":{}}],[\"enginedeck2speedneutral\",{\"_index\":245,\"name\":{\"442\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetdown\",{\"_index\":246,\"name\":{\"443\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetup\",{\"_index\":247,\"name\":{\"444\":{}},\"comment\":{}}],[\"enginedeck2speedrange\",{\"_index\":248,\"name\":{\"445\":{}},\"comment\":{}}],[\"enginedeck2speedstate\",{\"_index\":249,\"name\":{\"446\":{}},\"comment\":{}}],[\"enginedeck2syncmode\",{\"_index\":250,\"name\":{\"447\":{}},\"comment\":{}}],[\"enginedeck2syncplaystate\",{\"_index\":181,\"name\":{\"378\":{}},\"comment\":{}}],[\"enginedeck2trackartistname\",{\"_index\":251,\"name\":{\"448\":{}},\"comment\":{}}],[\"enginedeck2trackbleep\",{\"_index\":252,\"name\":{\"449\":{}},\"comment\":{}}],[\"enginedeck2trackcueposition\",{\"_index\":253,\"name\":{\"450\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentbpm\",{\"_index\":254,\"name\":{\"451\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentkeyindex\",{\"_index\":255,\"name\":{\"452\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopinposition\",{\"_index\":256,\"name\":{\"453\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopoutposition\",{\"_index\":257,\"name\":{\"454\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopsizeinbeats\",{\"_index\":258,\"name\":{\"455\":{}},\"comment\":{}}],[\"enginedeck2trackkeylock\",{\"_index\":259,\"name\":{\"456\":{}},\"comment\":{}}],[\"enginedeck2trackloopenablestate\",{\"_index\":260,\"name\":{\"457\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop1\",{\"_index\":261,\"name\":{\"458\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop2\",{\"_index\":262,\"name\":{\"459\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop3\",{\"_index\":263,\"name\":{\"460\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop4\",{\"_index\":264,\"name\":{\"461\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop5\",{\"_index\":265,\"name\":{\"462\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop6\",{\"_index\":266,\"name\":{\"463\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop7\",{\"_index\":267,\"name\":{\"464\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop8\",{\"_index\":268,\"name\":{\"465\":{}},\"comment\":{}}],[\"enginedeck2trackplaypauseledstate\",{\"_index\":269,\"name\":{\"466\":{}},\"comment\":{}}],[\"enginedeck2tracksamplerate\",{\"_index\":270,\"name\":{\"467\":{}},\"comment\":{}}],[\"enginedeck2tracksonganalyzed\",{\"_index\":271,\"name\":{\"468\":{}},\"comment\":{}}],[\"enginedeck2tracksongloaded\",{\"_index\":272,\"name\":{\"469\":{}},\"comment\":{}}],[\"enginedeck2tracksongname\",{\"_index\":273,\"name\":{\"470\":{}},\"comment\":{}}],[\"enginedeck2tracksoundswitchguid\",{\"_index\":274,\"name\":{\"471\":{}},\"comment\":{}}],[\"enginedeck2tracktrackbytes\",{\"_index\":275,\"name\":{\"472\":{}},\"comment\":{}}],[\"enginedeck2tracktrackdata\",{\"_index\":276,\"name\":{\"473\":{}},\"comment\":{}}],[\"enginedeck2tracktracklength\",{\"_index\":277,\"name\":{\"474\":{}},\"comment\":{}}],[\"enginedeck2tracktrackname\",{\"_index\":278,\"name\":{\"475\":{}},\"comment\":{}}],[\"enginedeck2tracktracknetworkpath\",{\"_index\":279,\"name\":{\"476\":{}},\"comment\":{}}],[\"enginedeck2tracktrackuri\",{\"_index\":280,\"name\":{\"477\":{}},\"comment\":{}}],[\"enginedeck2tracktrackwasplayed\",{\"_index\":281,\"name\":{\"478\":{}},\"comment\":{}}],[\"enginedeck3currentbpm\",{\"_index\":282,\"name\":{\"479\":{}},\"comment\":{}}],[\"enginedeck3deckismaster\",{\"_index\":186,\"name\":{\"383\":{}},\"comment\":{}}],[\"enginedeck3externalmixervolume\",{\"_index\":283,\"name\":{\"480\":{}},\"comment\":{}}],[\"enginedeck3externalscratchwheeltouch\",{\"_index\":284,\"name\":{\"481\":{}},\"comment\":{}}],[\"enginedeck3padsview\",{\"_index\":285,\"name\":{\"482\":{}},\"comment\":{}}],[\"enginedeck3play\",{\"_index\":286,\"name\":{\"483\":{}},\"comment\":{}}],[\"enginedeck3playstate\",{\"_index\":287,\"name\":{\"484\":{}},\"comment\":{}}],[\"enginedeck3playstatepath\",{\"_index\":288,\"name\":{\"485\":{}},\"comment\":{}}],[\"enginedeck3speed\",{\"_index\":289,\"name\":{\"486\":{}},\"comment\":{}}],[\"enginedeck3speedneutral\",{\"_index\":290,\"name\":{\"487\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetdown\",{\"_index\":291,\"name\":{\"488\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetup\",{\"_index\":292,\"name\":{\"489\":{}},\"comment\":{}}],[\"enginedeck3speedrange\",{\"_index\":293,\"name\":{\"490\":{}},\"comment\":{}}],[\"enginedeck3speedstate\",{\"_index\":294,\"name\":{\"491\":{}},\"comment\":{}}],[\"enginedeck3syncmode\",{\"_index\":295,\"name\":{\"492\":{}},\"comment\":{}}],[\"enginedeck3syncplaystate\",{\"_index\":182,\"name\":{\"379\":{}},\"comment\":{}}],[\"enginedeck3trackartistname\",{\"_index\":296,\"name\":{\"493\":{}},\"comment\":{}}],[\"enginedeck3trackbleep\",{\"_index\":297,\"name\":{\"494\":{}},\"comment\":{}}],[\"enginedeck3trackcueposition\",{\"_index\":298,\"name\":{\"495\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentbpm\",{\"_index\":299,\"name\":{\"496\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentkeyindex\",{\"_index\":300,\"name\":{\"497\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopinposition\",{\"_index\":301,\"name\":{\"498\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopoutposition\",{\"_index\":302,\"name\":{\"499\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopsizeinbeats\",{\"_index\":303,\"name\":{\"500\":{}},\"comment\":{}}],[\"enginedeck3trackkeylock\",{\"_index\":304,\"name\":{\"501\":{}},\"comment\":{}}],[\"enginedeck3trackloopenablestate\",{\"_index\":305,\"name\":{\"502\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop1\",{\"_index\":306,\"name\":{\"503\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop2\",{\"_index\":307,\"name\":{\"504\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop3\",{\"_index\":308,\"name\":{\"505\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop4\",{\"_index\":309,\"name\":{\"506\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop5\",{\"_index\":310,\"name\":{\"507\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop6\",{\"_index\":311,\"name\":{\"508\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop7\",{\"_index\":312,\"name\":{\"509\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop8\",{\"_index\":313,\"name\":{\"510\":{}},\"comment\":{}}],[\"enginedeck3trackplaypauseledstate\",{\"_index\":314,\"name\":{\"511\":{}},\"comment\":{}}],[\"enginedeck3tracksamplerate\",{\"_index\":315,\"name\":{\"512\":{}},\"comment\":{}}],[\"enginedeck3tracksonganalyzed\",{\"_index\":316,\"name\":{\"513\":{}},\"comment\":{}}],[\"enginedeck3tracksongloaded\",{\"_index\":317,\"name\":{\"514\":{}},\"comment\":{}}],[\"enginedeck3tracksongname\",{\"_index\":318,\"name\":{\"515\":{}},\"comment\":{}}],[\"enginedeck3tracksoundswitchguid\",{\"_index\":319,\"name\":{\"516\":{}},\"comment\":{}}],[\"enginedeck3tracktrackbytes\",{\"_index\":320,\"name\":{\"517\":{}},\"comment\":{}}],[\"enginedeck3tracktrackdata\",{\"_index\":321,\"name\":{\"518\":{}},\"comment\":{}}],[\"enginedeck3tracktracklength\",{\"_index\":322,\"name\":{\"519\":{}},\"comment\":{}}],[\"enginedeck3tracktrackname\",{\"_index\":323,\"name\":{\"520\":{}},\"comment\":{}}],[\"enginedeck3tracktracknetworkpath\",{\"_index\":324,\"name\":{\"521\":{}},\"comment\":{}}],[\"enginedeck3tracktrackuri\",{\"_index\":325,\"name\":{\"522\":{}},\"comment\":{}}],[\"enginedeck3tracktrackwasplayed\",{\"_index\":326,\"name\":{\"523\":{}},\"comment\":{}}],[\"enginedeck4currentbpm\",{\"_index\":327,\"name\":{\"524\":{}},\"comment\":{}}],[\"enginedeck4deckismaster\",{\"_index\":187,\"name\":{\"384\":{}},\"comment\":{}}],[\"enginedeck4externalmixervolume\",{\"_index\":328,\"name\":{\"525\":{}},\"comment\":{}}],[\"enginedeck4externalscratchwheeltouch\",{\"_index\":329,\"name\":{\"526\":{}},\"comment\":{}}],[\"enginedeck4padsview\",{\"_index\":330,\"name\":{\"527\":{}},\"comment\":{}}],[\"enginedeck4play\",{\"_index\":331,\"name\":{\"528\":{}},\"comment\":{}}],[\"enginedeck4playstate\",{\"_index\":332,\"name\":{\"529\":{}},\"comment\":{}}],[\"enginedeck4playstatepath\",{\"_index\":333,\"name\":{\"530\":{}},\"comment\":{}}],[\"enginedeck4speed\",{\"_index\":334,\"name\":{\"531\":{}},\"comment\":{}}],[\"enginedeck4speedneutral\",{\"_index\":335,\"name\":{\"532\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetdown\",{\"_index\":336,\"name\":{\"533\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetup\",{\"_index\":337,\"name\":{\"534\":{}},\"comment\":{}}],[\"enginedeck4speedrange\",{\"_index\":338,\"name\":{\"535\":{}},\"comment\":{}}],[\"enginedeck4speedstate\",{\"_index\":339,\"name\":{\"536\":{}},\"comment\":{}}],[\"enginedeck4syncmode\",{\"_index\":340,\"name\":{\"537\":{}},\"comment\":{}}],[\"enginedeck4syncplaystate\",{\"_index\":183,\"name\":{\"380\":{}},\"comment\":{}}],[\"enginedeck4trackartistname\",{\"_index\":341,\"name\":{\"538\":{}},\"comment\":{}}],[\"enginedeck4trackbleep\",{\"_index\":342,\"name\":{\"539\":{}},\"comment\":{}}],[\"enginedeck4trackcueposition\",{\"_index\":343,\"name\":{\"540\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentbpm\",{\"_index\":344,\"name\":{\"541\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentkeyindex\",{\"_index\":345,\"name\":{\"542\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopinposition\",{\"_index\":346,\"name\":{\"543\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopoutposition\",{\"_index\":347,\"name\":{\"544\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopsizeinbeats\",{\"_index\":348,\"name\":{\"545\":{}},\"comment\":{}}],[\"enginedeck4trackkeylock\",{\"_index\":349,\"name\":{\"546\":{}},\"comment\":{}}],[\"enginedeck4trackloopenablestate\",{\"_index\":350,\"name\":{\"547\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop1\",{\"_index\":351,\"name\":{\"548\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop2\",{\"_index\":352,\"name\":{\"549\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop3\",{\"_index\":353,\"name\":{\"550\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop4\",{\"_index\":354,\"name\":{\"551\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop5\",{\"_index\":355,\"name\":{\"552\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop6\",{\"_index\":356,\"name\":{\"553\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop7\",{\"_index\":357,\"name\":{\"554\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop8\",{\"_index\":358,\"name\":{\"555\":{}},\"comment\":{}}],[\"enginedeck4trackplaypauseledstate\",{\"_index\":359,\"name\":{\"556\":{}},\"comment\":{}}],[\"enginedeck4tracksamplerate\",{\"_index\":360,\"name\":{\"557\":{}},\"comment\":{}}],[\"enginedeck4tracksonganalyzed\",{\"_index\":361,\"name\":{\"558\":{}},\"comment\":{}}],[\"enginedeck4tracksongloaded\",{\"_index\":362,\"name\":{\"559\":{}},\"comment\":{}}],[\"enginedeck4tracksongname\",{\"_index\":363,\"name\":{\"560\":{}},\"comment\":{}}],[\"enginedeck4tracksoundswitchguid\",{\"_index\":364,\"name\":{\"561\":{}},\"comment\":{}}],[\"enginedeck4tracktrackbytes\",{\"_index\":365,\"name\":{\"562\":{}},\"comment\":{}}],[\"enginedeck4tracktrackdata\",{\"_index\":366,\"name\":{\"563\":{}},\"comment\":{}}],[\"enginedeck4tracktracklength\",{\"_index\":367,\"name\":{\"564\":{}},\"comment\":{}}],[\"enginedeck4tracktrackname\",{\"_index\":368,\"name\":{\"565\":{}},\"comment\":{}}],[\"enginedeck4tracktracknetworkpath\",{\"_index\":369,\"name\":{\"566\":{}},\"comment\":{}}],[\"enginedeck4tracktrackuri\",{\"_index\":370,\"name\":{\"567\":{}},\"comment\":{}}],[\"enginedeck4tracktrackwasplayed\",{\"_index\":371,\"name\":{\"568\":{}},\"comment\":{}}],[\"enginedeckcount\",{\"_index\":191,\"name\":{\"388\":{}},\"comment\":{}}],[\"enginemastermastertempo\",{\"_index\":190,\"name\":{\"387\":{}},\"comment\":{}}],[\"enginesyncnetworkmasterstatus\",{\"_index\":189,\"name\":{\"386\":{}},\"comment\":{}}],[\"enginesyncnetworksynctype\",{\"_index\":188,\"name\":{\"385\":{}},\"comment\":{}}],[\"explicitlyrics\",{\"_index\":428,\"name\":{\"629\":{}},\"comment\":{}}],[\"filebytes\",{\"_index\":394,\"name\":{\"593\":{}},\"comment\":{}}],[\"filename\",{\"_index\":390,\"name\":{\"589\":{}},\"comment\":{}}],[\"filetransfer\",{\"_index\":37,\"name\":{\"38\":{},\"324\":{},\"718\":{}},\"comment\":{}}],[\"filetransferdata\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"filetransferhandler\",{\"_index\":65,\"name\":{\"75\":{}},\"comment\":{}}],[\"filetransferprogress\",{\"_index\":32,\"name\":{\"33\":{}},\"comment\":{}}],[\"filetype\",{\"_index\":408,\"name\":{\"607\":{}},\"comment\":{}}],[\"findbroadcastips\",{\"_index\":23,\"name\":{\"23\":{}},\"comment\":{}}],[\"genre\",{\"_index\":398,\"name\":{\"597\":{}},\"comment\":{}}],[\"getbeatdata\",{\"_index\":109,\"name\":{\"231\":{},\"250\":{}},\"comment\":{}}],[\"getbuffer\",{\"_index\":499,\"name\":{\"766\":{}},\"comment\":{}}],[\"getconnectioninfo\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"getdevice\",{\"_index\":68,\"name\":{\"81\":{},\"98\":{},\"150\":{},\"190\":{},\"236\":{},\"280\":{},\"798\":{}},\"comment\":{}}],[\"getdevicelist\",{\"_index\":13,\"name\":{\"13\":{}},\"comment\":{}}],[\"getdevices\",{\"_index\":14,\"name\":{\"14\":{},\"82\":{},\"99\":{},\"151\":{},\"191\":{},\"237\":{},\"281\":{}},\"comment\":{}}],[\"getfile\",{\"_index\":43,\"name\":{\"48\":{}},\"comment\":{}}],[\"getservers\",{\"_index\":141,\"name\":{\"334\":{}},\"comment\":{}}],[\"getsource\",{\"_index\":529,\"name\":{\"834\":{}},\"comment\":{}}],[\"getsources\",{\"_index\":45,\"name\":{\"50\":{},\"835\":{}},\"comment\":{}}],[\"getstring\",{\"_index\":489,\"name\":{\"745\":{}},\"comment\":{}}],[\"gettempfilepath\",{\"_index\":481,\"name\":{\"736\":{}},\"comment\":{}}],[\"gettimestamp\",{\"_index\":127,\"name\":{\"294\":{}},\"comment\":{}}],[\"gettrackinfo\",{\"_index\":524,\"name\":{\"825\":{}},\"comment\":{}}],[\"guidecksdeckactivedeck\",{\"_index\":372,\"name\":{\"569\":{}},\"comment\":{}}],[\"handler\",{\"_index\":92,\"name\":{\"158\":{},\"245\":{}},\"comment\":{}}],[\"hasdevice\",{\"_index\":67,\"name\":{\"80\":{},\"97\":{},\"149\":{},\"189\":{},\"235\":{},\"279\":{},\"800\":{}},\"comment\":{}}],[\"haslooped\",{\"_index\":11,\"name\":{\"11\":{}},\"comment\":{}}],[\"hasnewinfo\",{\"_index\":513,\"name\":{\"801\":{}},\"comment\":{}}],[\"hasreceivedstate\",{\"_index\":93,\"name\":{\"159\":{}},\"comment\":{}}],[\"hassource\",{\"_index\":527,\"name\":{\"832\":{}},\"comment\":{}}],[\"hassourceanddb\",{\"_index\":528,\"name\":{\"833\":{}},\"comment\":{}}],[\"id\",{\"_index\":384,\"name\":{\"583\":{},\"700\":{}},\"comment\":{}}],[\"info\",{\"_index\":517,\"name\":{\"809\":{}},\"comment\":{}}],[\"interval\",{\"_index\":88,\"name\":{\"142\":{}},\"comment\":{}}],[\"ipaddress\",{\"_index\":460,\"name\":{\"702\":{}},\"comment\":{}}],[\"ipaddressport\",{\"_index\":461,\"name\":{\"703\":{}},\"comment\":{}}],[\"isanalyzed\",{\"_index\":409,\"name\":{\"608\":{}},\"comment\":{}}],[\"isavailable\",{\"_index\":40,\"name\":{\"44\":{},\"57\":{},\"611\":{}},\"comment\":{}}],[\"isbeatgridlocked\",{\"_index\":419,\"name\":{\"619\":{}},\"comment\":{}}],[\"isbufferedservice\",{\"_index\":56,\"name\":{\"64\":{},\"113\":{},\"171\":{},\"198\":{},\"249\":{},\"288\":{}},\"comment\":{}}],[\"iseof\",{\"_index\":478,\"name\":{\"733\":{},\"760\":{},\"784\":{}},\"comment\":{}}],[\"islittleendian\",{\"_index\":479,\"name\":{\"734\":{},\"761\":{},\"785\":{}},\"comment\":{}}],[\"ismetadataimported\",{\"_index\":415,\"name\":{\"615\":{}},\"comment\":{}}],[\"ismetadataofpackedtrackchanged\",{\"_index\":412,\"name\":{\"612\":{}},\"comment\":{}}],[\"isperfomancedataofpackedtrackchanged\",{\"_index\":413,\"name\":{\"613\":{}},\"comment\":{}}],[\"isplayed\",{\"_index\":407,\"name\":{\"606\":{}},\"comment\":{}}],[\"json\",{\"_index\":83,\"name\":{\"136\":{}},\"comment\":{}}],[\"key\",{\"_index\":403,\"name\":{\"602\":{}},\"comment\":{}}],[\"label\",{\"_index\":400,\"name\":{\"599\":{}},\"comment\":{}}],[\"length\",{\"_index\":386,\"name\":{\"585\":{}},\"comment\":{}}],[\"listen\",{\"_index\":15,\"name\":{\"15\":{},\"69\":{},\"119\":{},\"176\":{},\"214\":{},\"265\":{},\"309\":{}},\"comment\":{}}],[\"listen_port\",{\"_index\":145,\"name\":{\"338\":{}},\"comment\":{}}],[\"listen_timeout\",{\"_index\":146,\"name\":{\"339\":{}},\"comment\":{}}],[\"listenfordevices\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"littleendian\",{\"_index\":474,\"name\":{\"728\":{},\"755\":{},\"780\":{}},\"comment\":{}}],[\"local\",{\"_index\":448,\"name\":{\"670\":{}},\"comment\":{}}],[\"localtime\",{\"_index\":122,\"name\":{\"289\":{}},\"comment\":{}}],[\"location\",{\"_index\":432,\"name\":{\"637\":{},\"655\":{},\"663\":{},\"668\":{}},\"comment\":{}}],[\"logger\",{\"_index\":134,\"name\":{\"321\":{}},\"comment\":{}}],[\"login\",{\"_index\":152,\"name\":{\"345\":{}},\"comment\":{}}],[\"logout\",{\"_index\":153,\"name\":{\"346\":{}},\"comment\":{}}],[\"loops\",{\"_index\":425,\"name\":{\"626\":{}},\"comment\":{}}],[\"m_array\",{\"_index\":511,\"name\":{\"791\":{}},\"comment\":{}}],[\"m_str\",{\"_index\":510,\"name\":{\"790\":{}},\"comment\":{}}],[\"maxretries\",{\"_index\":465,\"name\":{\"711\":{}},\"comment\":{}}],[\"message\",{\"_index\":459,\"name\":{\"701\":{}},\"comment\":{}}],[\"message_timeout\",{\"_index\":147,\"name\":{\"340\":{}},\"comment\":{}}],[\"messagebuffer\",{\"_index\":76,\"name\":{\"117\":{}},\"comment\":{}}],[\"messagehandler\",{\"_index\":42,\"name\":{\"47\":{},\"128\":{},\"162\":{},\"201\":{},\"254\":{},\"298\":{}},\"comment\":{}}],[\"messageid\",{\"_index\":154,\"name\":{\"347\":{}},\"comment\":{}}],[\"mixer\",{\"_index\":81,\"name\":{\"131\":{},\"570\":{}},\"comment\":{}}],[\"mixerch1faderposition\",{\"_index\":373,\"name\":{\"572\":{}},\"comment\":{}}],[\"mixerch2faderposition\",{\"_index\":374,\"name\":{\"573\":{}},\"comment\":{}}],[\"mixerch3faderposition\",{\"_index\":375,\"name\":{\"574\":{}},\"comment\":{}}],[\"mixerch4faderposition\",{\"_index\":376,\"name\":{\"575\":{}},\"comment\":{}}],[\"mixerchannelassignment1\",{\"_index\":378,\"name\":{\"577\":{}},\"comment\":{}}],[\"mixerchannelassignment2\",{\"_index\":379,\"name\":{\"578\":{}},\"comment\":{}}],[\"mixerchannelassignment3\",{\"_index\":380,\"name\":{\"579\":{}},\"comment\":{}}],[\"mixerchannelassignment4\",{\"_index\":381,\"name\":{\"580\":{}},\"comment\":{}}],[\"mixercrossfaderposition\",{\"_index\":377,\"name\":{\"576\":{}},\"comment\":{}}],[\"mixernumberofchannels\",{\"_index\":382,\"name\":{\"581\":{}},\"comment\":{}}],[\"msgs\",{\"_index\":118,\"name\":{\"272\":{}},\"comment\":{}}],[\"name\",{\"_index\":38,\"name\":{\"41\":{},\"77\":{},\"88\":{},\"94\":{},\"106\":{},\"135\":{},\"145\":{},\"157\":{},\"186\":{},\"197\":{},\"229\":{},\"244\":{},\"276\":{},\"287\":{},\"636\":{},\"654\":{},\"658\":{},\"680\":{},\"687\":{},\"696\":{},\"705\":{}},\"comment\":{}}],[\"offset\",{\"_index\":29,\"name\":{\"30\":{}},\"comment\":{}}],[\"on\",{\"_index\":2,\"name\":{\"2\":{},\"40\":{},\"228\":{},\"243\":{},\"795\":{},\"816\":{},\"829\":{}},\"comment\":{}}],[\"options\",{\"_index\":7,\"name\":{\"7\":{},\"318\":{}},\"comment\":{}}],[\"origindatabaseuuid\",{\"_index\":420,\"name\":{\"620\":{}},\"comment\":{}}],[\"origintrackid\",{\"_index\":421,\"name\":{\"621\":{}},\"comment\":{}}],[\"overviewwaveformdata\",{\"_index\":423,\"name\":{\"623\":{}},\"comment\":{}}],[\"parent\",{\"_index\":3,\"name\":{\"3\":{},\"65\":{},\"79\":{},\"95\":{},\"114\":{},\"148\":{},\"172\":{},\"188\":{},\"210\":{},\"234\":{},\"261\":{},\"278\":{},\"305\":{},\"807\":{},\"817\":{},\"831\":{}},\"comment\":{}}],[\"parsedata\",{\"_index\":41,\"name\":{\"46\":{},\"127\":{},\"161\":{},\"200\":{},\"253\":{},\"296\":{}},\"comment\":{}}],[\"path\",{\"_index\":389,\"name\":{\"588\":{},\"638\":{},\"656\":{},\"672\":{}},\"comment\":{}}],[\"pdbimportkey\",{\"_index\":416,\"name\":{\"616\":{}},\"comment\":{}}],[\"peek\",{\"_index\":484,\"name\":{\"740\":{}},\"comment\":{}}],[\"peers\",{\"_index\":8,\"name\":{\"8\":{}},\"comment\":{}}],[\"percentcomplete\",{\"_index\":36,\"name\":{\"37\":{}},\"comment\":{}}],[\"playedindicator\",{\"_index\":414,\"name\":{\"614\":{}},\"comment\":{}}],[\"player\",{\"_index\":79,\"name\":{\"129\":{},\"353\":{}},\"comment\":{}}],[\"playerdeck\",{\"_index\":80,\"name\":{\"130\":{}},\"comment\":{}}],[\"playorder\",{\"_index\":385,\"name\":{\"584\":{}},\"comment\":{}}],[\"port\",{\"_index\":453,\"name\":{\"682\":{},\"698\":{},\"709\":{}},\"comment\":{}}],[\"pos\",{\"_index\":473,\"name\":{\"727\":{},\"754\":{},\"779\":{}},\"comment\":{}}],[\"prefix\",{\"_index\":430,\"name\":{\"633\":{},\"651\":{}},\"comment\":{}}],[\"querysource\",{\"_index\":522,\"name\":{\"823\":{}},\"comment\":{}}],[\"quickcues\",{\"_index\":424,\"name\":{\"625\":{}},\"comment\":{}}],[\"rating\",{\"_index\":404,\"name\":{\"603\":{}},\"comment\":{}}],[\"read\",{\"_index\":483,\"name\":{\"739\":{}},\"comment\":{}}],[\"readconnectioninfo\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"readcontext\",{\"_index\":482,\"name\":{\"737\":{}},\"comment\":{}}],[\"readfloat64\",{\"_index\":491,\"name\":{\"747\":{}},\"comment\":{}}],[\"readint32\",{\"_index\":494,\"name\":{\"750\":{}},\"comment\":{}}],[\"readnetworkstringutf16\",{\"_index\":490,\"name\":{\"746\":{}},\"comment\":{}}],[\"readremaining\",{\"_index\":485,\"name\":{\"741\":{}},\"comment\":{}}],[\"readremainingasnewarraybuffer\",{\"_index\":487,\"name\":{\"743\":{}},\"comment\":{}}],[\"readremainingasnewbuffer\",{\"_index\":486,\"name\":{\"742\":{}},\"comment\":{}}],[\"readremainingasnewctx\",{\"_index\":488,\"name\":{\"744\":{}},\"comment\":{}}],[\"readuint16\",{\"_index\":495,\"name\":{\"751\":{}},\"comment\":{}}],[\"readuint32\",{\"_index\":493,\"name\":{\"749\":{}},\"comment\":{}}],[\"readuint64\",{\"_index\":492,\"name\":{\"748\":{}},\"comment\":{}}],[\"readuint8\",{\"_index\":496,\"name\":{\"752\":{}},\"comment\":{}}],[\"receivedfile\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"remixer\",{\"_index\":402,\"name\":{\"601\":{}},\"comment\":{}}],[\"remote\",{\"_index\":447,\"name\":{\"666\":{}},\"comment\":{}}],[\"remotetime\",{\"_index\":123,\"name\":{\"290\":{}},\"comment\":{}}],[\"requestchunkrange\",{\"_index\":49,\"name\":{\"54\":{}},\"comment\":{}}],[\"requestfiletransferid\",{\"_index\":48,\"name\":{\"53\":{}},\"comment\":{}}],[\"requestsources\",{\"_index\":47,\"name\":{\"52\":{}},\"comment\":{}}],[\"requeststat\",{\"_index\":46,\"name\":{\"51\":{}},\"comment\":{}}],[\"resize\",{\"_index\":501,\"name\":{\"769\":{}},\"comment\":{}}],[\"rewind\",{\"_index\":480,\"name\":{\"735\":{},\"762\":{},\"786\":{}},\"comment\":{}}],[\"samplerate\",{\"_index\":435,\"name\":{\"641\":{}},\"comment\":{}}],[\"seek\",{\"_index\":476,\"name\":{\"731\":{},\"758\":{},\"782\":{}},\"comment\":{}}],[\"sendbeatinforequest\",{\"_index\":116,\"name\":{\"252\":{}},\"comment\":{}}],[\"sendnosourcesreply\",{\"_index\":51,\"name\":{\"56\":{}},\"comment\":{}}],[\"sendserviceannouncement\",{\"_index\":101,\"name\":{\"202\":{}},\"comment\":{}}],[\"sendstateresponse\",{\"_index\":95,\"name\":{\"163\":{}},\"comment\":{}}],[\"sendtimestampreply\",{\"_index\":102,\"name\":{\"203\":{}},\"comment\":{}}],[\"sendtimesyncquery\",{\"_index\":128,\"name\":{\"295\":{}},\"comment\":{}}],[\"sendtimesyncrequest\",{\"_index\":125,\"name\":{\"292\":{}},\"comment\":{}}],[\"server\",{\"_index\":53,\"name\":{\"60\":{},\"109\":{},\"167\":{},\"206\":{},\"257\":{},\"301\":{}},\"comment\":{}}],[\"serverinfo\",{\"_index\":54,\"name\":{\"61\":{},\"110\":{},\"168\":{},\"207\":{},\"258\":{},\"302\":{}},\"comment\":{}}],[\"servers\",{\"_index\":138,\"name\":{\"331\":{}},\"comment\":{}}],[\"serverstatus\",{\"_index\":55,\"name\":{\"62\":{},\"111\":{},\"169\":{},\"208\":{},\"259\":{},\"303\":{}},\"comment\":{}}],[\"service\",{\"_index\":26,\"name\":{\"26\":{},\"91\":{},\"104\":{},\"133\":{},\"221\":{},\"660\":{}},\"comment\":{}}],[\"servicedata\",{\"_index\":72,\"name\":{\"86\":{}},\"comment\":{}}],[\"servicehandler\",{\"_index\":74,\"name\":{\"92\":{}},\"comment\":{}}],[\"servicehandlers\",{\"_index\":130,\"name\":{\"315\":{}},\"comment\":{}}],[\"servicelist\",{\"_index\":469,\"name\":{\"716\":{}},\"comment\":{}}],[\"servicemessage\",{\"_index\":458,\"name\":{\"699\":{}},\"comment\":{}}],[\"services\",{\"_index\":132,\"name\":{\"319\":{},\"714\":{},\"810\":{}},\"comment\":{}}],[\"servicesannouncement\",{\"_index\":155,\"name\":{\"348\":{}},\"comment\":{}}],[\"servicesrequest\",{\"_index\":156,\"name\":{\"350\":{}},\"comment\":{}}],[\"set\",{\"_index\":477,\"name\":{\"732\":{},\"759\":{},\"783\":{}},\"comment\":{}}],[\"setbeatdata\",{\"_index\":110,\"name\":{\"232\":{}},\"comment\":{}}],[\"setsource\",{\"_index\":530,\"name\":{\"836\":{}},\"comment\":{}}],[\"setupservice\",{\"_index\":66,\"name\":{\"78\":{},\"103\":{},\"147\":{},\"187\":{},\"233\":{},\"277\":{}},\"comment\":{}}],[\"signaltransfercomplete\",{\"_index\":50,\"name\":{\"55\":{}},\"comment\":{}}],[\"size\",{\"_index\":28,\"name\":{\"29\":{},\"664\":{}},\"comment\":{}}],[\"sizeleft\",{\"_index\":33,\"name\":{\"34\":{},\"729\":{},\"756\":{},\"767\":{}},\"comment\":{}}],[\"sleep\",{\"_index\":509,\"name\":{\"787\":{}},\"comment\":{}}],[\"socket\",{\"_index\":4,\"name\":{\"4\":{},\"63\":{},\"89\":{},\"112\":{},\"170\":{},\"209\":{},\"260\":{},\"304\":{}},\"comment\":{}}],[\"software\",{\"_index\":451,\"name\":{\"678\":{},\"694\":{}},\"comment\":{}}],[\"songanalyzed\",{\"_index\":436,\"name\":{\"642\":{}},\"comment\":{}}],[\"songloaded\",{\"_index\":437,\"name\":{\"643\":{}},\"comment\":{}}],[\"songname\",{\"_index\":438,\"name\":{\"644\":{}},\"comment\":{}}],[\"soundswitchguid\",{\"_index\":439,\"name\":{\"645\":{}},\"comment\":{}}],[\"source\",{\"_index\":431,\"name\":{\"634\":{},\"652\":{},\"657\":{},\"676\":{},\"692\":{},\"707\":{}},\"comment\":{}}],[\"sources\",{\"_index\":30,\"name\":{\"31\":{},\"328\":{},\"827\":{}},\"comment\":{}}],[\"stagelinq\",{\"_index\":131,\"name\":{\"316\":{}},\"comment\":{}}],[\"stagelinqoptions\",{\"_index\":464,\"name\":{\"710\":{}},\"comment\":{}}],[\"startbeatinfo\",{\"_index\":115,\"name\":{\"251\":{}},\"comment\":{}}],[\"startservicelistener\",{\"_index\":71,\"name\":{\"85\":{},\"102\":{},\"154\":{},\"194\":{},\"240\":{},\"284\":{}},\"comment\":{}}],[\"state\",{\"_index\":87,\"name\":{\"141\":{}},\"comment\":{}}],[\"statedata\",{\"_index\":82,\"name\":{\"132\":{}},\"comment\":{}}],[\"statemap\",{\"_index\":91,\"name\":{\"155\":{},\"323\":{},\"717\":{}},\"comment\":{}}],[\"statemaphandler\",{\"_index\":89,\"name\":{\"143\":{}},\"comment\":{}}],[\"statenames\",{\"_index\":157,\"name\":{\"351\":{}},\"comment\":{}}],[\"status\",{\"_index\":137,\"name\":{\"329\":{}},\"comment\":{}}],[\"streamingflags\",{\"_index\":427,\"name\":{\"628\":{}},\"comment\":{}}],[\"streamingsource\",{\"_index\":417,\"name\":{\"617\":{}},\"comment\":{}}],[\"string\",{\"_index\":85,\"name\":{\"139\":{},\"792\":{}},\"comment\":{}}],[\"submessagetest\",{\"_index\":77,\"name\":{\"121\":{}},\"comment\":{}}],[\"subscribe\",{\"_index\":94,\"name\":{\"160\":{}},\"comment\":{}}],[\"subscribestate\",{\"_index\":96,\"name\":{\"164\":{}},\"comment\":{}}],[\"tell\",{\"_index\":475,\"name\":{\"730\":{},\"757\":{},\"781\":{}},\"comment\":{}}],[\"thirdpartysourceid\",{\"_index\":426,\"name\":{\"627\":{}},\"comment\":{}}],[\"timealive\",{\"_index\":100,\"name\":{\"199\":{}},\"comment\":{}}],[\"timeavg\",{\"_index\":129,\"name\":{\"297\":{}},\"comment\":{}}],[\"timelastplayed\",{\"_index\":406,\"name\":{\"605\":{}},\"comment\":{}}],[\"timeout\",{\"_index\":58,\"name\":{\"67\":{},\"116\":{},\"174\":{},\"212\":{},\"263\":{},\"307\":{}},\"comment\":{}}],[\"timestamp\",{\"_index\":119,\"name\":{\"273\":{},\"349\":{}},\"comment\":{}}],[\"timesync\",{\"_index\":135,\"name\":{\"326\":{}},\"comment\":{}}],[\"timesyncdata\",{\"_index\":117,\"name\":{\"271\":{}},\"comment\":{}}],[\"timesynchronization\",{\"_index\":121,\"name\":{\"285\":{},\"720\":{}},\"comment\":{}}],[\"timesynchronizationhandler\",{\"_index\":120,\"name\":{\"274\":{}},\"comment\":{}}],[\"timesyncmsghelper\",{\"_index\":126,\"name\":{\"293\":{}},\"comment\":{}}],[\"title\",{\"_index\":395,\"name\":{\"594\":{}},\"comment\":{}}],[\"token\",{\"_index\":463,\"name\":{\"708\":{}},\"comment\":{}}],[\"total\",{\"_index\":34,\"name\":{\"35\":{}},\"comment\":{}}],[\"track\",{\"_index\":383,\"name\":{\"582\":{}},\"comment\":{}}],[\"trackbytes\",{\"_index\":440,\"name\":{\"646\":{}},\"comment\":{}}],[\"trackdata\",{\"_index\":422,\"name\":{\"622\":{},\"631\":{}},\"comment\":{}}],[\"tracklength\",{\"_index\":441,\"name\":{\"647\":{}},\"comment\":{}}],[\"trackname\",{\"_index\":442,\"name\":{\"648\":{}},\"comment\":{}}],[\"tracknetworkpath\",{\"_index\":443,\"name\":{\"649\":{}},\"comment\":{}}],[\"trackuri\",{\"_index\":444,\"name\":{\"650\":{}},\"comment\":{}}],[\"txid\",{\"_index\":27,\"name\":{\"28\":{},\"43\":{},\"45\":{}},\"comment\":{}}],[\"type\",{\"_index\":84,\"name\":{\"138\":{},\"688\":{}},\"comment\":{}}],[\"unannounce\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"unit\",{\"_index\":455,\"name\":{\"685\":{}},\"comment\":{}}],[\"units\",{\"_index\":449,\"name\":{\"673\":{}},\"comment\":{}}],[\"updatedeviceinfo\",{\"_index\":514,\"name\":{\"802\":{}},\"comment\":{}}],[\"updatesources\",{\"_index\":44,\"name\":{\"49\":{}},\"comment\":{}}],[\"uri\",{\"_index\":418,\"name\":{\"618\":{}},\"comment\":{}}],[\"value\",{\"_index\":86,\"name\":{\"140\":{}},\"comment\":{}}],[\"version\",{\"_index\":452,\"name\":{\"681\":{},\"697\":{},\"706\":{}},\"comment\":{}}],[\"waitformessage\",{\"_index\":61,\"name\":{\"71\":{},\"123\":{},\"178\":{},\"216\":{},\"267\":{},\"311\":{}},\"comment\":{}}],[\"write\",{\"_index\":62,\"name\":{\"72\":{},\"124\":{},\"179\":{},\"217\":{},\"268\":{},\"312\":{},\"770\":{}},\"comment\":{}}],[\"writecontext\",{\"_index\":497,\"name\":{\"763\":{}},\"comment\":{}}],[\"writediscoverymessage\",{\"_index\":22,\"name\":{\"22\":{}},\"comment\":{}}],[\"writefixedsizedstring\",{\"_index\":502,\"name\":{\"771\":{}},\"comment\":{}}],[\"writeint32\",{\"_index\":506,\"name\":{\"775\":{}},\"comment\":{}}],[\"writenetworkstringutf16\",{\"_index\":503,\"name\":{\"772\":{}},\"comment\":{}}],[\"writeuint16\",{\"_index\":507,\"name\":{\"776\":{}},\"comment\":{}}],[\"writeuint32\",{\"_index\":505,\"name\":{\"774\":{}},\"comment\":{}}],[\"writeuint64\",{\"_index\":504,\"name\":{\"773\":{}},\"comment\":{}}],[\"writeuint8\",{\"_index\":508,\"name\":{\"777\":{}},\"comment\":{}}],[\"writewithlength\",{\"_index\":63,\"name\":{\"73\":{},\"125\":{},\"180\":{},\"218\":{},\"269\":{},\"313\":{}},\"comment\":{}}],[\"year\",{\"_index\":388,\"name\":{\"587\":{}},\"comment\":{}}],[\"zinflate\",{\"_index\":523,\"name\":{\"824\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/classes/BeatInfo.html b/docs/classes/BeatInfo.html index ce791ea..a7052f1 100644 --- a/docs/classes/BeatInfo.html +++ b/docs/classes/BeatInfo.html @@ -22,8 +22,8 @@

Hierarchy

  • BeatInfo
+
  • Defined in services/BeatInfo.ts:77
  • +
  • Defined in services/BeatInfo.ts:81
  • @@ -109,95 +109,95 @@
    Optional deviceId: Returns BeatInfo
    +
  • Defined in services/BeatInfo.ts:96
  • Properties

    -
    _currentBeatData: ServiceMessage<BeatData> = null
    +
  • Defined in services/BeatInfo.ts:87
  • _handler: ServiceHandler<BeatData> = null
    +
  • Defined in services/Service.ts:123
  • _userBeatCallback: BeatCallback = null
    +
  • Defined in services/BeatInfo.ts:85
  • _userBeatOptions: BeatOptions = null
    +
  • Defined in services/BeatInfo.ts:86
  • device: Device
    +
  • Defined in services/Service.ts:114
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:115
  • +
  • Defined in services/BeatInfo.ts:83
  • isBufferedService: boolean = true
    +
  • Defined in services/BeatInfo.ts:88
  • name: "BeatInfo" = "BeatInfo"
    +
  • Defined in services/BeatInfo.ts:82
  • parent: StageLinq
    +
  • Defined in services/Service.ts:122
  • server: Server = null
    +
  • Defined in services/Service.ts:116
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:117
  • serverStatus: boolean = false
    +
  • Defined in services/Service.ts:118
  • socket: Socket = null
    +
  • Defined in services/Service.ts:119
  • timeout: Timer
    +
  • Defined in services/Service.ts:124
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:197
  • +
  • Defined in services/Service.ts:358
  • +
  • Defined in services/Service.ts:146
  • +
  • Defined in services/BeatInfo.ts:105
  • +
  • Defined in services/Service.ts:189
  • +
  • Defined in services/BeatInfo.ts:163
  • +
  • Defined in services/BeatInfo.ts:78
  • +
  • Defined in services/BeatInfo.ts:132
  • +
  • Defined in services/BeatInfo.ts:126
  • +
  • Defined in services/BeatInfo.ts:114
    • @@ -823,7 +821,7 @@
      messageId: number
    Returns Promise<BeatData>
    +
  • Defined in services/Service.ts:307
  • +
  • Defined in services/Service.ts:327
  • +
  • Defined in services/Service.ts:339
    • @@ -870,7 +868,7 @@
    +
  • Defined in services/BeatInfo.ts:31
  • +
  • Defined in services/BeatInfo.ts:36
  • @@ -94,26 +94,26 @@
    serviceName: string
    Returns BeatInfoHandler
    +
  • Defined in services/Service.ts:33
  • Properties

    #beatRegister: Map<string, BeatData> = ...
    +
  • Defined in services/BeatInfo.ts:38
  • name: string = 'BeatInfo'
    +
  • Defined in services/BeatInfo.ts:37
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
  • +
  • Defined in services/Service.ts:79
  • +
  • Defined in services/BeatInfo.ts:45
  • +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
  • +
  • Defined in services/Service.ts:45
  • +
  • Parameters

    @@ -456,23 +456,23 @@

    Parameters

  • event: "beatMsg"
  • -
    listener: ((beatData: ServiceMessage<BeatData>, device: Service<BeatData>) => void)
    +
    listener: ((beatData: BeatData, device: Service<BeatData>) => void)
  • Returns BeatInfoHandler

    +
  • Defined in services/BeatInfo.ts:33
  • Returns void

    +
  • Defined in services/BeatInfo.ts:54
  • +
  • Defined in services/BeatInfo.ts:63
  • +
  • Defined in services/Service.ts:90
    • @@ -800,7 +800,7 @@
    +
  • Defined in utils/Context.ts:3
  • @@ -65,24 +65,24 @@
    p_buffer: ArrayBuffer
    Optional p_littleEndian: boolean

    Returns Context

    +
  • Defined in utils/Context.ts:8
  • Properties

    buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -92,7 +92,7 @@
    +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/Context.ts:42
    • @@ -121,7 +121,7 @@

      Parameters

      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -134,7 +134,7 @@

      Parameters

      p_offset: number

    Returns void

    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns Databases

    +
  • Defined in Databases/Databases.ts:12
  • @@ -336,7 +336,7 @@
    dbPath: string
  • Returns void

    Returns Databases

    +
  • Defined in Databases/Databases.ts:13
  • @@ -363,7 +363,7 @@
    progress: Returns void
  • Returns Databases

    +
  • Defined in Databases/Databases.ts:14
  • +
  • Defined in Databases/DbConnection.ts:6
  • @@ -60,19 +60,19 @@
    dbPath: string

    Returns DbConnection

    +
  • Defined in Databases/DbConnection.ts:14
  • Properties

    db: Database
    +
  • Defined in Databases/DbConnection.ts:7
  • dbPath: string
    +
  • Defined in Databases/DbConnection.ts:8
  • Methods

    @@ -84,7 +84,7 @@
    +
  • Defined in Databases/DbConnection.ts:78
    • @@ -102,7 +102,7 @@
      _trackPath: string

    Returns Promise<Track>

    +
  • Defined in Databases/DbConnection.ts:56
  • +
  • Defined in Databases/DbConnection.ts:27
    • @@ -146,7 +146,7 @@

      Parameters

      data: Buffer

    Returns Promise<Buffer>

    +
  • Defined in Databases/DbConnection.ts:38
  • Returns void

    +
  • Defined in devices/Devices.ts:135
  • +
  • Defined in devices/DeviceId.ts:12
  • @@ -58,19 +58,19 @@
    deviceId: stringReturns DeviceId
    +
  • Defined in devices/DeviceId.ts:20
  • Properties

    m_array: Uint8Array
    +
  • Defined in devices/DeviceId.ts:14
  • m_str: string
    +
  • Defined in devices/DeviceId.ts:13
  • Accessors

    @@ -82,7 +82,7 @@
    +
  • Defined in devices/DeviceId.ts:54
  • +
  • Defined in devices/DeviceId.ts:47
  • Returns void

    +
  • Defined in devices/Devices.ts:84
    • @@ -200,7 +200,7 @@
      deviceId: string

    Returns void

    +
  • Defined in devices/Devices.ts:94
    • @@ -215,7 +215,7 @@

      Parameters

      deviceId: DeviceId

    Returns Device

    +
  • Defined in devices/Devices.ts:45
  • Returns Promise<Device>

    +
  • Defined in devices/Devices.ts:33
    • @@ -296,7 +296,7 @@

      Parameters

      deviceId: DeviceId

    Returns boolean

    +
  • Defined in devices/Devices.ts:54
  • Returns boolean

    +
  • Defined in devices/Devices.ts:64
    • @@ -339,7 +339,7 @@

    Returns Devices

    +
  • Defined in devices/Devices.ts:9
  • @@ -432,7 +432,7 @@
    service: Returns void
  • Returns Devices

    +
  • Defined in devices/Devices.ts:10
  • Returns Promise<void>

    +
  • Defined in devices/Devices.ts:73
    • @@ -692,7 +692,7 @@
    +
  • Defined in services/Directory.ts:27
  • @@ -106,7 +106,7 @@
    Optional deviceId: Returns Directory
    +
  • Defined in services/Service.ts:134
  • Properties

    @@ -114,72 +114,72 @@
    +
  • Defined in services/Service.ts:123
  • device: Device
    +
  • Defined in services/Service.ts:114
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:115
  • isBufferedService: false = false
    +
  • Defined in services/Directory.ts:30
  • name: "Directory" = 'Directory'
    +
  • Defined in services/Directory.ts:28
  • parent: StageLinq
    +
  • Defined in services/Service.ts:122
  • server: Server = null
    +
  • Defined in services/Service.ts:116
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:117
  • serverStatus: boolean = false
    +
  • Defined in services/Service.ts:118
  • socket: Socket = null
    +
  • Defined in services/Service.ts:119
  • timeAlive: number
    +
  • Defined in services/Directory.ts:31
  • timeout: Timer
    +
  • Defined in services/Service.ts:124
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:197
  • +
  • Defined in services/Service.ts:358
  • +
  • Defined in services/Service.ts:146
  • +
  • Defined in services/Service.ts:189
    • @@ -386,7 +386,7 @@
    +
  • Defined in services/Directory.ts:94
  • Returns ServiceMessage<DirectoryData>

    +
  • Defined in services/Directory.ts:34
  • Returns Promise<void>

    +
  • Defined in services/Directory.ts:107
    • @@ -758,7 +758,7 @@
      token: Uint8Array

    Returns Promise<void>

    +
  • Defined in services/Directory.ts:159
    • @@ -799,7 +799,7 @@
      messageId: number
    Returns Promise<DirectoryData>
    +
  • Defined in services/Service.ts:307
  • +
  • Defined in services/Service.ts:327
  • +
  • Defined in services/Service.ts:339
    • @@ -846,7 +846,7 @@
    +
  • Defined in services/Directory.ts:19
  • @@ -90,7 +90,7 @@
    serviceName: string
    Returns DirectoryHandler
    +
  • Defined in services/Service.ts:33
  • Properties

    @@ -98,13 +98,13 @@
    +
  • Defined in services/Directory.ts:20
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
  • +
  • Defined in services/Service.ts:79
  • +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
  • +
  • Defined in services/Service.ts:45
  • +
  • Defined in services/Directory.ts:22
  • +
  • Defined in services/Service.ts:90
    • @@ -727,7 +727,7 @@
    +
  • Defined in network/Discovery.ts:19
  • +
  • Defined in network/Discovery.ts:26
  • @@ -62,7 +62,6 @@

    Methods

    getDeviceList getDevices getMaxListeners -hasConnectionInfo listen listenForDevices listenerCount @@ -76,7 +75,6 @@

    Methods

    readConnectionInfo removeAllListeners removeListener -setConnectionInfo setMaxListeners unannounce writeDiscoveryMessage @@ -104,54 +102,54 @@
    parent: Returns Discovery
    +
  • Defined in network/Discovery.ts:45
  • Properties

    address: string
    +
  • Defined in network/Discovery.ts:30
  • announceTimer: Timer
    +
  • Defined in network/Discovery.ts:37
  • broadcastAddress: string
    +
  • Defined in network/Discovery.ts:31
  • deviceId: DeviceId = null
    +
  • Defined in network/Discovery.ts:34
  • hasLooped: boolean = false
    +
  • Defined in network/Discovery.ts:38
  • options: DiscoveryMessageOptions = null
    +
  • Defined in network/Discovery.ts:32
  • parent: StageLinq
    +
  • Defined in network/Discovery.ts:27
  • peers: Map<string, ConnectionInfo> = ...
    +
  • Defined in network/Discovery.ts:33
  • socket: Socket
    +
  • Defined in network/Discovery.ts:29
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in network/Discovery.ts:108
    • @@ -250,7 +248,7 @@
      port: number
      address: string

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:153
  • Returns DiscoveryMessage

    +
  • Defined in network/Discovery.ts:218
  • +
  • Defined in network/Discovery.ts:253
    • @@ -335,7 +333,7 @@

      Parameters

      deviceId: DeviceId

    Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:55
  • +
  • Defined in network/Discovery.ts:63
  • +
  • Defined in network/Discovery.ts:71
    • @@ -371,21 +371,6 @@

      Since

      v1.0.0

      Returns number

    -
    - -

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:79
    • @@ -417,7 +402,7 @@
      callback: DeviceDiscoveryCallback

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:162
    • @@ -443,7 +428,7 @@

    Returns Discovery

    +
  • Defined in network/Discovery.ts:20
  • @@ -534,7 +519,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:21
  • @@ -557,7 +542,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:22
  • @@ -575,7 +560,7 @@
    listener: (Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:23
  • Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:185
  • -
    - -
    +
  • Defined in network/Discovery.ts:130
  • Returns Buffer

    +
  • Defined in network/Discovery.ts:237
    • @@ -880,7 +848,7 @@
    @@ -121,90 +121,90 @@
    Optional deviceId: Returns FileTransfer
    +
  • Defined in services/Service.ts:134
  • Properties

    #isAvailable: boolean = true
    +
  • Defined in services/FileTransfer.ts:83
  • #txid: number = 1
    +
  • Defined in services/FileTransfer.ts:82
  • -
    _handler: ServiceHandler<any> = null
    +
  • Defined in services/Service.ts:123
  • device: Device
    +
  • Defined in services/Service.ts:114
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:115
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:121
  • name: string = "FileTransfer"
    +
  • Defined in services/FileTransfer.ts:79
  • parent: StageLinq
    +
  • Defined in services/Service.ts:122
  • receivedFile: WriteContext = null
    +
  • Defined in services/FileTransfer.ts:81
  • server: Server = null
    +
  • Defined in services/Service.ts:116
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:117
  • serverStatus: boolean = false
    +
  • Defined in services/Service.ts:118
  • socket: Socket = null
    +
  • Defined in services/Service.ts:119
  • timeout: Timer
    +
  • Defined in services/Service.ts:124
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/FileTransfer.ts:86
  • Methods

    @@ -291,11 +291,11 @@
    +
  • Defined in services/Service.ts:197
  • +
    handler: ServiceHandler<FileTransferData>

    Returns Promise<void>

    +
  • Defined in services/Service.ts:358
  • +
  • Defined in services/Service.ts:146
  • Returns Promise<Uint8Array>

    +
  • Defined in services/FileTransfer.ts:271
  • +
  • Defined in services/FileTransfer.ts:359
  • +
  • Defined in services/FileTransfer.ts:493
  • +
  • Defined in services/Service.ts:189
  • +
  • Defined in services/FileTransfer.ts:249
  • @@ -613,7 +613,7 @@
    txid: number
  • Returns void

    Returns FileTransfer

    +
  • Defined in services/FileTransfer.ts:46
  • @@ -636,7 +636,7 @@
    source: Returns void
  • Returns FileTransfer

    +
  • Defined in services/FileTransfer.ts:47
  • @@ -661,7 +661,7 @@
    deviceId: Returns void
  • Returns FileTransfer

    +
  • Defined in services/FileTransfer.ts:48
  • +
  • Defined in services/FileTransfer.ts:90
  • Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:448
    • @@ -930,7 +928,7 @@

      Parameters

      filepath: string

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:431
  • +
  • Defined in services/FileTransfer.ts:417
    • @@ -955,11 +953,11 @@

      Parameters

      filepath: string

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:404
    • - +
    • Reply to Devices requesting our sources

      @@ -967,10 +965,10 @@

      Parameters

      • -
        data: any
      +
      message: FileTransferData

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:479
  • +
  • Defined in services/FileTransfer.ts:466
  • +
  • Defined in services/FileTransfer.ts:338
    • - +
    • Wait for a message from the wire

      @@ -1035,10 +1033,10 @@

      Parameters

      eventMessage: string
    • messageId: number
    -

    Returns Promise<any>

    +
  • Defined in services/Service.ts:307
  • +
  • Defined in services/Service.ts:327
  • +
  • Defined in services/Service.ts:339
    • @@ -1085,7 +1083,7 @@
    +
  • Defined in services/FileTransfer.ts:51
  • @@ -90,7 +90,7 @@
    serviceName: string
    Returns FileTransferHandler
    +
  • Defined in services/Service.ts:33
  • Properties

    @@ -98,13 +98,13 @@
    +
  • Defined in services/FileTransfer.ts:52
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
  • +
  • Defined in services/Service.ts:79
  • +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
  • +
  • Defined in services/Service.ts:45
  • +
  • Defined in services/FileTransfer.ts:59
  • +
  • Defined in services/Service.ts:90
    • @@ -729,7 +729,7 @@
    +
  • Defined in utils/ReadContext.ts:10
  • @@ -79,7 +79,7 @@
    p_littleEndian: booleanReturns ReadContext
    +
  • Defined in utils/ReadContext.ts:11
  • Properties

    @@ -87,19 +87,19 @@
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -114,7 +114,7 @@

    Parameters

    p_bytes: number

    Returns string

    +
  • Defined in utils/ReadContext.ts:61
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
    • @@ -145,7 +145,7 @@

      Parameters

      p_bytes: number

    Returns Buffer

    +
  • Defined in utils/ReadContext.ts:27
    • @@ -158,7 +158,7 @@

      Parameters

      p_bytes: number

    Returns Uint8Array

    +
  • Defined in utils/ReadContext.ts:15
  • +
  • Defined in utils/ReadContext.ts:79
  • +
  • Defined in utils/ReadContext.ts:115
  • +
  • Defined in utils/ReadContext.ts:66
  • +
  • Defined in utils/ReadContext.ts:39
  • +
  • Defined in utils/ReadContext.ts:49
  • +
  • Defined in utils/ReadContext.ts:43
  • +
  • Defined in utils/ReadContext.ts:55
  • +
  • Defined in utils/ReadContext.ts:127
  • +
  • Defined in utils/ReadContext.ts:103
  • +
  • Defined in utils/ReadContext.ts:91
  • +
  • Defined in utils/ReadContext.ts:139
  • +
  • Defined in utils/Context.ts:42
    • @@ -269,7 +269,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -283,7 +283,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns Promise<void>

    +
  • Defined in services/Service.ts:225
  • +
  • Defined in services/Service.ts:189
    • @@ -404,7 +404,7 @@

    Returns void

    +
  • Defined in services/Service.ts:377
  • Returns ServiceMessage<T>

    +
  • Defined in services/Service.ts:375
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:206
    • @@ -793,7 +793,7 @@
      eventMessage: string
      messageId: number

    Returns Promise<T>

    +
  • Defined in services/Service.ts:307
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:327
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:339
    • @@ -838,7 +838,7 @@
    +
  • Defined in services/Service.ts:21
  • @@ -107,24 +107,24 @@
    serviceName: string
    Returns ServiceHandler<T>
    +
  • Defined in services/Service.ts:33
  • Properties

    _devices: Map<string, Service<T>> = ...
    +
  • Defined in services/Service.ts:24
  • name: string
    +
  • Defined in services/Service.ts:22
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
    • @@ -222,7 +222,7 @@

      Parameters

      deviceId: DeviceId

    Returns void

    +
  • Defined in services/Service.ts:79
  • Returns Service<T>

    +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
    • @@ -319,7 +319,7 @@

      Parameters

      deviceId: DeviceId

    Returns boolean

    +
  • Defined in services/Service.ts:45
  • Returns void

    +
  • Defined in services/Service.ts:108
  • Returns Promise<T>

    +
  • Defined in services/Service.ts:90
    • @@ -742,7 +742,7 @@
    +
  • Defined in Databases/Sources.ts:8
  • +
  • Defined in Databases/Sources.ts:16
  • @@ -89,19 +89,19 @@

    Parameters

    parent: StageLinq

    Returns Sources

    +
  • Defined in Databases/Sources.ts:24
  • Properties

    _sources: Map<string, Source> = ...
    +
  • Defined in Databases/Sources.ts:17
  • parent: StageLinq
    +
  • Defined in Databases/Sources.ts:18
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in Databases/Sources.ts:86
  • Returns Promise<Uint8Array>

    +
  • Defined in Databases/Sources.ts:96
  • +
  • Defined in Databases/Sources.ts:56
  • +
  • Defined in Databases/Sources.ts:65
  • +
  • Defined in Databases/Sources.ts:35
  • +
  • Defined in Databases/Sources.ts:45
  • Returns void

    +
  • Defined in Databases/Sources.ts:77
    • @@ -665,7 +665,7 @@

    Returns Sources

    +
  • Defined in Databases/Sources.ts:13
  • Constructors

    @@ -100,98 +99,102 @@

    Parameters

  • Optional options: StageLinqOptions
  • Returns StageLinq

    +
  • Defined in StageLinq/index.ts:51
  • Properties

    beatInfo: BeatInfoHandler = null
    +
  • Defined in StageLinq/index.ts:36
  • databases: Databases = null
    +
  • Defined in StageLinq/index.ts:39
  • devices: Devices = ...
    +
  • Defined in StageLinq/index.ts:30
  • directory: Directory = null
    +
  • Defined in StageLinq/index.ts:43
  • discovery: Discovery = ...
    +
  • Defined in StageLinq/index.ts:32
  • fileTransfer: FileTransferHandler = null
    +
  • Defined in StageLinq/index.ts:35
  • logger: Logger = Logger.instance
    +
  • Defined in StageLinq/index.ts:31
  • +
  • Defined in StageLinq/index.ts:27
  • servers: Map<string, Server> = ...
    +
  • Defined in StageLinq/index.ts:44
  • services: ServiceHandlers = {}
    +
  • Defined in StageLinq/index.ts:28
  • sources: Sources = null
    +
  • Defined in StageLinq/index.ts:40
  • stateMap: StateMapHandler = null
    +
  • Defined in StageLinq/index.ts:34
  • status: Status = null
    +
  • Defined in StageLinq/index.ts:41
  • -
    +
  • Defined in StageLinq/index.ts:37
  • +
    captureRejectionSymbol: typeof captureRejectionSymbol
    -
    +
    captureRejections: boolean

    Sets or gets the default captureRejection value for all emitters.

    -
    +
    defaultMaxListeners: number
    -
    +
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error' @@ -201,13 +204,14 @@

    Methods

    -
    +
    -
      +
      • Alias for emitter.on(eventName, listener).

        @@ -233,6 +237,7 @@

        Parameters

        Rest ...args: any[]

      Returns void

    Returns StageLinq

    @@ -249,7 +254,7 @@
    serverName: string
    server: Server

    Returns void

    +
  • Defined in StageLinq/index.ts:88
  • +
  • Defined in StageLinq/index.ts:111
    • @@ -272,7 +277,7 @@

      Parameters

      serverName: string

    Returns void

    +
  • Defined in StageLinq/index.ts:96
  • -
    +
  • Defined in StageLinq/index.ts:127
  • +
    -
      +
      • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments to each.

        Returns true if the event had listeners, false otherwise.

        -
        const EventEmitter = require('events');
        const myEmitter = new EventEmitter();

        // First listener
        myEmitter.on('event', function firstListener() {
        console.log('Helloooo! first listener');
        });
        // Second listener
        myEmitter.on('event', function secondListener(arg1, arg2) {
        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
        });
        // Third listener
        myEmitter.on('event', function thirdListener(...args) {
        const parameters = args.join(', ');
        console.log(`event with parameters ${parameters} in third listener`);
        });

        console.log(myEmitter.listeners('event'));

        myEmitter.emit('event', 1, 2, 3, 4, 5);

        // Prints:
        // [
        // [Function: firstListener],
        // [Function: secondListener],
        // [Function: thirdListener]
        // ]
        // Helloooo! first listener
        // event with parameters 1, 2 in second listener
        // event with parameters 1, 2, 3, 4, 5 in third listener +
        const EventEmitter = require('events');
        const myEmitter = new EventEmitter();

        // First listener
        myEmitter.on('event', function firstListener() {
        console.log('Helloooo! first listener');
        });
        // Second listener
        myEmitter.on('event', function secondListener(arg1, arg2) {
        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
        });
        // Third listener
        myEmitter.on('event', function thirdListener(...args) {
        const parameters = args.join(', ');
        console.log(`event with parameters ${parameters} in third listener`);
        });

        console.log(myEmitter.listeners('event'));

        myEmitter.emit('event', 1, 2, 3, 4, 5);

        // Prints:
        // [
        // [Function: firstListener],
        // [Function: secondListener],
        // [Function: thirdListener]
        // ]
        // Helloooo! first listener
        // event with parameters 1, 2 in second listener
        // event with parameters 1, 2, 3, 4, 5 in third listener

        Since

        v0.1.26

        @@ -305,26 +310,28 @@
        eventName: stringRest ...args: any[]

      Returns boolean

    -
    +
    -
      +
      • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

        -
        const EventEmitter = require('events');
        const myEE = new EventEmitter();
        myEE.on('foo', () => {});
        myEE.on('bar', () => {});

        const sym = Symbol('symbol');
        myEE.on(sym, () => {});

        console.log(myEE.eventNames());
        // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
        const EventEmitter = require('events');
        const myEE = new EventEmitter();
        myEE.on('foo', () => {});
        myEE.on('bar', () => {});

        const sym = Symbol('symbol');
        myEE.on(sym, () => {});

        console.log(myEE.eventNames());
        // Prints: [ 'foo', 'bar', Symbol(symbol) ]

        Since

        v6.0.0

        Returns (string | symbol)[]

    -
    +
    -
    @@ -344,10 +352,10 @@

    Returns

    Returns IterableIterator<[string, Server]>

    -
    +
  • Defined in StageLinq/index.ts:104
  • +
    -
      +
      • Returns the number of listeners listening to the event named eventName.

        @@ -362,15 +370,16 @@
        eventName: string

        The name of the event being listened for

      Returns number

    -
    +
    -
      +
      • Returns a copy of the array of listeners for the event named eventName.

        -
        server.on('connection', (stream) => {
        console.log('someone connected!');
        });
        console.log(util.inspect(server.listeners('connection')));
        // Prints: [ [Function] ] +
        server.on('connection', (stream) => {
        console.log('someone connected!');
        });
        console.log(util.inspect(server.listeners('connection')));
        // Prints: [ [Function] ]

        Since

        v0.1.26

        @@ -381,11 +390,12 @@

        Parameters

      • eventName: string | symbol

      Returns Function[]

    -
    +
    -
      +
      • Alias for emitter.removeListener().

        @@ -411,149 +421,67 @@

        Parameters

        Rest ...args: any[]

      Returns void

    Returns StageLinq

    -
    +
    -
      - -
    • -
      -

      Parameters

      -
      -

      Returns StageLinq

    • - -
    • -
      -

      Parameters

      -
      -

      Returns StageLinq

    • - -
    • -
      -

      Parameters

      -
      -

      Returns StageLinq

    • - -
    • -
      -

      Parameters

      -
        -
      • -
        event: "connection"
      • -
      • -
        listener: ((serviceName: string, deviceId: DeviceId) => void)
        -
          -
        • -
            -
          • (serviceName: string, deviceId: DeviceId): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              serviceName: string
            • -
            • -
              deviceId: DeviceId
            -

            Returns void

      -

      Returns StageLinq

    • - +
        +
      • +

        Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

        +
        server.on('connection', (stream) => {
        console.log('someone connected!');
        }); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        +

        By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

        +
        const myEE = new EventEmitter();
        myEE.on('foo', () => console.log('a'));
        myEE.prependListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a +
        + +

        Since

        v0.1.101

        +

        Parameters

        • -
          event: "fileProgress"
        • +
          eventName: string | symbol
          +

          The name of the event.

          +
        • -
          listener: ((path: string, total: number, bytesDownloaded: number, percentComplete: number) => void)
          +
          listener: ((...args: any[]) => void)
          +

          The callback function

          +
          • -
              -
            • (path: string, total: number, bytesDownloaded: number, percentComplete: number): void
            • +
                +
              • (...args: any[]): void
              • Parameters

                • -
                  path: string
                • -
                • -
                  total: number
                • -
                • -
                  bytesDownloaded: number
                • -
                • -
                  percentComplete: number
                +
                Rest ...args: any[]

        Returns void

    Returns StageLinq

    -
    +
  • Defined in node_modules/@types/node/events.d.ts:385
  • +
    -
      +
      • Adds a one-timelistener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

        -
        server.once('connection', (stream) => {
        console.log('Ah, we have our first user!');
        }); +
        server.once('connection', (stream) => {
        console.log('Ah, we have our first user!');
        });

        Returns a reference to the EventEmitter, so that calls can be chained.

        By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

        -
        const myEE = new EventEmitter();
        myEE.once('foo', () => console.log('a'));
        myEE.prependOnceListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a +
        const myEE = new EventEmitter();
        myEE.once('foo', () => console.log('a'));
        myEE.prependOnceListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a

        Since

        v0.3.0

        @@ -581,18 +509,19 @@

        Parameters

        Rest ...args: any[]

      Returns void

    Returns StageLinq

    -
    +
    -
      +
      • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

        -
        server.prependListener('connection', (stream) => {
        console.log('someone connected!');
        }); +
        server.prependListener('connection', (stream) => {
        console.log('someone connected!');
        });

        Returns a reference to the EventEmitter, so that calls can be chained.

        @@ -621,16 +550,17 @@

        Parameters

        Rest ...args: any[]

      Returns void

    Returns StageLinq

    -
    +
    -
      +
      • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

        -
        server.prependOnceListener('connection', (stream) => {
        console.log('Ah, we have our first user!');
        }); +
        server.prependOnceListener('connection', (stream) => {
        console.log('Ah, we have our first user!');
        });

        Returns a reference to the EventEmitter, so that calls can be chained.

        @@ -659,16 +589,17 @@

        Parameters

        Rest ...args: any[]

      Returns void

    Returns StageLinq

    -
    +
    -
      +
      • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

        -
        const emitter = new EventEmitter();
        emitter.once('log', () => console.log('log once'));

        // Returns a new Array with a function `onceWrapper` which has a property
        // `listener` which contains the original listener bound above
        const listeners = emitter.rawListeners('log');
        const logFnWrapper = listeners[0];

        // Logs "log once" to the console and does not unbind the `once` event
        logFnWrapper.listener();

        // Logs "log once" to the console and removes the listener
        logFnWrapper();

        emitter.on('log', () => console.log('log persistently'));
        // Will return a new Array with a single function bound by `.on()` above
        const newListeners = emitter.rawListeners('log');

        // Logs "log persistently" twice
        newListeners[0]();
        emitter.emit('log'); +
        const emitter = new EventEmitter();
        emitter.once('log', () => console.log('log once'));

        // Returns a new Array with a function `onceWrapper` which has a property
        // `listener` which contains the original listener bound above
        const listeners = emitter.rawListeners('log');
        const logFnWrapper = listeners[0];

        // Logs "log once" to the console and does not unbind the `once` event
        logFnWrapper.listener();

        // Logs "log once" to the console and removes the listener
        logFnWrapper();

        emitter.on('log', () => console.log('log persistently'));
        // Will return a new Array with a single function bound by `.on()` above
        const newListeners = emitter.rawListeners('log');

        // Logs "log persistently" twice
        newListeners[0]();
        emitter.emit('log');

        Since

        v9.4.0

        @@ -679,11 +610,12 @@

        Parameters

      • eventName: string | symbol

      Returns Function[]

    -
    +
    -
      +
      • Removes all listeners, or those of the specified eventName.

        @@ -700,15 +632,16 @@

        Parameters

      • Optional event: string | symbol

      Returns StageLinq

    -
    +
    -

    Returns StageLinq

    -
    +
    -
      +
      • By default EventEmitters will print a warning if more than 10 listeners are @@ -773,11 +707,12 @@

        Parameters

      • n: number

      Returns StageLinq

    -
    +
    -
      +
      • Returns a copy of the array of listeners for the event named eventName.

        @@ -785,7 +720,7 @@

      Returns Function[]

    -
    +
    -
      +
      • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

        -
        const { EventEmitter, listenerCount } = require('events');
        const myEmitter = new EventEmitter();
        myEmitter.on('event', () => {});
        myEmitter.on('event', () => {});
        console.log(listenerCount(myEmitter, 'event'));
        // Prints: 2 +
        const { EventEmitter, listenerCount } = require('events');
        const myEmitter = new EventEmitter();
        myEmitter.on('event', () => {});
        myEmitter.on('event', () => {});
        console.log(listenerCount(myEmitter, 'event'));
        // Prints: 2

        Since

        v0.9.12

        @@ -825,21 +761,22 @@
        eventName: string

        The event name

      Returns number

    -
    - -
      - +
      + +
        +
      • -
        const { on, EventEmitter } = require('events');

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo')) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })(); +
        const { on, EventEmitter } = require('events');

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo')) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })();

        Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. It removes all listeners when exiting the loop. The value returned by each iteration is an array composed of the emitted event arguments.

        An AbortSignal can be used to cancel waiting on events:

        -
        const { on, EventEmitter } = require('events');
        const ac = new AbortController();

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo', { signal: ac.signal })) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })();

        process.nextTick(() => ac.abort()); +
        const { on, EventEmitter } = require('events');
        const ac = new AbortController();

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo', { signal: ac.signal })) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })();

        process.nextTick(() => ac.abort());

        Since

        v13.6.0, v12.16.0

        @@ -858,11 +795,12 @@
        eventName: string
      • Optional options: StaticEventEmitterOptions

      Returns AsyncIterableIterator<any>

    -
    +
    -
      +
      • Creates a Promise that is fulfilled when the EventEmitter emits the given @@ -871,15 +809,15 @@

      Returns Promise<any[]>

      @@ -908,14 +847,15 @@
      eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    -
    +
    -
      +
      • -
        const {
        setMaxListeners,
        EventEmitter
        } = require('events');

        const target = new EventTarget();
        const emitter = new EventEmitter();

        setMaxListeners(5, target, emitter); +
        const {
        setMaxListeners,
        EventEmitter
        } = require('events');

        const target = new EventTarget();
        const emitter = new EventEmitter();

        setMaxListeners(5, target, emitter);

        Since

        v15.4.0

        @@ -930,6 +870,7 @@
        Optional n: Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

      Returns void

    +
  • listenerCount
  • +
  • listeners
  • +
  • off
  • +
  • on
  • +
  • once
  • +
  • prependListener
  • +
  • prependOnceListener
  • +
  • rawListeners
  • +
  • removeAllListeners
  • +
  • removeListener
  • +
  • setMaxListeners
  • +
  • getEventListeners
  • +
  • listenerCount
  • +
  • on
  • +
  • once
  • +
  • setMaxListeners
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/StateMap.html b/docs/classes/StateMap.html index bec5a98..b8fa554 100644 --- a/docs/classes/StateMap.html +++ b/docs/classes/StateMap.html @@ -25,7 +25,7 @@

    Hierarchy

    • StateMap
    +
  • Defined in services/StateMap.ts:94
  • @@ -109,7 +109,7 @@
    Optional deviceId: Returns StateMap
    +
  • Defined in services/StateMap.ts:105
  • Properties

    @@ -117,77 +117,77 @@
    +
  • Defined in services/Service.ts:123
  • device: Device
    +
  • Defined in services/Service.ts:114
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:115
  • +
  • Defined in services/StateMap.ts:96
  • hasReceivedState: boolean = false
    +
  • Defined in services/StateMap.ts:97
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:121
  • name: "StateMap" = "StateMap"
    +
  • Defined in services/StateMap.ts:95
  • parent: StageLinq
    +
  • Defined in services/Service.ts:122
  • server: Server = null
    +
  • Defined in services/Service.ts:116
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:117
  • serverStatus: boolean = false
    +
  • Defined in services/Service.ts:118
  • socket: Socket = null
    +
  • Defined in services/Service.ts:119
  • timeout: Timer
    +
  • Defined in services/Service.ts:124
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:197
  • +
  • Defined in services/Service.ts:358
  • +
  • Defined in services/Service.ts:146
  • +
  • Defined in services/Service.ts:189
    • @@ -394,7 +394,7 @@
    +
  • Defined in services/StateMap.ts:199
  • +
  • Defined in services/StateMap.ts:147
  • Returns Promise<void>

    +
  • Defined in services/StateMap.ts:225
  • +
  • Defined in services/StateMap.ts:113
    • @@ -804,7 +802,7 @@
      interval: number
      socket: Socket

    Returns Promise<void>

    +
  • Defined in services/StateMap.ts:251
    • @@ -823,7 +821,7 @@
      messageId: number
    Returns Promise<StateData>
    +
  • Defined in services/Service.ts:307
  • +
  • Defined in services/Service.ts:327
  • +
  • Defined in services/Service.ts:339
    • @@ -870,7 +868,7 @@
    +
  • Defined in services/StateMap.ts:63
  • @@ -91,26 +91,26 @@
    serviceName: string
    Returns StateMapHandler
    +
  • Defined in services/Service.ts:33
  • Properties

    deviceTrackRegister: Map<string, string> = ...
    +
  • Defined in services/StateMap.ts:65
  • name: "StateMap" = 'StateMap'
    +
  • Defined in services/StateMap.ts:64
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
  • +
  • Defined in services/Service.ts:79
  • +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
  • +
  • Defined in services/Service.ts:45
  • +
  • Defined in services/StateMap.ts:72
  • +
  • Defined in services/Service.ts:90
    • @@ -737,7 +737,7 @@
    +
  • Defined in services/TimeSync.ts:31
  • @@ -111,7 +111,7 @@
    Optional deviceId: Returns TimeSynchronization
    +
  • Defined in services/Service.ts:134
  • Properties

    @@ -119,82 +119,82 @@
    +
  • Defined in services/Service.ts:123
  • avgTimeArray: bigint[] = []
    +
  • Defined in services/TimeSync.ts:36
  • device: Device
    +
  • Defined in services/Service.ts:114
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:115
  • isBufferedService: boolean = false
    +
  • Defined in services/TimeSync.ts:33
  • localTime: bigint
    +
  • Defined in services/TimeSync.ts:34
  • name: "TimeSynchronization" = "TimeSynchronization"
    +
  • Defined in services/TimeSync.ts:32
  • parent: StageLinq
    +
  • Defined in services/Service.ts:122
  • remoteTime: bigint
    +
  • Defined in services/TimeSync.ts:35
  • server: Server = null
    +
  • Defined in services/Service.ts:116
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:117
  • serverStatus: boolean = false
    +
  • Defined in services/Service.ts:118
  • socket: Socket = null
    +
  • Defined in services/Service.ts:119
  • timeout: Timer
    +
  • Defined in services/Service.ts:124
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:197
  • +
  • Defined in services/Service.ts:358
  • +
  • Defined in services/Service.ts:146
  • +
  • Defined in services/TimeSync.ts:65
  • +
  • Defined in services/Service.ts:189
    • @@ -409,7 +409,7 @@
    +
  • Defined in services/TimeSync.ts:126
  • +
  • Defined in services/TimeSync.ts:86
  • Returns void

    +
  • Defined in services/TimeSync.ts:70
  • +
  • Defined in services/TimeSync.ts:39
    • @@ -805,7 +803,7 @@

      Parameters

      time: bigint

    Returns void

    +
  • Defined in services/TimeSync.ts:114
    • @@ -820,7 +818,7 @@
      msgId: number
      msgs: bigint[]

    Returns Buffer

    +
  • Defined in services/TimeSync.ts:48
    • @@ -839,7 +837,7 @@
      messageId: number
    Returns Promise<TimeSyncData>
    +
  • Defined in services/Service.ts:307
  • +
  • Defined in services/Service.ts:327
  • +
  • Defined in services/Service.ts:339
    • @@ -886,7 +884,7 @@
    +
  • Defined in services/TimeSync.ts:18
  • @@ -90,7 +90,7 @@
    serviceName: string
    Returns TimeSynchronizationHandler
    +
  • Defined in services/Service.ts:33
  • Properties

    @@ -98,13 +98,13 @@
    +
  • Defined in services/TimeSync.ts:19
  • parent: StageLinq
    +
  • Defined in services/Service.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:71
  • +
  • Defined in services/Service.ts:79
  • +
  • Defined in services/Service.ts:54
  • +
  • Defined in services/Service.ts:62
  • +
  • Defined in services/Service.ts:45
  • +
  • Defined in services/TimeSync.ts:21
  • +
  • Defined in services/Service.ts:90
    • @@ -729,7 +729,7 @@
    +
  • Defined in utils/WriteContext.ts:11
  • @@ -75,32 +75,32 @@
    Optional p_options: Returns WriteContext
    +
  • Defined in utils/WriteContext.ts:14
  • Properties

    autoGrow: boolean
    +
  • Defined in utils/WriteContext.ts:12
  • buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -115,7 +115,7 @@

    Parameters

    p_size: number

    Returns void

    +
  • Defined in utils/WriteContext.ts:29
  • +
  • Defined in utils/WriteContext.ts:20
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/WriteContext.ts:43
  • +
  • Defined in utils/Context.ts:42
    • @@ -172,7 +172,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -186,7 +186,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/WriteContext.ts:25
  • +
  • Defined in utils/Context.ts:18
    • @@ -219,7 +219,7 @@
      p_buffer: Uint8Array
      p_bytes: number = -1

    Returns number

    +
  • Defined in utils/WriteContext.ts:51
    • @@ -232,7 +232,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:63
    • @@ -245,7 +245,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:92
    • @@ -258,7 +258,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:70
    • @@ -271,7 +271,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:99
    • @@ -284,7 +284,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:85
    • @@ -297,7 +297,7 @@

      Parameters

      p_value: bigint

    Returns number

    +
  • Defined in utils/WriteContext.ts:78
    • @@ -310,7 +310,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:106
  • +
  • Defined in types/common.ts:11
  • +
  • Defined in types/common.ts:16
  • +
  • Defined in types/options.ts:23
  • Returns string

    +
  • Defined in utils/getTempFilePath.ts:11
  • diff --git a/docs/functions/sleep.html b/docs/functions/sleep.html index 7cd24f0..7c15a20 100644 --- a/docs/functions/sleep.html +++ b/docs/functions/sleep.html @@ -26,7 +26,7 @@

    Parameters

    p_ms: number

    Returns Promise<unknown>

    +
  • Defined in utils/sleep.ts:1
  • diff --git a/docs/index.html b/docs/index.html index 1e7eb48..efbfb3f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,41 +33,124 @@

    Description

    + +

    Notes on Terminilogy

    +
    +

    An effort has been made to standardize the syntax used in the library, and to be consitent with the syntax Denon uses (when they have, in fact, been consistent themselves).

    + + +

    Physical & Network

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SyntaxDescriptionExample
    UnitA discrete physical player, controller, or mixerSC600, PRIME4, X1850
    DeviceA unique StageLinq network entity, represented by a DeviceIdSee DeviceId
    ServiceAn instance of a particular Service endpointStateMap, FileTransfer, BeatInfo
    DeviceIdThe GUID representing a StageLinq Device.12345678-1234-1234-1234-123456789ABC
    + + +

    Software & States

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SyntaxDescriptionExample
    Deck (1..4)A singular music-playing instance on a UnitAn SC5000 has 2 Decks, A PRIME4 has 4 Decks
    Layer (A..B)For switching between two Decks on a UnitLayer A is Deck 1, Layer B is Deck 2
    TrackA music file loaded on a Deck
    SongSometimes used interchangabley with Track in some State names
    +

    Implementing Selected Services

    We can choose which services to implement by including them in the StageLinqOptions parameter passed to Stagelinq on initialization.

    -
    const stageLinqOptions: StageLinqOptions = {
    downloadDbSources: false,
    maxRetries: 3,
    actingAs: ActingAsDevice.StageLinqJS,
    services: [
    ServiceList.StateMap,
    ServiceList.BeatInfo,
    ServiceList.FileTransfer,
    ],
    } +
    const stageLinqOptions: StageLinqOptions = {
    downloadDbSources: true,
    maxRetries: 3,
    actingAs: ActingAsDevice.StageLinqJS,
    services: [
    ServiceList.StateMap,
    ServiceList.BeatInfo,
    ServiceList.FileTransfer,
    ],
    } +
    + + +

    Starting StageLinq

    +
    +

    StageLinq is started as it was previously:

    +
    const stageLinq = new StageLinq(stageLinqOptions);

    await stageLinq.connect();

    Discovery

    -
    stageLinq.discovery.on('listening', () => {
    console.log(`[DISCOVERY] Listening`)
    });

    stageLinq.discovery.on('announcing', (info) => {
    console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`)
    });

    stageLinq.discovery.on('newDiscoveryDevice', (info) => {
    console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`)
    });

    stageLinq.discovery.on('updatedDiscoveryDevice', (info) => {
    console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`)
    }); +

    Discovery emits a number of messages which may be helpful when debugging.

    +
    stageLinq.discovery.on('listening', () => {
    console.log(`[DISCOVERY] Listening`)
    });

    stageLinq.discovery.on('announcing', (info) => {
    console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`)
    });

    stageLinq.discovery.on('newDiscoveryDevice', (info) => {
    console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`)
    });

    stageLinq.discovery.on('updatedDiscoveryDevice', (info) => {
    console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`)
    }); +
    +

    updatedDiscoveryDevice is emitted when a Device is broadcasting a new Directory port, which is indicative of a reset. The Device should automatically reconnect without any action required from the user.

    +

    Discovery offers a few methods for getting ConnectionInfos for Devices on the network:

    +
    /**
    * Get ConnectionInfo
    * @param {DeviceId} deviceId
    * @returns {ConnectionInfo}
    */
    public getConnectionInfo(deviceId: DeviceId): ConnectionInfo {
    return this.peers.get(deviceId.string);
    }

    /**
    * Get list of devices
    * @returns {string[]} An array of DeviceId strings
    */
    public getDeviceList(): string[] {
    return [...this.peers.keys()]
    }

    /**
    * Get array of device ConnectionInfos
    * @returns {ConnectionInfo[]} An array of ConnectionInfos
    */
    public getDevices(): ConnectionInfo[] {
    return [...this.peers.values()]
    }

    StateMap

    -
    stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => {
    console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`);
    service.subscribe();

    // To Utilize NowPlaying Status updates
    stageLinq.status.addPlayer({
    stateMap: service,
    address: service.socket.remoteAddress,
    port: service.socket.remotePort,
    deviceId: service.deviceId,
    })
    });

    stageLinq.stateMap.on('stateMessage', async (data: ServiceMessage<StateData>) => {
    console.log(`[STATEMAP] ${data.deviceId.string} ${data.message.name} => ${JSON.stringify(data.message.json)}`);
    }); +
    stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => {
    console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`);
    service.subscribe();
    });

    stageLinq.stateMap.on('stateMessage', async (data: StateData) => {
    console.log(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`);
    });

    Using NowPlaying-type updates from StageLinq.status

    -
    stageLinq.status.on('trackLoaded', async (status) => {
    console.log(`[STATUS] Track Loaded ${status.deviceId.string}`);
    });

    stageLinq.status.on('nowPlaying', async (status) => {
    console.log(`[STATUS] Now Playing ${status.deviceId.string}`);
    });

    stageLinq.status.on('stateChanged', async (status) => {
    console.log(`[STATUS] State Changed ${status.deviceId.string}`);
    }); +
    async function deckIsMaster(data: StateData) {
    if (data.json.state) {
    const deck = parseInt(data.name.substring(12, 13))
    await sleep(250);
    const track = stageLinq.status.getTrack(data.deviceId, deck)
    console.log(`Now Playing: `, track)
    }
    }

    async function songLoaded(data: StateData) {
    if (data.json.state) {
    const deck = parseInt(data.name.substring(12, 13))
    await sleep(250);
    const track = stageLinq.status.getTrack(data.deviceId, deck)
    console.log(`Track Loaded: `, track)
    if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) {
    const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath);
    console.log('Track DB Info: ', trackInfo)
    downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir()));
    }
    }
    }

    stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => {
    console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`);

    const info = stageLinq.devices.device(service.deviceId).info
    for (let i = 1; i <= info.unit.decks; i++) {
    service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster);
    service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded);
    }

    service.subscribe();
    });

    FileTransfer & Databases

    -
    stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => {
    console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`);
    });

    stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => {
    console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`);
    });

    stageLinq.fileTransfer.on('newSource', (source: Source) => {
    console.log(`[FILETRANSFER] Source Available: (${source.name})`);
    });

    stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => {
    console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`);
    });

    stageLinq.databases.on('dbDownloaded', (source: Source) => {
    console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`);
    }); +
    stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => {
    console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`);
    });

    stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => {
    console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`);
    });

    stageLinq.fileTransfer.on('newSource', (source: Source) => {
    console.log(`[FILETRANSFER] Source Available: (${source.name})`);
    });

    stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => {
    console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`);
    });

    stageLinq.databases.on('dbDownloaded', (source: Source) => {
    console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`);
    });

    BeatInfo

    -
    const beatOptions = {
    // Resolution for triggering callback
    // 0 = every message WARNING, it's a lot!
    // 1 = every beat
    // 4 = every 4 beats
    // .25 = every 1/4 beat
    everyNBeats: 1,
    }

    // User callback function.
    // Will be triggered everytime a player's beat counter crosses the resolution threshold
    function beatCallback(bd: ServiceMessage<BeatData>,) {
    let deckBeatString = ""
    for (let i = 0; i < bd.message.deckCount; i++) {
    deckBeatString += `Deck: ${i + 1} Beat: ${bd.message.deck[i].beat.toFixed(3)}/${bd.message.deck[i].totalBeats.toFixed(0)} `
    }
    console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.message.clock} ${deckBeatString}`);
    }

    //// callback is optional, BeatInfo messages can be consumed by:
    // - user callback
    // - event messages
    // - reading the register
    const beatMethod = {
    useCallback: true,
    useEvent: false,
    useRegister: false,
    };


    stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => {
    console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`)


    if (beatMethod.useCallback) {
    beatInfo.startBeatInfo(beatOptions, beatCallback);
    }

    if (beatMethod.useEvent) {
    beatInfo.startBeatInfo(beatOptions);
    stageLinq.beatInfo.on('beatMsg', (bd) => {
    if (bd.message) {
    beatCallback(bd);
    }
    });
    }

    if (beatMethod.useRegister) {
    beatInfo.startBeatInfo(beatOptions);

    function beatFunc(beatInfo: BeatInfo) {
    const beatData = beatInfo.getBeatData();
    if (beatData) beatCallback(beatData);
    }

    setTimeout(beatFunc, 4000, beatInfo)
    }

    })
    +
    const beatOptions = {
    // Resolution for triggering callback
    // 0 = every message WARNING, it's a lot!
    // 1 = every beat
    // 4 = every 4 beats
    // .25 = every 1/4 beat
    everyNBeats: 1,
    }

    // User callback function.
    // Will be triggered everytime a player's beat counter crosses the resolution threshold
    function beatCallback(bd: BeatData,) {
    let deckBeatString = ""
    for (let i = 0; i < bd.deckCount; i++) {
    deckBeatString += `Deck: ${i + 1} Beat: ${bd.deck[i].beat.toFixed(3)}/${bd.deck[i].totalBeats.toFixed(0)} `
    }
    console.log(`[BEATINFO] ${bd.deviceId.string} clock: ${bd.clock} ${deckBeatString}`);
    }

    //// callback is optional, BeatInfo messages can be consumed by:
    // - user callback
    // - event messages
    // - reading the register
    const beatMethod = {
    useCallback: true,
    useEvent: false,
    useRegister: false,
    };


    stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => {
    console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`)


    if (beatMethod.useCallback) {
    beatInfo.startBeatInfo(beatOptions, beatCallback);
    }

    if (beatMethod.useEvent) {
    beatInfo.startBeatInfo(beatOptions);
    stageLinq.beatInfo.on('beatMsg', (bd) => {
    if (bd.message) {
    beatCallback(bd);
    }
    });
    }

    if (beatMethod.useRegister) {
    beatInfo.startBeatInfo(beatOptions);

    function beatFunc(beatInfo: BeatInfo) {
    const beatData = beatInfo.getBeatData();
    if (beatData) beatCallback(beatData);
    }

    setTimeout(beatFunc, 4000, beatInfo)
    }

    })
    @@ -104,7 +187,6 @@

    diff --git a/docs/interfaces/BeatData.html b/docs/interfaces/BeatData.html index 31aeddb..9db96ff 100644 --- a/docs/interfaces/BeatData.html +++ b/docs/interfaces/BeatData.html @@ -20,7 +20,7 @@

    Hierarchy

    • BeatData
    +
  • Defined in services/BeatInfo.ts:23
  • @@ -31,6 +31,8 @@

    Properties

    Properties

    @@ -38,17 +40,27 @@

    Properties

    clock: bigint
    +
  • Defined in services/BeatInfo.ts:26
  • deck: deckBeatData[]
    +
  • Defined in services/BeatInfo.ts:28
  • deckCount: number
    +
  • Defined in services/BeatInfo.ts:27
  • +
    + +
    deviceId: DeviceId
    +
    + +
    service: BeatInfo
    +
  • deckCount
  • +
  • deviceId
  • +
  • service
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/ConnectionInfo.html b/docs/interfaces/ConnectionInfo.html index e854da6..e0fae61 100644 --- a/docs/interfaces/ConnectionInfo.html +++ b/docs/interfaces/ConnectionInfo.html @@ -22,7 +22,7 @@

    Hierarchy

    • ConnectionInfo
    +
  • Defined in types/messages.ts:14
  • @@ -33,12 +33,11 @@

    Properties

    Properties

    @@ -47,43 +46,29 @@
    +
  • Defined in types/messages.ts:6
  • address: string
    +
  • Defined in types/messages.ts:15
  • addressPort?: string
    -
    - -
    device?: {
        decks: number;
        name: string;
        type: string;
    }
    -
    -

    Type declaration

    -
      -
    • -
      decks: number
    • -
    • -
      name: string
    • -
    • -
      type: string
    +
  • Defined in types/messages.ts:21
  • - -
    deviceId?: DeviceId
    +
  • Defined in types/messages.ts:4
  • port: number
    +
  • Defined in types/messages.ts:11
  • software: {
        name: string;
        version: string;
    }
    @@ -96,19 +81,27 @@
    name: : string
    +
  • Defined in types/messages.ts:7
  • source: string
    -
    - -
    token: Uint8Array
    +
    + +
    unit?: {
        decks: number;
        name: string;
        type: string;
    }
    +
    +

    Type declaration

    +
      +
    • +
      decks: number
    • +
    • +
      name: string
    • +
    • +
      type: string
    +
  • Defined in types/messages.ts:16
  • +
  • unit?
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DirectoryData.html b/docs/interfaces/DirectoryData.html index 8d77e55..4a9b023 100644 --- a/docs/interfaces/DirectoryData.html +++ b/docs/interfaces/DirectoryData.html @@ -20,7 +20,7 @@

    Hierarchy

    • DirectoryData
    +
  • Defined in services/Directory.ts:15
  • @@ -36,7 +36,7 @@

    Properties

    deviceId: string
    +
  • Defined in services/Directory.ts:16
  • +
  • Defined in types/messages.ts:7
  • source: string
    -
    - -
    token: Uint8Array
    +
  • Defined in types/messages.ts:5
  • +
  • source
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DiscoveryMessageOptions.html b/docs/interfaces/DiscoveryMessageOptions.html index 67ef788..ab9a5ab 100644 --- a/docs/interfaces/DiscoveryMessageOptions.html +++ b/docs/interfaces/DiscoveryMessageOptions.html @@ -20,7 +20,7 @@

    Hierarchy

    • DiscoveryMessageOptions
    +
  • Defined in types/options.ts:3
  • @@ -40,27 +40,27 @@

    Properties

    name: string
    +
  • Defined in types/options.ts:4
  • port?: number
    +
  • Defined in types/options.ts:8
  • source: string
    +
  • Defined in types/options.ts:6
  • token: Uint8Array
    +
  • Defined in types/options.ts:7
  • version: string
    +
  • Defined in types/options.ts:5
  • +
  • data?
  • +
  • deviceId
  • +
  • offset?
  • +
  • service
  • +
  • size?
  • +
  • sources?
  • +
  • txid
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/FileTransferProgress.html b/docs/interfaces/FileTransferProgress.html index 20c6ed1..ae63ad9 100644 --- a/docs/interfaces/FileTransferProgress.html +++ b/docs/interfaces/FileTransferProgress.html @@ -20,7 +20,7 @@

    Hierarchy

    • FileTransferProgress
    +
  • Defined in services/FileTransfer.ts:37
  • @@ -39,22 +39,22 @@

    Properties

    bytesDownloaded: number
    +
  • Defined in services/FileTransfer.ts:40
  • percentComplete: number
    +
  • Defined in services/FileTransfer.ts:41
  • sizeLeft: number
    +
  • Defined in services/FileTransfer.ts:38
  • total: number
    +
  • Defined in services/FileTransfer.ts:39
  • diff --git a/docs/interfaces/ServiceMessage.html b/docs/interfaces/ServiceMessage.html index 7d45522..7c9a9f8 100644 --- a/docs/interfaces/ServiceMessage.html +++ b/docs/interfaces/ServiceMessage.html @@ -25,7 +25,7 @@

    Hierarchy

    • ServiceMessage
    +
  • Defined in types/messages.ts:24
  • @@ -33,33 +33,21 @@

    Properties

    -
    - -
    deviceId: DeviceId
    - +
    id: number
    +
  • Defined in types/messages.ts:25
  • message: T
    -
    - -
    socket: Socket
    +
  • Defined in types/messages.ts:26
  • +
  • message
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/Source.html b/docs/interfaces/Source.html index e0c530b..d1cda8d 100644 --- a/docs/interfaces/Source.html +++ b/docs/interfaces/Source.html @@ -20,7 +20,7 @@

    Hierarchy

    • Source
    +
  • Defined in types/models/Source.ts:6
  • @@ -60,22 +60,22 @@
    location:
    size: number
    +
  • Defined in types/models/Source.ts:10
  • deviceId: DeviceId
    +
  • Defined in types/models/Source.ts:8
  • name: string
    +
  • Defined in types/models/Source.ts:7
  • service: FileTransfer
    +
  • Defined in types/models/Source.ts:9
  • diff --git a/docs/interfaces/StateData.html b/docs/interfaces/StateData.html index 776d0c2..9134995 100644 --- a/docs/interfaces/StateData.html +++ b/docs/interfaces/StateData.html @@ -20,7 +20,7 @@

    Hierarchy

    • StateData
    +
  • Defined in services/StateMap.ts:50
  • @@ -28,18 +28,24 @@

    Properties

    +
    + +
    deviceId: DeviceId
    - +
    interval?: number
    +
  • Defined in services/StateMap.ts:60
  • json?: {
        state?: boolean;
        string?: string;
        type: number;
        value?: number;
    }
    @@ -55,17 +61,17 @@
    type:
    Optional value?: number
    +
  • Defined in services/StateMap.ts:54
  • name?: string
    +
  • Defined in services/StateMap.ts:53
  • service: StateMap
    +
  • Defined in services/StateMap.ts:51
  • Variables

    @@ -88,8 +85,8 @@

    Variables

    LISTEN_PORT LISTEN_TIMEOUT MESSAGE_TIMEOUT -StageLinqValueObj -deviceTypes +StateNames +Units

    Functions

    @@ -120,7 +117,6 @@

    diff --git a/docs/types/IpAddress.html b/docs/types/IpAddress.html index 5ecb665..d372d15 100644 --- a/docs/types/IpAddress.html +++ b/docs/types/IpAddress.html @@ -17,7 +17,7 @@

    Type alias IpAddress

    IpAddress: string
    +
  • Defined in types/messages.ts:31
  • diff --git a/docs/types/IpAddressPort.html b/docs/types/IpAddressPort.html index 08fc63d..fe92f72 100644 --- a/docs/types/IpAddressPort.html +++ b/docs/types/IpAddressPort.html @@ -17,7 +17,7 @@

    Type alias IpAddressPort

    IpAddressPort: string
    +
  • Defined in types/messages.ts:32
  • diff --git a/docs/types/Mixer.html b/docs/types/Mixer.html index 42e457e..ad3b899 100644 --- a/docs/types/Mixer.html +++ b/docs/types/Mixer.html @@ -17,7 +17,7 @@

    Type alias Mixer

    Mixer: typeof stagelinqConfig.mixer
    +
  • Defined in services/StateMap.ts:15
  • diff --git a/docs/types/Player.html b/docs/types/Player.html index 13ecc5e..32a9afa 100644 --- a/docs/types/Player.html +++ b/docs/types/Player.html @@ -17,7 +17,7 @@

    Type alias Player

    Player: typeof stagelinqConfig.player
    +
  • Defined in services/StateMap.ts:13
  • diff --git a/docs/types/PlayerDeck.html b/docs/types/PlayerDeck.html index bc86e3e..7c40012 100644 --- a/docs/types/PlayerDeck.html +++ b/docs/types/PlayerDeck.html @@ -17,7 +17,7 @@

    Type alias PlayerDeck

    PlayerDeck: typeof stagelinqConfig.playerDeck
    +
  • Defined in services/StateMap.ts:14
  • diff --git a/docs/types/ServiceData.html b/docs/types/ServiceData.html index f8d458e..0806e65 100644 --- a/docs/types/ServiceData.html +++ b/docs/types/ServiceData.html @@ -28,7 +28,7 @@
    Optional service
    Optional socket?: Socket
    +
  • Defined in services/Service.ts:14
  • diff --git a/docs/types/StateMapDevice.html b/docs/types/StateMapDevice.html deleted file mode 100644 index 7a9fc33..0000000 --- a/docs/types/StateMapDevice.html +++ /dev/null @@ -1,109 +0,0 @@ -StateMapDevice | StageLinqJS
    -
    - -
    - -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/variables/ANNOUNCEMENT_INTERVAL.html b/docs/variables/ANNOUNCEMENT_INTERVAL.html index 63dd0a6..cd72003 100644 --- a/docs/variables/ANNOUNCEMENT_INTERVAL.html +++ b/docs/variables/ANNOUNCEMENT_INTERVAL.html @@ -17,7 +17,7 @@

    Variable ANNOUNCEMENT_INTERVALConst

    ANNOUNCEMENT_INTERVAL: 1000 = 1000
    +
  • Defined in types/common.ts:1
  • diff --git a/docs/variables/ActingAsDevice.html b/docs/variables/ActingAsDevice.html index 10bacde..0af0000 100644 --- a/docs/variables/ActingAsDevice.html +++ b/docs/variables/ActingAsDevice.html @@ -22,7 +22,7 @@

    Type declaration

  • [name: string]: DiscoveryMessageOptions
  • +
  • Defined in types/options.ts:35
  • diff --git a/docs/variables/CHUNK_SIZE.html b/docs/variables/CHUNK_SIZE.html index b0a65fb..1050547 100644 --- a/docs/variables/CHUNK_SIZE.html +++ b/docs/variables/CHUNK_SIZE.html @@ -17,7 +17,7 @@

    Variable CHUNK_SIZEConst

    CHUNK_SIZE: 4096 = 4096
    +
  • Defined in services/FileTransfer.ts:13
  • diff --git a/docs/variables/CONNECT_TIMEOUT.html b/docs/variables/CONNECT_TIMEOUT.html index 773125a..7a00e93 100644 --- a/docs/variables/CONNECT_TIMEOUT.html +++ b/docs/variables/CONNECT_TIMEOUT.html @@ -17,7 +17,7 @@

    Variable CONNECT_TIMEOUTConst

    CONNECT_TIMEOUT: 5000 = 5000
    +
  • Defined in types/common.ts:5
  • diff --git a/docs/variables/DISCOVERY_MESSAGE_MARKER.html b/docs/variables/DISCOVERY_MESSAGE_MARKER.html index 4971e25..fd3f650 100644 --- a/docs/variables/DISCOVERY_MESSAGE_MARKER.html +++ b/docs/variables/DISCOVERY_MESSAGE_MARKER.html @@ -17,7 +17,7 @@

    Variable DISCOVERY_MESSAGE_MARKERConst

    DISCOVERY_MESSAGE_MARKER: "airD" = 'airD'
    +
  • Defined in types/common.ts:7
  • diff --git a/docs/variables/DOWNLOAD_TIMEOUT.html b/docs/variables/DOWNLOAD_TIMEOUT.html index d5f7328..438ab93 100644 --- a/docs/variables/DOWNLOAD_TIMEOUT.html +++ b/docs/variables/DOWNLOAD_TIMEOUT.html @@ -17,7 +17,7 @@

    Variable DOWNLOAD_TIMEOUTConst

    DOWNLOAD_TIMEOUT: 60000 = 60000
    +
  • Defined in types/common.ts:6
  • diff --git a/docs/variables/LISTEN_PORT.html b/docs/variables/LISTEN_PORT.html index b8d1132..682bbc5 100644 --- a/docs/variables/LISTEN_PORT.html +++ b/docs/variables/LISTEN_PORT.html @@ -17,7 +17,7 @@

    Variable LISTEN_PORTConst

    LISTEN_PORT: 51337 = 51337
    +
  • Defined in types/common.ts:2
  • diff --git a/docs/variables/LISTEN_TIMEOUT.html b/docs/variables/LISTEN_TIMEOUT.html index 87c0449..d670fb6 100644 --- a/docs/variables/LISTEN_TIMEOUT.html +++ b/docs/variables/LISTEN_TIMEOUT.html @@ -17,7 +17,7 @@

    Variable LISTEN_TIMEOUTConst

    LISTEN_TIMEOUT: 5000 = 5000
    +
  • Defined in types/common.ts:3
  • diff --git a/docs/variables/MESSAGE_TIMEOUT.html b/docs/variables/MESSAGE_TIMEOUT.html index 4cc7765..0d5476d 100644 --- a/docs/variables/MESSAGE_TIMEOUT.html +++ b/docs/variables/MESSAGE_TIMEOUT.html @@ -17,7 +17,7 @@

    Variable MESSAGE_TIMEOUTConst

    MESSAGE_TIMEOUT: 3000 = 3000
    +
  • Defined in types/common.ts:4
  • diff --git a/docs/variables/StageLinqValueObj.html b/docs/variables/StateNames.html similarity index 61% rename from docs/variables/StageLinqValueObj.html rename to docs/variables/StateNames.html index b1fb959..7c0d0ee 100644 --- a/docs/variables/StageLinqValueObj.html +++ b/docs/variables/StateNames.html @@ -1,4 +1,4 @@ -StageLinqValueObj | StageLinqJS
    +StateNames | StageLinqJS
    +
    StateNames: {
        mixer: {
            MixerCH1faderPosition: string;
            MixerCH2faderPosition: string;
            MixerCH3faderPosition: string;
            MixerCH4faderPosition: string;
            MixerChannelAssignment1: string;
            MixerChannelAssignment2: string;
            MixerChannelAssignment3: string;
            MixerChannelAssignment4: string;
            MixerCrossfaderPosition: string;
            MixerNumberOfChannels: string;
        };
        player: {
            ClientLibrarianDevicesControllerCurrentDevice: string;
            ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: string;
            ClientLibrarianDevicesControllerHasSDCardConnected: string;
            ClientLibrarianDevicesControllerHasUsbDeviceConnected: string;
            ClientPreferencesLayerA: string;
            ClientPreferencesLayerB: string;
            ClientPreferencesPlayer: string;
            ClientPreferencesPlayerJogColorA: string;
            ClientPreferencesPlayerJogColorB: string;
            ClientPreferencesProfileApplicationPlayerColor1: string;
            ClientPreferencesProfileApplicationPlayerColor1A: string;
            ClientPreferencesProfileApplicationPlayerColor1B: string;
            ClientPreferencesProfileApplicationPlayerColor2: string;
            ClientPreferencesProfileApplicationPlayerColor2A: string;
            ClientPreferencesProfileApplicationPlayerColor2B: string;
            ClientPreferencesProfileApplicationPlayerColor3: string;
            ClientPreferencesProfileApplicationPlayerColor3A: string;
            ClientPreferencesProfileApplicationPlayerColor3B: string;
            ClientPreferencesProfileApplicationPlayerColor4: string;
            ClientPreferencesProfileApplicationPlayerColor4A: string;
            ClientPreferencesProfileApplicationPlayerColor4B: string;
            ClientPreferencesProfileApplicationSyncMode: string;
            EngineDeck1CurrentBPM: string;
            EngineDeck1DeckIsMaster: string;
            EngineDeck1ExternalMixerVolume: string;
            EngineDeck1ExternalScratchWheelTouch: string;
            EngineDeck1PadsView: string;
            EngineDeck1Play: string;
            EngineDeck1PlayState: string;
            EngineDeck1PlayStatePath: string;
            EngineDeck1Speed: string;
            EngineDeck1SpeedNeutral: string;
            EngineDeck1SpeedOffsetDown: string;
            EngineDeck1SpeedOffsetUp: string;
            EngineDeck1SpeedRange: string;
            EngineDeck1SpeedState: string;
            EngineDeck1SyncMode: string;
            EngineDeck1SyncPlayState: string;
            EngineDeck1TrackArtistName: string;
            EngineDeck1TrackBleep: string;
            EngineDeck1TrackCuePosition: string;
            EngineDeck1TrackCurrentBPM: string;
            EngineDeck1TrackCurrentKeyIndex: string;
            EngineDeck1TrackCurrentLoopInPosition: string;
            EngineDeck1TrackCurrentLoopOutPosition: string;
            EngineDeck1TrackCurrentLoopSizeInBeats: string;
            EngineDeck1TrackKeyLock: string;
            EngineDeck1TrackLoopEnableState: string;
            EngineDeck1TrackLoopQuickLoop1: string;
            EngineDeck1TrackLoopQuickLoop2: string;
            EngineDeck1TrackLoopQuickLoop3: string;
            EngineDeck1TrackLoopQuickLoop4: string;
            EngineDeck1TrackLoopQuickLoop5: string;
            EngineDeck1TrackLoopQuickLoop6: string;
            EngineDeck1TrackLoopQuickLoop7: string;
            EngineDeck1TrackLoopQuickLoop8: string;
            EngineDeck1TrackPlayPauseLEDState: string;
            EngineDeck1TrackSampleRate: string;
            EngineDeck1TrackSongAnalyzed: string;
            EngineDeck1TrackSongLoaded: string;
            EngineDeck1TrackSongName: string;
            EngineDeck1TrackSoundSwitchGUID: string;
            EngineDeck1TrackTrackBytes: string;
            EngineDeck1TrackTrackData: string;
            EngineDeck1TrackTrackLength: string;
            EngineDeck1TrackTrackName: string;
            EngineDeck1TrackTrackNetworkPath: string;
            EngineDeck1TrackTrackURI: string;
            EngineDeck1TrackTrackWasPlayed: string;
            EngineDeck2CurrentBPM: string;
            EngineDeck2DeckIsMaster: string;
            EngineDeck2ExternalMixerVolume: string;
            EngineDeck2ExternalScratchWheelTouch: string;
            EngineDeck2PadsView: string;
            EngineDeck2Play: string;
            EngineDeck2PlayState: string;
            EngineDeck2PlayStatePath: string;
            EngineDeck2Speed: string;
            EngineDeck2SpeedNeutral: string;
            EngineDeck2SpeedOffsetDown: string;
            EngineDeck2SpeedOffsetUp: string;
            EngineDeck2SpeedRange: string;
            EngineDeck2SpeedState: string;
            EngineDeck2SyncMode: string;
            EngineDeck2SyncPlayState: string;
            EngineDeck2TrackArtistName: string;
            EngineDeck2TrackBleep: string;
            EngineDeck2TrackCuePosition: string;
            EngineDeck2TrackCurrentBPM: string;
            EngineDeck2TrackCurrentKeyIndex: string;
            EngineDeck2TrackCurrentLoopInPosition: string;
            EngineDeck2TrackCurrentLoopOutPosition: string;
            EngineDeck2TrackCurrentLoopSizeInBeats: string;
            EngineDeck2TrackKeyLock: string;
            EngineDeck2TrackLoopEnableState: string;
            EngineDeck2TrackLoopQuickLoop1: string;
            EngineDeck2TrackLoopQuickLoop2: string;
            EngineDeck2TrackLoopQuickLoop3: string;
            EngineDeck2TrackLoopQuickLoop4: string;
            EngineDeck2TrackLoopQuickLoop5: string;
            EngineDeck2TrackLoopQuickLoop6: string;
            EngineDeck2TrackLoopQuickLoop7: string;
            EngineDeck2TrackLoopQuickLoop8: string;
            EngineDeck2TrackPlayPauseLEDState: string;
            EngineDeck2TrackSampleRate: string;
            EngineDeck2TrackSongAnalyzed: string;
            EngineDeck2TrackSongLoaded: string;
            EngineDeck2TrackSongName: string;
            EngineDeck2TrackSoundSwitchGUID: string;
            EngineDeck2TrackTrackBytes: string;
            EngineDeck2TrackTrackData: string;
            EngineDeck2TrackTrackLength: string;
            EngineDeck2TrackTrackName: string;
            EngineDeck2TrackTrackNetworkPath: string;
            EngineDeck2TrackTrackURI: string;
            EngineDeck2TrackTrackWasPlayed: string;
            EngineDeck3CurrentBPM: string;
            EngineDeck3DeckIsMaster: string;
            EngineDeck3ExternalMixerVolume: string;
            EngineDeck3ExternalScratchWheelTouch: string;
            EngineDeck3PadsView: string;
            EngineDeck3Play: string;
            EngineDeck3PlayState: string;
            EngineDeck3PlayStatePath: string;
            EngineDeck3Speed: string;
            EngineDeck3SpeedNeutral: string;
            EngineDeck3SpeedOffsetDown: string;
            EngineDeck3SpeedOffsetUp: string;
            EngineDeck3SpeedRange: string;
            EngineDeck3SpeedState: string;
            EngineDeck3SyncMode: string;
            EngineDeck3SyncPlayState: string;
            EngineDeck3TrackArtistName: string;
            EngineDeck3TrackBleep: string;
            EngineDeck3TrackCuePosition: string;
            EngineDeck3TrackCurrentBPM: string;
            EngineDeck3TrackCurrentKeyIndex: string;
            EngineDeck3TrackCurrentLoopInPosition: string;
            EngineDeck3TrackCurrentLoopOutPosition: string;
            EngineDeck3TrackCurrentLoopSizeInBeats: string;
            EngineDeck3TrackKeyLock: string;
            EngineDeck3TrackLoopEnableState: string;
            EngineDeck3TrackLoopQuickLoop1: string;
            EngineDeck3TrackLoopQuickLoop2: string;
            EngineDeck3TrackLoopQuickLoop3: string;
            EngineDeck3TrackLoopQuickLoop4: string;
            EngineDeck3TrackLoopQuickLoop5: string;
            EngineDeck3TrackLoopQuickLoop6: string;
            EngineDeck3TrackLoopQuickLoop7: string;
            EngineDeck3TrackLoopQuickLoop8: string;
            EngineDeck3TrackPlayPauseLEDState: string;
            EngineDeck3TrackSampleRate: string;
            EngineDeck3TrackSongAnalyzed: string;
            EngineDeck3TrackSongLoaded: string;
            EngineDeck3TrackSongName: string;
            EngineDeck3TrackSoundSwitchGUID: string;
            EngineDeck3TrackTrackBytes: string;
            EngineDeck3TrackTrackData: string;
            EngineDeck3TrackTrackLength: string;
            EngineDeck3TrackTrackName: string;
            EngineDeck3TrackTrackNetworkPath: string;
            EngineDeck3TrackTrackURI: string;
            EngineDeck3TrackTrackWasPlayed: string;
            EngineDeck4CurrentBPM: string;
            EngineDeck4DeckIsMaster: string;
            EngineDeck4ExternalMixerVolume: string;
            EngineDeck4ExternalScratchWheelTouch: string;
            EngineDeck4PadsView: string;
            EngineDeck4Play: string;
            EngineDeck4PlayState: string;
            EngineDeck4PlayStatePath: string;
            EngineDeck4Speed: string;
            EngineDeck4SpeedNeutral: string;
            EngineDeck4SpeedOffsetDown: string;
            EngineDeck4SpeedOffsetUp: string;
            EngineDeck4SpeedRange: string;
            EngineDeck4SpeedState: string;
            EngineDeck4SyncMode: string;
            EngineDeck4SyncPlayState: string;
            EngineDeck4TrackArtistName: string;
            EngineDeck4TrackBleep: string;
            EngineDeck4TrackCuePosition: string;
            EngineDeck4TrackCurrentBPM: string;
            EngineDeck4TrackCurrentKeyIndex: string;
            EngineDeck4TrackCurrentLoopInPosition: string;
            EngineDeck4TrackCurrentLoopOutPosition: string;
            EngineDeck4TrackCurrentLoopSizeInBeats: string;
            EngineDeck4TrackKeyLock: string;
            EngineDeck4TrackLoopEnableState: string;
            EngineDeck4TrackLoopQuickLoop1: string;
            EngineDeck4TrackLoopQuickLoop2: string;
            EngineDeck4TrackLoopQuickLoop3: string;
            EngineDeck4TrackLoopQuickLoop4: string;
            EngineDeck4TrackLoopQuickLoop5: string;
            EngineDeck4TrackLoopQuickLoop6: string;
            EngineDeck4TrackLoopQuickLoop7: string;
            EngineDeck4TrackLoopQuickLoop8: string;
            EngineDeck4TrackPlayPauseLEDState: string;
            EngineDeck4TrackSampleRate: string;
            EngineDeck4TrackSongAnalyzed: string;
            EngineDeck4TrackSongLoaded: string;
            EngineDeck4TrackSongName: string;
            EngineDeck4TrackSoundSwitchGUID: string;
            EngineDeck4TrackTrackBytes: string;
            EngineDeck4TrackTrackData: string;
            EngineDeck4TrackTrackLength: string;
            EngineDeck4TrackTrackName: string;
            EngineDeck4TrackTrackNetworkPath: string;
            EngineDeck4TrackTrackURI: string;
            EngineDeck4TrackTrackWasPlayed: string;
            EngineDeckCount: string;
            EngineMasterMasterTempo: string;
            EngineSyncNetworkMasterStatus: string;
            EngineSyncNetworkSyncType: string;
            GUIDecksDeckActiveDeck: string;
        };
    } = ...

    Type declaration

      @@ -43,11 +43,57 @@
      MixerCrossfaderPosition:
      MixerNumberOfChannels: string
  • -
    player: {
        EngineDeck1CurrentBPM: string;
        EngineDeck1ExternalMixerVolume: string;
        EngineDeck1ExternalScratchWheelTouch: string;
        EngineDeck1PadsView: string;
        EngineDeck1Play: string;
        EngineDeck1PlayState: string;
        EngineDeck1PlayStatePath: string;
        EngineDeck1Speed: string;
        EngineDeck1SpeedNeutral: string;
        EngineDeck1SpeedOffsetDown: string;
        EngineDeck1SpeedOffsetUp: string;
        EngineDeck1SpeedRange: string;
        EngineDeck1SpeedState: string;
        EngineDeck1SyncMode: string;
        EngineDeck1TrackArtistName: string;
        EngineDeck1TrackBleep: string;
        EngineDeck1TrackCuePosition: string;
        EngineDeck1TrackCurrentBPM: string;
        EngineDeck1TrackCurrentKeyIndex: string;
        EngineDeck1TrackCurrentLoopInPosition: string;
        EngineDeck1TrackCurrentLoopOutPosition: string;
        EngineDeck1TrackCurrentLoopSizeInBeats: string;
        EngineDeck1TrackKeyLock: string;
        EngineDeck1TrackLoopEnableState: string;
        EngineDeck1TrackLoopQuickLoop1: string;
        EngineDeck1TrackLoopQuickLoop2: string;
        EngineDeck1TrackLoopQuickLoop3: string;
        EngineDeck1TrackLoopQuickLoop4: string;
        EngineDeck1TrackLoopQuickLoop5: string;
        EngineDeck1TrackLoopQuickLoop6: string;
        EngineDeck1TrackLoopQuickLoop7: string;
        EngineDeck1TrackLoopQuickLoop8: string;
        EngineDeck1TrackPlayPauseLEDState: string;
        EngineDeck1TrackSampleRate: string;
        EngineDeck1TrackSongAnalyzed: string;
        EngineDeck1TrackSongLoaded: string;
        EngineDeck1TrackSongName: string;
        EngineDeck1TrackSoundSwitchGUID: string;
        EngineDeck1TrackTrackBytes: string;
        EngineDeck1TrackTrackData: string;
        EngineDeck1TrackTrackLength: string;
        EngineDeck1TrackTrackName: string;
        EngineDeck1TrackTrackNetworkPath: string;
        EngineDeck1TrackTrackURI: string;
        EngineDeck1TrackTrackWasPlayed: string;
        EngineDeck2CurrentBPM: string;
        EngineDeck2ExternalMixerVolume: string;
        EngineDeck2ExternalScratchWheelTouch: string;
        EngineDeck2PadsView: string;
        EngineDeck2Play: string;
        EngineDeck2PlayState: string;
        EngineDeck2PlayStatePath: string;
        EngineDeck2Speed: string;
        EngineDeck2SpeedNeutral: string;
        EngineDeck2SpeedOffsetDown: string;
        EngineDeck2SpeedOffsetUp: string;
        EngineDeck2SpeedRange: string;
        EngineDeck2SpeedState: string;
        EngineDeck2SyncMode: string;
        EngineDeck2TrackArtistName: string;
        EngineDeck2TrackBleep: string;
        EngineDeck2TrackCuePosition: string;
        EngineDeck2TrackCurrentBPM: string;
        EngineDeck2TrackCurrentKeyIndex: string;
        EngineDeck2TrackCurrentLoopInPosition: string;
        EngineDeck2TrackCurrentLoopOutPosition: string;
        EngineDeck2TrackCurrentLoopSizeInBeats: string;
        EngineDeck2TrackKeyLock: string;
        EngineDeck2TrackLoopEnableState: string;
        EngineDeck2TrackLoopQuickLoop1: string;
        EngineDeck2TrackLoopQuickLoop2: string;
        EngineDeck2TrackLoopQuickLoop3: string;
        EngineDeck2TrackLoopQuickLoop4: string;
        EngineDeck2TrackLoopQuickLoop5: string;
        EngineDeck2TrackLoopQuickLoop6: string;
        EngineDeck2TrackLoopQuickLoop7: string;
        EngineDeck2TrackLoopQuickLoop8: string;
        EngineDeck2TrackPlayPauseLEDState: string;
        EngineDeck2TrackSampleRate: string;
        EngineDeck2TrackSongAnalyzed: string;
        EngineDeck2TrackSongLoaded: string;
        EngineDeck2TrackSongName: string;
        EngineDeck2TrackSoundSwitchGUID: string;
        EngineDeck2TrackTrackBytes: string;
        EngineDeck2TrackTrackData: string;
        EngineDeck2TrackTrackLength: string;
        EngineDeck2TrackTrackName: string;
        EngineDeck2TrackTrackNetworkPath: string;
        EngineDeck2TrackTrackURI: string;
        EngineDeck2TrackTrackWasPlayed: string;
        EngineDeck3CurrentBPM: string;
        EngineDeck3ExternalMixerVolume: string;
        EngineDeck3ExternalScratchWheelTouch: string;
        EngineDeck3PadsView: string;
        EngineDeck3Play: string;
        EngineDeck3PlayState: string;
        EngineDeck3PlayStatePath: string;
        EngineDeck3Speed: string;
        EngineDeck3SpeedNeutral: string;
        EngineDeck3SpeedOffsetDown: string;
        EngineDeck3SpeedOffsetUp: string;
        EngineDeck3SpeedRange: string;
        EngineDeck3SpeedState: string;
        EngineDeck3SyncMode: string;
        EngineDeck3TrackArtistName: string;
        EngineDeck3TrackBleep: string;
        EngineDeck3TrackCuePosition: string;
        EngineDeck3TrackCurrentBPM: string;
        EngineDeck3TrackCurrentKeyIndex: string;
        EngineDeck3TrackCurrentLoopInPosition: string;
        EngineDeck3TrackCurrentLoopOutPosition: string;
        EngineDeck3TrackCurrentLoopSizeInBeats: string;
        EngineDeck3TrackKeyLock: string;
        EngineDeck3TrackLoopEnableState: string;
        EngineDeck3TrackLoopQuickLoop1: string;
        EngineDeck3TrackLoopQuickLoop2: string;
        EngineDeck3TrackLoopQuickLoop3: string;
        EngineDeck3TrackLoopQuickLoop4: string;
        EngineDeck3TrackLoopQuickLoop5: string;
        EngineDeck3TrackLoopQuickLoop6: string;
        EngineDeck3TrackLoopQuickLoop7: string;
        EngineDeck3TrackLoopQuickLoop8: string;
        EngineDeck3TrackPlayPauseLEDState: string;
        EngineDeck3TrackSampleRate: string;
        EngineDeck3TrackSongAnalyzed: string;
        EngineDeck3TrackSongLoaded: string;
        EngineDeck3TrackSongName: string;
        EngineDeck3TrackSoundSwitchGUID: string;
        EngineDeck3TrackTrackBytes: string;
        EngineDeck3TrackTrackData: string;
        EngineDeck3TrackTrackLength: string;
        EngineDeck3TrackTrackName: string;
        EngineDeck3TrackTrackNetworkPath: string;
        EngineDeck3TrackTrackURI: string;
        EngineDeck3TrackTrackWasPlayed: string;
        EngineDeck4CurrentBPM: string;
        EngineDeck4ExternalMixerVolume: string;
        EngineDeck4ExternalScratchWheelTouch: string;
        EngineDeck4PadsView: string;
        EngineDeck4Play: string;
        EngineDeck4PlayState: string;
        EngineDeck4PlayStatePath: string;
        EngineDeck4Speed: string;
        EngineDeck4SpeedNeutral: string;
        EngineDeck4SpeedOffsetDown: string;
        EngineDeck4SpeedOffsetUp: string;
        EngineDeck4SpeedRange: string;
        EngineDeck4SpeedState: string;
        EngineDeck4SyncMode: string;
        EngineDeck4TrackArtistName: string;
        EngineDeck4TrackBleep: string;
        EngineDeck4TrackCuePosition: string;
        EngineDeck4TrackCurrentBPM: string;
        EngineDeck4TrackCurrentKeyIndex: string;
        EngineDeck4TrackCurrentLoopInPosition: string;
        EngineDeck4TrackCurrentLoopOutPosition: string;
        EngineDeck4TrackCurrentLoopSizeInBeats: string;
        EngineDeck4TrackKeyLock: string;
        EngineDeck4TrackLoopEnableState: string;
        EngineDeck4TrackLoopQuickLoop1: string;
        EngineDeck4TrackLoopQuickLoop2: string;
        EngineDeck4TrackLoopQuickLoop3: string;
        EngineDeck4TrackLoopQuickLoop4: string;
        EngineDeck4TrackLoopQuickLoop5: string;
        EngineDeck4TrackLoopQuickLoop6: string;
        EngineDeck4TrackLoopQuickLoop7: string;
        EngineDeck4TrackLoopQuickLoop8: string;
        EngineDeck4TrackPlayPauseLEDState: string;
        EngineDeck4TrackSampleRate: string;
        EngineDeck4TrackSongAnalyzed: string;
        EngineDeck4TrackSongLoaded: string;
        EngineDeck4TrackSongName: string;
        EngineDeck4TrackSoundSwitchGUID: string;
        EngineDeck4TrackTrackBytes: string;
        EngineDeck4TrackTrackData: string;
        EngineDeck4TrackTrackLength: string;
        EngineDeck4TrackTrackName: string;
        EngineDeck4TrackTrackNetworkPath: string;
        EngineDeck4TrackTrackURI: string;
        EngineDeck4TrackTrackWasPlayed: string;
        EngineDeckCount: string;
        EngineMasterMasterTempo: string;
        EngineSyncNetworkMasterStatus: string;
    }
    +
    player: {
        ClientLibrarianDevicesControllerCurrentDevice: string;
        ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: string;
        ClientLibrarianDevicesControllerHasSDCardConnected: string;
        ClientLibrarianDevicesControllerHasUsbDeviceConnected: string;
        ClientPreferencesLayerA: string;
        ClientPreferencesLayerB: string;
        ClientPreferencesPlayer: string;
        ClientPreferencesPlayerJogColorA: string;
        ClientPreferencesPlayerJogColorB: string;
        ClientPreferencesProfileApplicationPlayerColor1: string;
        ClientPreferencesProfileApplicationPlayerColor1A: string;
        ClientPreferencesProfileApplicationPlayerColor1B: string;
        ClientPreferencesProfileApplicationPlayerColor2: string;
        ClientPreferencesProfileApplicationPlayerColor2A: string;
        ClientPreferencesProfileApplicationPlayerColor2B: string;
        ClientPreferencesProfileApplicationPlayerColor3: string;
        ClientPreferencesProfileApplicationPlayerColor3A: string;
        ClientPreferencesProfileApplicationPlayerColor3B: string;
        ClientPreferencesProfileApplicationPlayerColor4: string;
        ClientPreferencesProfileApplicationPlayerColor4A: string;
        ClientPreferencesProfileApplicationPlayerColor4B: string;
        ClientPreferencesProfileApplicationSyncMode: string;
        EngineDeck1CurrentBPM: string;
        EngineDeck1DeckIsMaster: string;
        EngineDeck1ExternalMixerVolume: string;
        EngineDeck1ExternalScratchWheelTouch: string;
        EngineDeck1PadsView: string;
        EngineDeck1Play: string;
        EngineDeck1PlayState: string;
        EngineDeck1PlayStatePath: string;
        EngineDeck1Speed: string;
        EngineDeck1SpeedNeutral: string;
        EngineDeck1SpeedOffsetDown: string;
        EngineDeck1SpeedOffsetUp: string;
        EngineDeck1SpeedRange: string;
        EngineDeck1SpeedState: string;
        EngineDeck1SyncMode: string;
        EngineDeck1SyncPlayState: string;
        EngineDeck1TrackArtistName: string;
        EngineDeck1TrackBleep: string;
        EngineDeck1TrackCuePosition: string;
        EngineDeck1TrackCurrentBPM: string;
        EngineDeck1TrackCurrentKeyIndex: string;
        EngineDeck1TrackCurrentLoopInPosition: string;
        EngineDeck1TrackCurrentLoopOutPosition: string;
        EngineDeck1TrackCurrentLoopSizeInBeats: string;
        EngineDeck1TrackKeyLock: string;
        EngineDeck1TrackLoopEnableState: string;
        EngineDeck1TrackLoopQuickLoop1: string;
        EngineDeck1TrackLoopQuickLoop2: string;
        EngineDeck1TrackLoopQuickLoop3: string;
        EngineDeck1TrackLoopQuickLoop4: string;
        EngineDeck1TrackLoopQuickLoop5: string;
        EngineDeck1TrackLoopQuickLoop6: string;
        EngineDeck1TrackLoopQuickLoop7: string;
        EngineDeck1TrackLoopQuickLoop8: string;
        EngineDeck1TrackPlayPauseLEDState: string;
        EngineDeck1TrackSampleRate: string;
        EngineDeck1TrackSongAnalyzed: string;
        EngineDeck1TrackSongLoaded: string;
        EngineDeck1TrackSongName: string;
        EngineDeck1TrackSoundSwitchGUID: string;
        EngineDeck1TrackTrackBytes: string;
        EngineDeck1TrackTrackData: string;
        EngineDeck1TrackTrackLength: string;
        EngineDeck1TrackTrackName: string;
        EngineDeck1TrackTrackNetworkPath: string;
        EngineDeck1TrackTrackURI: string;
        EngineDeck1TrackTrackWasPlayed: string;
        EngineDeck2CurrentBPM: string;
        EngineDeck2DeckIsMaster: string;
        EngineDeck2ExternalMixerVolume: string;
        EngineDeck2ExternalScratchWheelTouch: string;
        EngineDeck2PadsView: string;
        EngineDeck2Play: string;
        EngineDeck2PlayState: string;
        EngineDeck2PlayStatePath: string;
        EngineDeck2Speed: string;
        EngineDeck2SpeedNeutral: string;
        EngineDeck2SpeedOffsetDown: string;
        EngineDeck2SpeedOffsetUp: string;
        EngineDeck2SpeedRange: string;
        EngineDeck2SpeedState: string;
        EngineDeck2SyncMode: string;
        EngineDeck2SyncPlayState: string;
        EngineDeck2TrackArtistName: string;
        EngineDeck2TrackBleep: string;
        EngineDeck2TrackCuePosition: string;
        EngineDeck2TrackCurrentBPM: string;
        EngineDeck2TrackCurrentKeyIndex: string;
        EngineDeck2TrackCurrentLoopInPosition: string;
        EngineDeck2TrackCurrentLoopOutPosition: string;
        EngineDeck2TrackCurrentLoopSizeInBeats: string;
        EngineDeck2TrackKeyLock: string;
        EngineDeck2TrackLoopEnableState: string;
        EngineDeck2TrackLoopQuickLoop1: string;
        EngineDeck2TrackLoopQuickLoop2: string;
        EngineDeck2TrackLoopQuickLoop3: string;
        EngineDeck2TrackLoopQuickLoop4: string;
        EngineDeck2TrackLoopQuickLoop5: string;
        EngineDeck2TrackLoopQuickLoop6: string;
        EngineDeck2TrackLoopQuickLoop7: string;
        EngineDeck2TrackLoopQuickLoop8: string;
        EngineDeck2TrackPlayPauseLEDState: string;
        EngineDeck2TrackSampleRate: string;
        EngineDeck2TrackSongAnalyzed: string;
        EngineDeck2TrackSongLoaded: string;
        EngineDeck2TrackSongName: string;
        EngineDeck2TrackSoundSwitchGUID: string;
        EngineDeck2TrackTrackBytes: string;
        EngineDeck2TrackTrackData: string;
        EngineDeck2TrackTrackLength: string;
        EngineDeck2TrackTrackName: string;
        EngineDeck2TrackTrackNetworkPath: string;
        EngineDeck2TrackTrackURI: string;
        EngineDeck2TrackTrackWasPlayed: string;
        EngineDeck3CurrentBPM: string;
        EngineDeck3DeckIsMaster: string;
        EngineDeck3ExternalMixerVolume: string;
        EngineDeck3ExternalScratchWheelTouch: string;
        EngineDeck3PadsView: string;
        EngineDeck3Play: string;
        EngineDeck3PlayState: string;
        EngineDeck3PlayStatePath: string;
        EngineDeck3Speed: string;
        EngineDeck3SpeedNeutral: string;
        EngineDeck3SpeedOffsetDown: string;
        EngineDeck3SpeedOffsetUp: string;
        EngineDeck3SpeedRange: string;
        EngineDeck3SpeedState: string;
        EngineDeck3SyncMode: string;
        EngineDeck3SyncPlayState: string;
        EngineDeck3TrackArtistName: string;
        EngineDeck3TrackBleep: string;
        EngineDeck3TrackCuePosition: string;
        EngineDeck3TrackCurrentBPM: string;
        EngineDeck3TrackCurrentKeyIndex: string;
        EngineDeck3TrackCurrentLoopInPosition: string;
        EngineDeck3TrackCurrentLoopOutPosition: string;
        EngineDeck3TrackCurrentLoopSizeInBeats: string;
        EngineDeck3TrackKeyLock: string;
        EngineDeck3TrackLoopEnableState: string;
        EngineDeck3TrackLoopQuickLoop1: string;
        EngineDeck3TrackLoopQuickLoop2: string;
        EngineDeck3TrackLoopQuickLoop3: string;
        EngineDeck3TrackLoopQuickLoop4: string;
        EngineDeck3TrackLoopQuickLoop5: string;
        EngineDeck3TrackLoopQuickLoop6: string;
        EngineDeck3TrackLoopQuickLoop7: string;
        EngineDeck3TrackLoopQuickLoop8: string;
        EngineDeck3TrackPlayPauseLEDState: string;
        EngineDeck3TrackSampleRate: string;
        EngineDeck3TrackSongAnalyzed: string;
        EngineDeck3TrackSongLoaded: string;
        EngineDeck3TrackSongName: string;
        EngineDeck3TrackSoundSwitchGUID: string;
        EngineDeck3TrackTrackBytes: string;
        EngineDeck3TrackTrackData: string;
        EngineDeck3TrackTrackLength: string;
        EngineDeck3TrackTrackName: string;
        EngineDeck3TrackTrackNetworkPath: string;
        EngineDeck3TrackTrackURI: string;
        EngineDeck3TrackTrackWasPlayed: string;
        EngineDeck4CurrentBPM: string;
        EngineDeck4DeckIsMaster: string;
        EngineDeck4ExternalMixerVolume: string;
        EngineDeck4ExternalScratchWheelTouch: string;
        EngineDeck4PadsView: string;
        EngineDeck4Play: string;
        EngineDeck4PlayState: string;
        EngineDeck4PlayStatePath: string;
        EngineDeck4Speed: string;
        EngineDeck4SpeedNeutral: string;
        EngineDeck4SpeedOffsetDown: string;
        EngineDeck4SpeedOffsetUp: string;
        EngineDeck4SpeedRange: string;
        EngineDeck4SpeedState: string;
        EngineDeck4SyncMode: string;
        EngineDeck4SyncPlayState: string;
        EngineDeck4TrackArtistName: string;
        EngineDeck4TrackBleep: string;
        EngineDeck4TrackCuePosition: string;
        EngineDeck4TrackCurrentBPM: string;
        EngineDeck4TrackCurrentKeyIndex: string;
        EngineDeck4TrackCurrentLoopInPosition: string;
        EngineDeck4TrackCurrentLoopOutPosition: string;
        EngineDeck4TrackCurrentLoopSizeInBeats: string;
        EngineDeck4TrackKeyLock: string;
        EngineDeck4TrackLoopEnableState: string;
        EngineDeck4TrackLoopQuickLoop1: string;
        EngineDeck4TrackLoopQuickLoop2: string;
        EngineDeck4TrackLoopQuickLoop3: string;
        EngineDeck4TrackLoopQuickLoop4: string;
        EngineDeck4TrackLoopQuickLoop5: string;
        EngineDeck4TrackLoopQuickLoop6: string;
        EngineDeck4TrackLoopQuickLoop7: string;
        EngineDeck4TrackLoopQuickLoop8: string;
        EngineDeck4TrackPlayPauseLEDState: string;
        EngineDeck4TrackSampleRate: string;
        EngineDeck4TrackSongAnalyzed: string;
        EngineDeck4TrackSongLoaded: string;
        EngineDeck4TrackSongName: string;
        EngineDeck4TrackSoundSwitchGUID: string;
        EngineDeck4TrackTrackBytes: string;
        EngineDeck4TrackTrackData: string;
        EngineDeck4TrackTrackLength: string;
        EngineDeck4TrackTrackName: string;
        EngineDeck4TrackTrackNetworkPath: string;
        EngineDeck4TrackTrackURI: string;
        EngineDeck4TrackTrackWasPlayed: string;
        EngineDeckCount: string;
        EngineMasterMasterTempo: string;
        EngineSyncNetworkMasterStatus: string;
        EngineSyncNetworkSyncType: string;
        GUIDecksDeckActiveDeck: string;
    }
    • +
      ClientLibrarianDevicesControllerCurrentDevice: string
    • +
    • +
      ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: string
    • +
    • +
      ClientLibrarianDevicesControllerHasSDCardConnected: string
    • +
    • +
      ClientLibrarianDevicesControllerHasUsbDeviceConnected: string
    • +
    • +
      ClientPreferencesLayerA: string
    • +
    • +
      ClientPreferencesLayerB: string
    • +
    • +
      ClientPreferencesPlayer: string
    • +
    • +
      ClientPreferencesPlayerJogColorA: string
    • +
    • +
      ClientPreferencesPlayerJogColorB: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor1: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor1A: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor1B: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor2: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor2A: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor2B: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor3: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor3A: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor3B: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor4: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor4A: string
    • +
    • +
      ClientPreferencesProfileApplicationPlayerColor4B: string
    • +
    • +
      ClientPreferencesProfileApplicationSyncMode: string
    • +
    • EngineDeck1CurrentBPM: string
    • +
      EngineDeck1DeckIsMaster: string
    • +
    • EngineDeck1ExternalMixerVolume: string
    • EngineDeck1ExternalScratchWheelTouch: string
    • @@ -74,6 +120,8 @@
      EngineDeck1SpeedState:
    • EngineDeck1SyncMode: string
    • +
      EngineDeck1SyncPlayState: string
    • +
    • EngineDeck1TrackArtistName: string
    • EngineDeck1TrackBleep: string
    • @@ -138,6 +186,8 @@
      EngineDeck1TrackTrackWasPlayed
      EngineDeck2CurrentBPM: string
    • +
      EngineDeck2DeckIsMaster: string
    • +
    • EngineDeck2ExternalMixerVolume: string
    • EngineDeck2ExternalScratchWheelTouch: string
    • @@ -164,6 +214,8 @@
      EngineDeck2SpeedState:
    • EngineDeck2SyncMode: string
    • +
      EngineDeck2SyncPlayState: string
    • +
    • EngineDeck2TrackArtistName: string
    • EngineDeck2TrackBleep: string
    • @@ -228,6 +280,8 @@
      EngineDeck2TrackTrackWasPlayed
      EngineDeck3CurrentBPM: string
    • +
      EngineDeck3DeckIsMaster: string
    • +
    • EngineDeck3ExternalMixerVolume: string
    • EngineDeck3ExternalScratchWheelTouch: string
    • @@ -254,6 +308,8 @@
      EngineDeck3SpeedState:
    • EngineDeck3SyncMode: string
    • +
      EngineDeck3SyncPlayState: string
    • +
    • EngineDeck3TrackArtistName: string
    • EngineDeck3TrackBleep: string
    • @@ -318,6 +374,8 @@
      EngineDeck3TrackTrackWasPlayed
      EngineDeck4CurrentBPM: string
    • +
      EngineDeck4DeckIsMaster: string
    • +
    • EngineDeck4ExternalMixerVolume: string
    • EngineDeck4ExternalScratchWheelTouch: string
    • @@ -344,6 +402,8 @@
      EngineDeck4SpeedState:
    • EngineDeck4SyncMode: string
    • +
      EngineDeck4SyncPlayState: string
    • +
    • EngineDeck4TrackArtistName: string
    • EngineDeck4TrackBleep: string
    • @@ -410,9 +470,13 @@
      EngineDeckCount:
      EngineMasterMasterTempo: string
    • -
      EngineSyncNetworkMasterStatus: string
  • +
  • Defined in types/common.ts:20
  • diff --git a/docs/variables/deviceTypes.html b/docs/variables/Units.html similarity index 89% rename from docs/variables/deviceTypes.html rename to docs/variables/Units.html index 5b42c1a..52277b4 100644 --- a/docs/variables/deviceTypes.html +++ b/docs/variables/Units.html @@ -1,4 +1,4 @@ -deviceTypes | StageLinqJS
    +Units | StageLinqJS
    +
    Units: Unit = ...
    +
  • Defined in types/models/Unit.ts:10
  • From 7225d76e5be864883b120022acc008430842388b Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 14:07:26 -0400 Subject: [PATCH 113/146] further refactoring --- Databases/DbConnection.ts | 6 +- network/Discovery.ts | 4 +- services/Directory.ts | 6 +- services/TimeSync.ts | 8 +- status/Status.ts | 8 +- types/common.ts | 257 +----------------------------- types/messages.ts | 11 ++ types/models/State.ts | 324 +++++++++++++++++++++++++++----------- types/models/Track.ts | 99 +++++++++++- types/options.ts | 13 +- 10 files changed, 367 insertions(+), 369 deletions(-) diff --git a/Databases/DbConnection.ts b/Databases/DbConnection.ts index 89e2b5d..8e4ed54 100644 --- a/Databases/DbConnection.ts +++ b/Databases/DbConnection.ts @@ -1,5 +1,5 @@ import Database = require('better-sqlite3'); -import { Track } from '../types'; +import { TrackDBEntry } from '../types'; import { Logger } from '../LogEmitter'; import { inflate } from 'zlib' @@ -53,8 +53,8 @@ export class DbConnection { * @param {string} _trackPath Path of track on the source's filesystem. * @returns {Promise} */ - async getTrackInfo(_trackPath: string): Promise { - let result: Track[]; + async getTrackInfo(_trackPath: string): Promise { + let result: TrackDBEntry[]; //console.dir(_trackPath.split('/')) const trackPath = _trackPath.split('/').slice(5, _trackPath.length).join('/') diff --git a/network/Discovery.ts b/network/Discovery.ts index 8799c83..c31009e 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -78,7 +78,7 @@ export class Discovery extends EventEmitter { */ async listen(options: DiscoveryMessageOptions) { this.options = options; - this.deviceId = new DeviceId(options.token) + this.deviceId = options.deviceId this.emit('listening'); await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { @@ -219,7 +219,7 @@ export class Discovery extends EventEmitter { const msg: DiscoveryMessage = { action: action, port: port || 0, - deviceId: new DeviceId(discoveryMessageOptions.token), + deviceId: discoveryMessageOptions.deviceId, software: { name: discoveryMessageOptions.name, version: discoveryMessageOptions.version diff --git a/services/Directory.ts b/services/Directory.ts index 08d1c9f..018ce09 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -107,7 +107,7 @@ export class Directory extends Service { private async sendServiceAnnouncement(deviceId: DeviceId, socket: Socket): Promise { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(this.parent.options.actingAs.token); + ctx.write(this.parent.options.actingAs.deviceId.array); let services: InstanceType[] = [] const device = await this.parent.devices.getDevice(deviceId); for (const serviceName of Object.keys(this.parent.services)) { @@ -141,7 +141,7 @@ export class Directory extends Service { for (const service of services) { ctx.writeUInt32(MessageId.ServicesAnnouncement); - ctx.write(this.parent.options.actingAs.token); + ctx.write(this.parent.options.actingAs.deviceId.array); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); @@ -160,7 +160,7 @@ export class Directory extends Service { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); - ctx.write(this.parent.options.actingAs.token); + ctx.write(this.parent.options.actingAs.deviceId.array); ctx.writeUInt64(0n); const message = ctx.getBuffer(); assert(message.length === 44); diff --git a/services/TimeSync.ts b/services/TimeSync.ts index d6e4004..5851277 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -5,7 +5,6 @@ import { Service, ServiceHandler } from './Service'; import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; -//import { Socket } from 'net'; const { performance } = require('perf_hooks'); @@ -39,7 +38,7 @@ export class TimeSynchronization extends Service { public async sendTimeSyncRequest() { const ctx = new WriteContext(); ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x0])); - ctx.write(this.parent.options.actingAs.token); + ctx.write(this.parent.options.actingAs.deviceId.array); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); await this.write(ctx); @@ -88,8 +87,7 @@ export class TimeSynchronization extends Service { const size = p_ctx.readUInt32(); if (size === 0) { - const token = p_ctx.read(16); - const deviceId = new DeviceId(token) + const deviceId = new DeviceId(p_ctx.read(16)) const svcName = p_ctx.readNetworkStringUTF16(); const svcPort = p_ctx.readUInt16(); console.log(deviceId.string, svcName, svcPort) @@ -101,8 +99,6 @@ export class TimeSynchronization extends Service { }; return { id: id, - //deviceId: this.deviceId, - //socket: socket, message: { msgs: msgs, timestamp: timestamp, diff --git a/status/Status.ts b/status/Status.ts index aeb276f..2856512 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,13 +1,13 @@ import EventEmitter = require("events"); import { StageLinq } from '../StageLinq'; import { StateData, StateMap } from '../services'; -import { TrackData } from '../types'; +import { Track } from '../types'; import { DeviceId } from '../devices' export class Status extends EventEmitter { readonly parent: InstanceType; - private tracks: Map = new Map(); + private tracks: Map = new Map(); /** * @constructor @@ -24,7 +24,7 @@ export class Status extends EventEmitter { * @param {deck} deck Deck (layer) number * @returns {TrackData} */ - getTrack(deviceId: DeviceId, deck: number): TrackData { + getTrack(deviceId: DeviceId, deck: number): Track { return this.tracks.get(`{${deviceId.string}},${deck}`); } @@ -34,7 +34,7 @@ export class Status extends EventEmitter { * @param {number} deck Deck (layer) number */ async addDeck(service: StateMap, deck: number) { - let track = new TrackData(`/Engine/Deck${deck}/Track/`) + let track = new Track(`/Engine/Deck${deck}/Track/`) this.tracks.set(`{${service.deviceId.string}},${deck}`, track) for (let item of Object.keys(track)) { service.addListener(`${track.prefix}${item}`, data => this.listener(data, this)) diff --git a/types/common.ts b/types/common.ts index c2c2a89..ddce992 100644 --- a/types/common.ts +++ b/types/common.ts @@ -4,259 +4,4 @@ export const LISTEN_TIMEOUT = 5000; // in ms export const MESSAGE_TIMEOUT = 3000; // in ms export const CONNECT_TIMEOUT = 5000; // in ms export const DOWNLOAD_TIMEOUT = 60000; // in ms -export const DISCOVERY_MESSAGE_MARKER = 'airD'; - -export enum Action { - Login = 'DISCOVERER_HOWDY_', - Logout = 'DISCOVERER_EXIT_', -} - -export enum MessageId { - ServicesAnnouncement = 0x0, - TimeStamp = 0x1, - ServicesRequest = 0x2, -} - -export const StateNames = { - player: { - ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', - ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: '/Client/Librarian/DevicesController/CurrentDeviceNetworkPath', - ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', - ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', - ClientPreferencesLayerA: '/Client/Preferences/LayerA', - ClientPreferencesLayerB: '/Client/Preferences/LayerB', - ClientPreferencesPlayer: '/Client/Preferences/Player', - ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', - ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', - ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', - ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', - ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', - ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', - ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', - ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', - ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', - ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', - ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', - ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', - ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', - ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', - ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', - - - EngineDeck1SyncPlayState: '/Engine/Deck1/SyncPlayState', - EngineDeck2SyncPlayState: '/Engine/Deck2/SyncPlayState', - EngineDeck3SyncPlayState: '/Engine/Deck2/SyncPlayState', - EngineDeck4SyncPlayState: '/Engine/Deck2/SyncPlayState', - EngineDeck1DeckIsMaster: '/Engine/Deck1/DeckIsMaster', - EngineDeck2DeckIsMaster: '/Engine/Deck2/DeckIsMaster', - EngineDeck3DeckIsMaster: '/Engine/Deck3/DeckIsMaster', - EngineDeck4DeckIsMaster: '/Engine/Deck2/DeckIsMaster', - - EngineSyncNetworkSyncType: '/Engine/Sync/Network/SyncType', - - EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', - EngineMasterMasterTempo: '/Engine/Master/MasterTempo', - EngineDeckCount: '/Engine/DeckCount', - EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', - EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', - EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', - EngineDeck1PadsView: '/Engine/Deck1/Pads/View', - EngineDeck1Play: '/Engine/Deck1/Play', - EngineDeck1PlayState: '/Engine/Deck1/PlayState', - EngineDeck1PlayStatePath: '/Engine/Deck1/PlayStatePath', - EngineDeck1Speed: '/Engine/Deck1/Speed', - EngineDeck1SpeedNeutral: '/Engine/Deck1/SpeedNeutral', - EngineDeck1SpeedOffsetDown: '/Engine/Deck1/SpeedOffsetDown', - EngineDeck1SpeedOffsetUp: '/Engine/Deck1/SpeedOffsetUp', - EngineDeck1SpeedRange: '/Engine/Deck1/SpeedRange', - EngineDeck1SpeedState: '/Engine/Deck1/SpeedState', - EngineDeck1SyncMode: '/Engine/Deck1/SyncMode', - EngineDeck1TrackArtistName: '/Engine/Deck1/Track/ArtistName', - EngineDeck1TrackBleep: '/Engine/Deck1/Track/Bleep', - EngineDeck1TrackCuePosition: '/Engine/Deck1/Track/CuePosition', - EngineDeck1TrackCurrentBPM: '/Engine/Deck1/Track/CurrentBPM', - EngineDeck1TrackCurrentKeyIndex: '/Engine/Deck1/Track/CurrentKeyIndex', - EngineDeck1TrackCurrentLoopInPosition: '/Engine/Deck1/Track/CurrentLoopInPosition', - EngineDeck1TrackCurrentLoopOutPosition: '/Engine/Deck1/Track/CurrentLoopOutPosition', - EngineDeck1TrackCurrentLoopSizeInBeats: '/Engine/Deck1/Track/CurrentLoopSizeInBeats', - EngineDeck1TrackKeyLock: '/Engine/Deck1/Track/KeyLock', - EngineDeck1TrackLoopEnableState: '/Engine/Deck1/Track/LoopEnableState', - EngineDeck1TrackLoopQuickLoop1: '/Engine/Deck1/Track/Loop/QuickLoop1', - EngineDeck1TrackLoopQuickLoop2: '/Engine/Deck1/Track/Loop/QuickLoop2', - EngineDeck1TrackLoopQuickLoop3: '/Engine/Deck1/Track/Loop/QuickLoop3', - EngineDeck1TrackLoopQuickLoop4: '/Engine/Deck1/Track/Loop/QuickLoop4', - EngineDeck1TrackLoopQuickLoop5: '/Engine/Deck1/Track/Loop/QuickLoop5', - EngineDeck1TrackLoopQuickLoop6: '/Engine/Deck1/Track/Loop/QuickLoop6', - EngineDeck1TrackLoopQuickLoop7: '/Engine/Deck1/Track/Loop/QuickLoop7', - EngineDeck1TrackLoopQuickLoop8: '/Engine/Deck1/Track/Loop/QuickLoop8', - EngineDeck1TrackPlayPauseLEDState: '/Engine/Deck1/Track/PlayPauseLEDState', - EngineDeck1TrackSampleRate: '/Engine/Deck1/Track/SampleRate', - EngineDeck1TrackSongAnalyzed: '/Engine/Deck1/Track/SongAnalyzed', - EngineDeck1TrackSongLoaded: '/Engine/Deck1/Track/SongLoaded', - EngineDeck1TrackSongName: '/Engine/Deck1/Track/SongName', - EngineDeck1TrackSoundSwitchGUID: '/Engine/Deck1/Track/SoundSwitchGuid', - EngineDeck1TrackTrackBytes: '/Engine/Deck1/Track/TrackBytes', - EngineDeck1TrackTrackData: '/Engine/Deck1/Track/TrackData', - EngineDeck1TrackTrackLength: '/Engine/Deck1/Track/TrackLength', - EngineDeck1TrackTrackName: '/Engine/Deck1/Track/TrackName', - EngineDeck1TrackTrackNetworkPath: '/Engine/Deck1/Track/TrackNetworkPath', - EngineDeck1TrackTrackURI: '/Engine/Deck1/Track/TrackUri', - EngineDeck1TrackTrackWasPlayed: '/Engine/Deck1/Track/TrackWasPlayed', - EngineDeck2CurrentBPM: '/Engine/Deck2/CurrentBPM', - EngineDeck2ExternalMixerVolume: '/Engine/Deck2/ExternalMixerVolume', - EngineDeck2ExternalScratchWheelTouch: '/Engine/Deck2/ExternalScratchWheelTouch', - EngineDeck2PadsView: '/Engine/Deck2/Pads/View', - EngineDeck2Play: '/Engine/Deck2/Play', - EngineDeck2PlayState: '/Engine/Deck2/PlayState', - EngineDeck2PlayStatePath: '/Engine/Deck2/PlayStatePath', - EngineDeck2Speed: '/Engine/Deck2/Speed', - EngineDeck2SpeedNeutral: '/Engine/Deck2/SpeedNeutral', - EngineDeck2SpeedOffsetDown: '/Engine/Deck2/SpeedOffsetDown', - EngineDeck2SpeedOffsetUp: '/Engine/Deck2/SpeedOffsetUp', - EngineDeck2SpeedRange: '/Engine/Deck2/SpeedRange', - EngineDeck2SpeedState: '/Engine/Deck2/SpeedState', - EngineDeck2SyncMode: '/Engine/Deck2/SyncMode', - EngineDeck2TrackArtistName: '/Engine/Deck2/Track/ArtistName', - EngineDeck2TrackBleep: '/Engine/Deck2/Track/Bleep', - EngineDeck2TrackCuePosition: '/Engine/Deck2/Track/CuePosition', - EngineDeck2TrackCurrentBPM: '/Engine/Deck2/Track/CurrentBPM', - EngineDeck2TrackCurrentKeyIndex: '/Engine/Deck2/Track/CurrentKeyIndex', - EngineDeck2TrackCurrentLoopInPosition: '/Engine/Deck2/Track/CurrentLoopInPosition', - EngineDeck2TrackCurrentLoopOutPosition: '/Engine/Deck2/Track/CurrentLoopOutPosition', - EngineDeck2TrackCurrentLoopSizeInBeats: '/Engine/Deck2/Track/CurrentLoopSizeInBeats', - EngineDeck2TrackKeyLock: '/Engine/Deck2/Track/KeyLock', - EngineDeck2TrackLoopEnableState: '/Engine/Deck2/Track/LoopEnableState', - EngineDeck2TrackLoopQuickLoop1: '/Engine/Deck2/Track/Loop/QuickLoop1', - EngineDeck2TrackLoopQuickLoop2: '/Engine/Deck2/Track/Loop/QuickLoop2', - EngineDeck2TrackLoopQuickLoop3: '/Engine/Deck2/Track/Loop/QuickLoop3', - EngineDeck2TrackLoopQuickLoop4: '/Engine/Deck2/Track/Loop/QuickLoop4', - EngineDeck2TrackLoopQuickLoop5: '/Engine/Deck2/Track/Loop/QuickLoop5', - EngineDeck2TrackLoopQuickLoop6: '/Engine/Deck2/Track/Loop/QuickLoop6', - EngineDeck2TrackLoopQuickLoop7: '/Engine/Deck2/Track/Loop/QuickLoop7', - EngineDeck2TrackLoopQuickLoop8: '/Engine/Deck2/Track/Loop/QuickLoop8', - EngineDeck2TrackPlayPauseLEDState: '/Engine/Deck2/Track/PlayPauseLEDState', - EngineDeck2TrackSampleRate: '/Engine/Deck2/Track/SampleRate', - EngineDeck2TrackSongAnalyzed: '/Engine/Deck2/Track/SongAnalyzed', - EngineDeck2TrackSongLoaded: '/Engine/Deck2/Track/SongLoaded', - EngineDeck2TrackSongName: '/Engine/Deck2/Track/SongName', - EngineDeck2TrackSoundSwitchGUID: '/Engine/Deck2/Track/SoundSwitchGuid', - EngineDeck2TrackTrackBytes: '/Engine/Deck2/Track/TrackBytes', - EngineDeck2TrackTrackData: '/Engine/Deck2/Track/TrackData', - EngineDeck2TrackTrackLength: '/Engine/Deck2/Track/TrackLength', - EngineDeck2TrackTrackName: '/Engine/Deck2/Track/TrackName', - EngineDeck2TrackTrackNetworkPath: '/Engine/Deck2/Track/TrackNetworkPath', - EngineDeck2TrackTrackURI: '/Engine/Deck2/Track/TrackUri', - EngineDeck2TrackTrackWasPlayed: '/Engine/Deck2/Track/TrackWasPlayed', - EngineDeck3CurrentBPM: '/Engine/Deck3/CurrentBPM', - EngineDeck3ExternalMixerVolume: '/Engine/Deck3/ExternalMixerVolume', - EngineDeck3ExternalScratchWheelTouch: '/Engine/Deck3/ExternalScratchWheelTouch', - EngineDeck3PadsView: '/Engine/Deck3/Pads/View', - EngineDeck3Play: '/Engine/Deck3/Play', - EngineDeck3PlayState: '/Engine/Deck3/PlayState', - EngineDeck3PlayStatePath: '/Engine/Deck3/PlayStatePath', - EngineDeck3Speed: '/Engine/Deck3/Speed', - EngineDeck3SpeedNeutral: '/Engine/Deck3/SpeedNeutral', - EngineDeck3SpeedOffsetDown: '/Engine/Deck3/SpeedOffsetDown', - EngineDeck3SpeedOffsetUp: '/Engine/Deck3/SpeedOffsetUp', - EngineDeck3SpeedRange: '/Engine/Deck3/SpeedRange', - EngineDeck3SpeedState: '/Engine/Deck3/SpeedState', - EngineDeck3SyncMode: '/Engine/Deck3/SyncMode', - EngineDeck3TrackArtistName: '/Engine/Deck3/Track/ArtistName', - EngineDeck3TrackBleep: '/Engine/Deck3/Track/Bleep', - EngineDeck3TrackCuePosition: '/Engine/Deck3/Track/CuePosition', - EngineDeck3TrackCurrentBPM: '/Engine/Deck3/Track/CurrentBPM', - EngineDeck3TrackCurrentKeyIndex: '/Engine/Deck3/Track/CurrentKeyIndex', - EngineDeck3TrackCurrentLoopInPosition: '/Engine/Deck3/Track/CurrentLoopInPosition', - EngineDeck3TrackCurrentLoopOutPosition: '/Engine/Deck3/Track/CurrentLoopOutPosition', - EngineDeck3TrackCurrentLoopSizeInBeats: '/Engine/Deck3/Track/CurrentLoopSizeInBeats', - EngineDeck3TrackKeyLock: '/Engine/Deck3/Track/KeyLock', - EngineDeck3TrackLoopEnableState: '/Engine/Deck3/Track/LoopEnableState', - EngineDeck3TrackLoopQuickLoop1: '/Engine/Deck3/Track/Loop/QuickLoop1', - EngineDeck3TrackLoopQuickLoop2: '/Engine/Deck3/Track/Loop/QuickLoop2', - EngineDeck3TrackLoopQuickLoop3: '/Engine/Deck3/Track/Loop/QuickLoop3', - EngineDeck3TrackLoopQuickLoop4: '/Engine/Deck3/Track/Loop/QuickLoop4', - EngineDeck3TrackLoopQuickLoop5: '/Engine/Deck3/Track/Loop/QuickLoop5', - EngineDeck3TrackLoopQuickLoop6: '/Engine/Deck3/Track/Loop/QuickLoop6', - EngineDeck3TrackLoopQuickLoop7: '/Engine/Deck3/Track/Loop/QuickLoop7', - EngineDeck3TrackLoopQuickLoop8: '/Engine/Deck3/Track/Loop/QuickLoop8', - EngineDeck3TrackPlayPauseLEDState: '/Engine/Deck3/Track/PlayPauseLEDState', - EngineDeck3TrackSampleRate: '/Engine/Deck3/Track/SampleRate', - EngineDeck3TrackSongAnalyzed: '/Engine/Deck3/Track/SongAnalyzed', - EngineDeck3TrackSongLoaded: '/Engine/Deck3/Track/SongLoaded', - EngineDeck3TrackSongName: '/Engine/Deck3/Track/SongName', - EngineDeck3TrackSoundSwitchGUID: '/Engine/Deck3/Track/SoundSwitchGuid', - EngineDeck3TrackTrackBytes: '/Engine/Deck3/Track/TrackBytes', - EngineDeck3TrackTrackData: '/Engine/Deck3/Track/TrackData', - EngineDeck3TrackTrackLength: '/Engine/Deck3/Track/TrackLength', - EngineDeck3TrackTrackName: '/Engine/Deck3/Track/TrackName', - EngineDeck3TrackTrackNetworkPath: '/Engine/Deck3/Track/TrackNetworkPath', - EngineDeck3TrackTrackURI: '/Engine/Deck3/Track/TrackUri', - EngineDeck3TrackTrackWasPlayed: '/Engine/Deck3/Track/TrackWasPlayed', - EngineDeck4CurrentBPM: '/Engine/Deck4/CurrentBPM', - EngineDeck4ExternalMixerVolume: '/Engine/Deck4/ExternalMixerVolume', - EngineDeck4ExternalScratchWheelTouch: '/Engine/Deck4/ExternalScratchWheelTouch', - EngineDeck4PadsView: '/Engine/Deck4/Pads/View', - EngineDeck4Play: '/Engine/Deck4/Play', - EngineDeck4PlayState: '/Engine/Deck4/PlayState', - EngineDeck4PlayStatePath: '/Engine/Deck4/PlayStatePath', - EngineDeck4Speed: '/Engine/Deck4/Speed', - EngineDeck4SpeedNeutral: '/Engine/Deck4/SpeedNeutral', - EngineDeck4SpeedOffsetDown: '/Engine/Deck4/SpeedOffsetDown', - EngineDeck4SpeedOffsetUp: '/Engine/Deck4/SpeedOffsetUp', - EngineDeck4SpeedRange: '/Engine/Deck4/SpeedRange', - EngineDeck4SpeedState: '/Engine/Deck4/SpeedState', - EngineDeck4SyncMode: '/Engine/Deck4/SyncMode', - EngineDeck4TrackArtistName: '/Engine/Deck4/Track/ArtistName', - EngineDeck4TrackBleep: '/Engine/Deck4/Track/Bleep', - EngineDeck4TrackCuePosition: '/Engine/Deck4/Track/CuePosition', - EngineDeck4TrackCurrentBPM: '/Engine/Deck4/Track/CurrentBPM', - EngineDeck4TrackCurrentKeyIndex: '/Engine/Deck4/Track/CurrentKeyIndex', - EngineDeck4TrackCurrentLoopInPosition: '/Engine/Deck4/Track/CurrentLoopInPosition', - EngineDeck4TrackCurrentLoopOutPosition: '/Engine/Deck4/Track/CurrentLoopOutPosition', - EngineDeck4TrackCurrentLoopSizeInBeats: '/Engine/Deck4/Track/CurrentLoopSizeInBeats', - EngineDeck4TrackKeyLock: '/Engine/Deck4/Track/KeyLock', - EngineDeck4TrackLoopEnableState: '/Engine/Deck4/Track/LoopEnableState', - EngineDeck4TrackLoopQuickLoop1: '/Engine/Deck4/Track/Loop/QuickLoop1', - EngineDeck4TrackLoopQuickLoop2: '/Engine/Deck4/Track/Loop/QuickLoop2', - EngineDeck4TrackLoopQuickLoop3: '/Engine/Deck4/Track/Loop/QuickLoop3', - EngineDeck4TrackLoopQuickLoop4: '/Engine/Deck4/Track/Loop/QuickLoop4', - EngineDeck4TrackLoopQuickLoop5: '/Engine/Deck4/Track/Loop/QuickLoop5', - EngineDeck4TrackLoopQuickLoop6: '/Engine/Deck4/Track/Loop/QuickLoop6', - EngineDeck4TrackLoopQuickLoop7: '/Engine/Deck4/Track/Loop/QuickLoop7', - EngineDeck4TrackLoopQuickLoop8: '/Engine/Deck4/Track/Loop/QuickLoop8', - EngineDeck4TrackPlayPauseLEDState: '/Engine/Deck4/Track/PlayPauseLEDState', - EngineDeck4TrackSampleRate: '/Engine/Deck4/Track/SampleRate', - EngineDeck4TrackSongAnalyzed: '/Engine/Deck4/Track/SongAnalyzed', - EngineDeck4TrackSongLoaded: '/Engine/Deck4/Track/SongLoaded', - EngineDeck4TrackSongName: '/Engine/Deck4/Track/SongName', - EngineDeck4TrackSoundSwitchGUID: '/Engine/Deck4/Track/SoundSwitchGuid', - EngineDeck4TrackTrackBytes: '/Engine/Deck4/Track/TrackBytes', - EngineDeck4TrackTrackData: '/Engine/Deck4/Track/TrackData', - EngineDeck4TrackTrackLength: '/Engine/Deck4/Track/TrackLength', - EngineDeck4TrackTrackName: '/Engine/Deck4/Track/TrackName', - EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', - EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', - EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', - GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', - }, - mixer: { - MixerCH1faderPosition: '/Mixer/CH1faderPosition', - MixerCH2faderPosition: '/Mixer/CH2faderPosition', - MixerCH3faderPosition: '/Mixer/CH3faderPosition', - MixerCH4faderPosition: '/Mixer/CH4faderPosition', - MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', - MixerChannelAssignment1: '/Mixer/ChannelAssignment1', - MixerChannelAssignment2: '/Mixer/ChannelAssignment2', - MixerChannelAssignment3: '/Mixer/ChannelAssignment3', - MixerChannelAssignment4: '/Mixer/ChannelAssignment4', - MixerNumberOfChannels: '/Mixer/NumberOfChannels', - - }, -} - - -//EngineDeck1RequestUnsetSyncLead: '/Engine/Deck1/RequestUnsetSyncLead', -// GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', -// GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', -// ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', -// ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', \ No newline at end of file +export const DISCOVERY_MESSAGE_MARKER = 'airD'; \ No newline at end of file diff --git a/types/messages.ts b/types/messages.ts index e037c33..644e22d 100644 --- a/types/messages.ts +++ b/types/messages.ts @@ -1,5 +1,16 @@ import { DeviceId } from '../devices/DeviceId'; +export enum Action { + Login = 'DISCOVERER_HOWDY_', + Logout = 'DISCOVERER_EXIT_', +} + +export enum MessageId { + ServicesAnnouncement = 0x0, + TimeStamp = 0x1, + ServicesRequest = 0x2, +} + export interface DiscoveryMessage { deviceId: DeviceId; source: string; diff --git a/types/models/State.ts b/types/models/State.ts index d915c14..ea7357c 100644 --- a/types/models/State.ts +++ b/types/models/State.ts @@ -1,95 +1,243 @@ -import { DeviceId } from "../../devices"; +export const StateNames = { + player: { + ClientLibrarianDevicesControllerCurrentDevice: '/Client/Librarian/DevicesController/CurrentDevice', + ClientLibrarianDevicesControllerCurrentDeviceNetworkPath: '/Client/Librarian/DevicesController/CurrentDeviceNetworkPath', + ClientLibrarianDevicesControllerHasSDCardConnected: '/Client/Librarian/DevicesController/HasSDCardConnected', + ClientLibrarianDevicesControllerHasUsbDeviceConnected: '/Client/Librarian/DevicesController/HasUsbDeviceConnected', + ClientPreferencesLayerA: '/Client/Preferences/LayerA', + ClientPreferencesLayerB: '/Client/Preferences/LayerB', + ClientPreferencesPlayer: '/Client/Preferences/Player', + ClientPreferencesPlayerJogColorA: '/Client/Preferences/PlayerJogColorA', + ClientPreferencesPlayerJogColorB: '/Client/Preferences/PlayerJogColorB', + ClientPreferencesProfileApplicationPlayerColor1: '/Client/Preferences/Profile/Application/PlayerColor1', + ClientPreferencesProfileApplicationPlayerColor1A: '/Client/Preferences/Profile/Application/PlayerColor1A', + ClientPreferencesProfileApplicationPlayerColor1B: '/Client/Preferences/Profile/Application/PlayerColor1B', + ClientPreferencesProfileApplicationPlayerColor2: '/Client/Preferences/Profile/Application/PlayerColor2', + ClientPreferencesProfileApplicationPlayerColor2A: '/Client/Preferences/Profile/Application/PlayerColor2A', + ClientPreferencesProfileApplicationPlayerColor2B: '/Client/Preferences/Profile/Application/PlayerColor2B', + ClientPreferencesProfileApplicationPlayerColor3: '/Client/Preferences/Profile/Application/PlayerColor3', + ClientPreferencesProfileApplicationPlayerColor3A: '/Client/Preferences/Profile/Application/PlayerColor3A', + ClientPreferencesProfileApplicationPlayerColor3B: '/Client/Preferences/Profile/Application/PlayerColor3B', + ClientPreferencesProfileApplicationPlayerColor4: '/Client/Preferences/Profile/Application/PlayerColor4', + ClientPreferencesProfileApplicationPlayerColor4A: '/Client/Preferences/Profile/Application/PlayerColor4A', + ClientPreferencesProfileApplicationPlayerColor4B: '/Client/Preferences/Profile/Application/PlayerColor4B', + ClientPreferencesProfileApplicationSyncMode: '/Client/Preferences/Profile/Application/SyncMode', -interface ITrackData { - source: { - name: string; - location: DeviceId; - path: string; - } - ArtistName: string; - Bleep: boolean; - CuePosition: number; - CurrentBPM: number; - CurrentKeyIndex: number; - CurrentLoopInPosition: number; - CurrentLoopOutPosition: number; - CurrentLoopSizeInBeats: number; - KeyLock: boolean; - LoopEnableState: boolean; - Loop: { - QuickLoop1: boolean; - QuickLoop2: boolean; - QuickLoop3: boolean; - QuickLoop4: boolean; - QuickLoop5: boolean; - QuickLoop6: boolean; - QuickLoop7: boolean; - QuickLoop8: boolean; - }, - PlayPauseLEDState: boolean; - SampleRate: number; - SongAnalyzed: boolean; - SongLoaded: boolean; - SongName: string; - SoundSwitchGUID: string; - TrackBytes: number; - TrackData: boolean; - TrackLength: number; - TrackName: string; - TrackNetworkPath: string; - TrackURI: string; - TrackWasPlayed: boolean; -} - -export class TrackData implements Partial { - #prefix: string; - #source: { - name: string; - location: DeviceId; - path: string; - } = null; - ArtistName: string = "" - CurrentBPM: number = 0; - SampleRate: number = 0; - SongAnalyzed: boolean = false; - SongLoaded: boolean = false; - SongName: string = ""; - SoundSwitchGUID: string = ""; - TrackBytes: number = 0; - TrackLength: number = 0; - TrackName: string = ""; - TrackNetworkPath: string = ""; - TrackURI: string = ""; + EngineDeck1SyncPlayState: '/Engine/Deck1/SyncPlayState', + EngineDeck2SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck3SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck4SyncPlayState: '/Engine/Deck2/SyncPlayState', + EngineDeck1DeckIsMaster: '/Engine/Deck1/DeckIsMaster', + EngineDeck2DeckIsMaster: '/Engine/Deck2/DeckIsMaster', + EngineDeck3DeckIsMaster: '/Engine/Deck3/DeckIsMaster', + EngineDeck4DeckIsMaster: '/Engine/Deck2/DeckIsMaster', - /** - * @constructor - * @param {string} prefix State prefix that should proceed the property - */ - constructor(prefix: string) { - this.#prefix = prefix; - } + EngineSyncNetworkSyncType: '/Engine/Sync/Network/SyncType', - /** - * Get State Prefix - */ - get prefix() { - return this.#prefix; - } + EngineSyncNetworkMasterStatus: '/Engine/Sync/Network/MasterStatus', + EngineMasterMasterTempo: '/Engine/Master/MasterTempo', + EngineDeckCount: '/Engine/DeckCount', + EngineDeck1CurrentBPM: '/Engine/Deck1/CurrentBPM', + EngineDeck1ExternalMixerVolume: '/Engine/Deck1/ExternalMixerVolume', + EngineDeck1ExternalScratchWheelTouch: '/Engine/Deck1/ExternalScratchWheelTouch', + EngineDeck1PadsView: '/Engine/Deck1/Pads/View', + EngineDeck1Play: '/Engine/Deck1/Play', + EngineDeck1PlayState: '/Engine/Deck1/PlayState', + EngineDeck1PlayStatePath: '/Engine/Deck1/PlayStatePath', + EngineDeck1Speed: '/Engine/Deck1/Speed', + EngineDeck1SpeedNeutral: '/Engine/Deck1/SpeedNeutral', + EngineDeck1SpeedOffsetDown: '/Engine/Deck1/SpeedOffsetDown', + EngineDeck1SpeedOffsetUp: '/Engine/Deck1/SpeedOffsetUp', + EngineDeck1SpeedRange: '/Engine/Deck1/SpeedRange', + EngineDeck1SpeedState: '/Engine/Deck1/SpeedState', + EngineDeck1SyncMode: '/Engine/Deck1/SyncMode', + EngineDeck1TrackArtistName: '/Engine/Deck1/Track/ArtistName', + EngineDeck1TrackBleep: '/Engine/Deck1/Track/Bleep', + EngineDeck1TrackCuePosition: '/Engine/Deck1/Track/CuePosition', + EngineDeck1TrackCurrentBPM: '/Engine/Deck1/Track/CurrentBPM', + EngineDeck1TrackCurrentKeyIndex: '/Engine/Deck1/Track/CurrentKeyIndex', + EngineDeck1TrackCurrentLoopInPosition: '/Engine/Deck1/Track/CurrentLoopInPosition', + EngineDeck1TrackCurrentLoopOutPosition: '/Engine/Deck1/Track/CurrentLoopOutPosition', + EngineDeck1TrackCurrentLoopSizeInBeats: '/Engine/Deck1/Track/CurrentLoopSizeInBeats', + EngineDeck1TrackKeyLock: '/Engine/Deck1/Track/KeyLock', + EngineDeck1TrackLoopEnableState: '/Engine/Deck1/Track/LoopEnableState', + EngineDeck1TrackLoopQuickLoop1: '/Engine/Deck1/Track/Loop/QuickLoop1', + EngineDeck1TrackLoopQuickLoop2: '/Engine/Deck1/Track/Loop/QuickLoop2', + EngineDeck1TrackLoopQuickLoop3: '/Engine/Deck1/Track/Loop/QuickLoop3', + EngineDeck1TrackLoopQuickLoop4: '/Engine/Deck1/Track/Loop/QuickLoop4', + EngineDeck1TrackLoopQuickLoop5: '/Engine/Deck1/Track/Loop/QuickLoop5', + EngineDeck1TrackLoopQuickLoop6: '/Engine/Deck1/Track/Loop/QuickLoop6', + EngineDeck1TrackLoopQuickLoop7: '/Engine/Deck1/Track/Loop/QuickLoop7', + EngineDeck1TrackLoopQuickLoop8: '/Engine/Deck1/Track/Loop/QuickLoop8', + EngineDeck1TrackPlayPauseLEDState: '/Engine/Deck1/Track/PlayPauseLEDState', + EngineDeck1TrackSampleRate: '/Engine/Deck1/Track/SampleRate', + EngineDeck1TrackSongAnalyzed: '/Engine/Deck1/Track/SongAnalyzed', + EngineDeck1TrackSongLoaded: '/Engine/Deck1/Track/SongLoaded', + EngineDeck1TrackSongName: '/Engine/Deck1/Track/SongName', + EngineDeck1TrackSoundSwitchGUID: '/Engine/Deck1/Track/SoundSwitchGuid', + EngineDeck1TrackTrackBytes: '/Engine/Deck1/Track/TrackBytes', + EngineDeck1TrackTrackData: '/Engine/Deck1/Track/TrackData', + EngineDeck1TrackTrackLength: '/Engine/Deck1/Track/TrackLength', + EngineDeck1TrackTrackName: '/Engine/Deck1/Track/TrackName', + EngineDeck1TrackTrackNetworkPath: '/Engine/Deck1/Track/TrackNetworkPath', + EngineDeck1TrackTrackURI: '/Engine/Deck1/Track/TrackUri', + EngineDeck1TrackTrackWasPlayed: '/Engine/Deck1/Track/TrackWasPlayed', + EngineDeck2CurrentBPM: '/Engine/Deck2/CurrentBPM', + EngineDeck2ExternalMixerVolume: '/Engine/Deck2/ExternalMixerVolume', + EngineDeck2ExternalScratchWheelTouch: '/Engine/Deck2/ExternalScratchWheelTouch', + EngineDeck2PadsView: '/Engine/Deck2/Pads/View', + EngineDeck2Play: '/Engine/Deck2/Play', + EngineDeck2PlayState: '/Engine/Deck2/PlayState', + EngineDeck2PlayStatePath: '/Engine/Deck2/PlayStatePath', + EngineDeck2Speed: '/Engine/Deck2/Speed', + EngineDeck2SpeedNeutral: '/Engine/Deck2/SpeedNeutral', + EngineDeck2SpeedOffsetDown: '/Engine/Deck2/SpeedOffsetDown', + EngineDeck2SpeedOffsetUp: '/Engine/Deck2/SpeedOffsetUp', + EngineDeck2SpeedRange: '/Engine/Deck2/SpeedRange', + EngineDeck2SpeedState: '/Engine/Deck2/SpeedState', + EngineDeck2SyncMode: '/Engine/Deck2/SyncMode', + EngineDeck2TrackArtistName: '/Engine/Deck2/Track/ArtistName', + EngineDeck2TrackBleep: '/Engine/Deck2/Track/Bleep', + EngineDeck2TrackCuePosition: '/Engine/Deck2/Track/CuePosition', + EngineDeck2TrackCurrentBPM: '/Engine/Deck2/Track/CurrentBPM', + EngineDeck2TrackCurrentKeyIndex: '/Engine/Deck2/Track/CurrentKeyIndex', + EngineDeck2TrackCurrentLoopInPosition: '/Engine/Deck2/Track/CurrentLoopInPosition', + EngineDeck2TrackCurrentLoopOutPosition: '/Engine/Deck2/Track/CurrentLoopOutPosition', + EngineDeck2TrackCurrentLoopSizeInBeats: '/Engine/Deck2/Track/CurrentLoopSizeInBeats', + EngineDeck2TrackKeyLock: '/Engine/Deck2/Track/KeyLock', + EngineDeck2TrackLoopEnableState: '/Engine/Deck2/Track/LoopEnableState', + EngineDeck2TrackLoopQuickLoop1: '/Engine/Deck2/Track/Loop/QuickLoop1', + EngineDeck2TrackLoopQuickLoop2: '/Engine/Deck2/Track/Loop/QuickLoop2', + EngineDeck2TrackLoopQuickLoop3: '/Engine/Deck2/Track/Loop/QuickLoop3', + EngineDeck2TrackLoopQuickLoop4: '/Engine/Deck2/Track/Loop/QuickLoop4', + EngineDeck2TrackLoopQuickLoop5: '/Engine/Deck2/Track/Loop/QuickLoop5', + EngineDeck2TrackLoopQuickLoop6: '/Engine/Deck2/Track/Loop/QuickLoop6', + EngineDeck2TrackLoopQuickLoop7: '/Engine/Deck2/Track/Loop/QuickLoop7', + EngineDeck2TrackLoopQuickLoop8: '/Engine/Deck2/Track/Loop/QuickLoop8', + EngineDeck2TrackPlayPauseLEDState: '/Engine/Deck2/Track/PlayPauseLEDState', + EngineDeck2TrackSampleRate: '/Engine/Deck2/Track/SampleRate', + EngineDeck2TrackSongAnalyzed: '/Engine/Deck2/Track/SongAnalyzed', + EngineDeck2TrackSongLoaded: '/Engine/Deck2/Track/SongLoaded', + EngineDeck2TrackSongName: '/Engine/Deck2/Track/SongName', + EngineDeck2TrackSoundSwitchGUID: '/Engine/Deck2/Track/SoundSwitchGuid', + EngineDeck2TrackTrackBytes: '/Engine/Deck2/Track/TrackBytes', + EngineDeck2TrackTrackData: '/Engine/Deck2/Track/TrackData', + EngineDeck2TrackTrackLength: '/Engine/Deck2/Track/TrackLength', + EngineDeck2TrackTrackName: '/Engine/Deck2/Track/TrackName', + EngineDeck2TrackTrackNetworkPath: '/Engine/Deck2/Track/TrackNetworkPath', + EngineDeck2TrackTrackURI: '/Engine/Deck2/Track/TrackUri', + EngineDeck2TrackTrackWasPlayed: '/Engine/Deck2/Track/TrackWasPlayed', + EngineDeck3CurrentBPM: '/Engine/Deck3/CurrentBPM', + EngineDeck3ExternalMixerVolume: '/Engine/Deck3/ExternalMixerVolume', + EngineDeck3ExternalScratchWheelTouch: '/Engine/Deck3/ExternalScratchWheelTouch', + EngineDeck3PadsView: '/Engine/Deck3/Pads/View', + EngineDeck3Play: '/Engine/Deck3/Play', + EngineDeck3PlayState: '/Engine/Deck3/PlayState', + EngineDeck3PlayStatePath: '/Engine/Deck3/PlayStatePath', + EngineDeck3Speed: '/Engine/Deck3/Speed', + EngineDeck3SpeedNeutral: '/Engine/Deck3/SpeedNeutral', + EngineDeck3SpeedOffsetDown: '/Engine/Deck3/SpeedOffsetDown', + EngineDeck3SpeedOffsetUp: '/Engine/Deck3/SpeedOffsetUp', + EngineDeck3SpeedRange: '/Engine/Deck3/SpeedRange', + EngineDeck3SpeedState: '/Engine/Deck3/SpeedState', + EngineDeck3SyncMode: '/Engine/Deck3/SyncMode', + EngineDeck3TrackArtistName: '/Engine/Deck3/Track/ArtistName', + EngineDeck3TrackBleep: '/Engine/Deck3/Track/Bleep', + EngineDeck3TrackCuePosition: '/Engine/Deck3/Track/CuePosition', + EngineDeck3TrackCurrentBPM: '/Engine/Deck3/Track/CurrentBPM', + EngineDeck3TrackCurrentKeyIndex: '/Engine/Deck3/Track/CurrentKeyIndex', + EngineDeck3TrackCurrentLoopInPosition: '/Engine/Deck3/Track/CurrentLoopInPosition', + EngineDeck3TrackCurrentLoopOutPosition: '/Engine/Deck3/Track/CurrentLoopOutPosition', + EngineDeck3TrackCurrentLoopSizeInBeats: '/Engine/Deck3/Track/CurrentLoopSizeInBeats', + EngineDeck3TrackKeyLock: '/Engine/Deck3/Track/KeyLock', + EngineDeck3TrackLoopEnableState: '/Engine/Deck3/Track/LoopEnableState', + EngineDeck3TrackLoopQuickLoop1: '/Engine/Deck3/Track/Loop/QuickLoop1', + EngineDeck3TrackLoopQuickLoop2: '/Engine/Deck3/Track/Loop/QuickLoop2', + EngineDeck3TrackLoopQuickLoop3: '/Engine/Deck3/Track/Loop/QuickLoop3', + EngineDeck3TrackLoopQuickLoop4: '/Engine/Deck3/Track/Loop/QuickLoop4', + EngineDeck3TrackLoopQuickLoop5: '/Engine/Deck3/Track/Loop/QuickLoop5', + EngineDeck3TrackLoopQuickLoop6: '/Engine/Deck3/Track/Loop/QuickLoop6', + EngineDeck3TrackLoopQuickLoop7: '/Engine/Deck3/Track/Loop/QuickLoop7', + EngineDeck3TrackLoopQuickLoop8: '/Engine/Deck3/Track/Loop/QuickLoop8', + EngineDeck3TrackPlayPauseLEDState: '/Engine/Deck3/Track/PlayPauseLEDState', + EngineDeck3TrackSampleRate: '/Engine/Deck3/Track/SampleRate', + EngineDeck3TrackSongAnalyzed: '/Engine/Deck3/Track/SongAnalyzed', + EngineDeck3TrackSongLoaded: '/Engine/Deck3/Track/SongLoaded', + EngineDeck3TrackSongName: '/Engine/Deck3/Track/SongName', + EngineDeck3TrackSoundSwitchGUID: '/Engine/Deck3/Track/SoundSwitchGuid', + EngineDeck3TrackTrackBytes: '/Engine/Deck3/Track/TrackBytes', + EngineDeck3TrackTrackData: '/Engine/Deck3/Track/TrackData', + EngineDeck3TrackTrackLength: '/Engine/Deck3/Track/TrackLength', + EngineDeck3TrackTrackName: '/Engine/Deck3/Track/TrackName', + EngineDeck3TrackTrackNetworkPath: '/Engine/Deck3/Track/TrackNetworkPath', + EngineDeck3TrackTrackURI: '/Engine/Deck3/Track/TrackUri', + EngineDeck3TrackTrackWasPlayed: '/Engine/Deck3/Track/TrackWasPlayed', + EngineDeck4CurrentBPM: '/Engine/Deck4/CurrentBPM', + EngineDeck4ExternalMixerVolume: '/Engine/Deck4/ExternalMixerVolume', + EngineDeck4ExternalScratchWheelTouch: '/Engine/Deck4/ExternalScratchWheelTouch', + EngineDeck4PadsView: '/Engine/Deck4/Pads/View', + EngineDeck4Play: '/Engine/Deck4/Play', + EngineDeck4PlayState: '/Engine/Deck4/PlayState', + EngineDeck4PlayStatePath: '/Engine/Deck4/PlayStatePath', + EngineDeck4Speed: '/Engine/Deck4/Speed', + EngineDeck4SpeedNeutral: '/Engine/Deck4/SpeedNeutral', + EngineDeck4SpeedOffsetDown: '/Engine/Deck4/SpeedOffsetDown', + EngineDeck4SpeedOffsetUp: '/Engine/Deck4/SpeedOffsetUp', + EngineDeck4SpeedRange: '/Engine/Deck4/SpeedRange', + EngineDeck4SpeedState: '/Engine/Deck4/SpeedState', + EngineDeck4SyncMode: '/Engine/Deck4/SyncMode', + EngineDeck4TrackArtistName: '/Engine/Deck4/Track/ArtistName', + EngineDeck4TrackBleep: '/Engine/Deck4/Track/Bleep', + EngineDeck4TrackCuePosition: '/Engine/Deck4/Track/CuePosition', + EngineDeck4TrackCurrentBPM: '/Engine/Deck4/Track/CurrentBPM', + EngineDeck4TrackCurrentKeyIndex: '/Engine/Deck4/Track/CurrentKeyIndex', + EngineDeck4TrackCurrentLoopInPosition: '/Engine/Deck4/Track/CurrentLoopInPosition', + EngineDeck4TrackCurrentLoopOutPosition: '/Engine/Deck4/Track/CurrentLoopOutPosition', + EngineDeck4TrackCurrentLoopSizeInBeats: '/Engine/Deck4/Track/CurrentLoopSizeInBeats', + EngineDeck4TrackKeyLock: '/Engine/Deck4/Track/KeyLock', + EngineDeck4TrackLoopEnableState: '/Engine/Deck4/Track/LoopEnableState', + EngineDeck4TrackLoopQuickLoop1: '/Engine/Deck4/Track/Loop/QuickLoop1', + EngineDeck4TrackLoopQuickLoop2: '/Engine/Deck4/Track/Loop/QuickLoop2', + EngineDeck4TrackLoopQuickLoop3: '/Engine/Deck4/Track/Loop/QuickLoop3', + EngineDeck4TrackLoopQuickLoop4: '/Engine/Deck4/Track/Loop/QuickLoop4', + EngineDeck4TrackLoopQuickLoop5: '/Engine/Deck4/Track/Loop/QuickLoop5', + EngineDeck4TrackLoopQuickLoop6: '/Engine/Deck4/Track/Loop/QuickLoop6', + EngineDeck4TrackLoopQuickLoop7: '/Engine/Deck4/Track/Loop/QuickLoop7', + EngineDeck4TrackLoopQuickLoop8: '/Engine/Deck4/Track/Loop/QuickLoop8', + EngineDeck4TrackPlayPauseLEDState: '/Engine/Deck4/Track/PlayPauseLEDState', + EngineDeck4TrackSampleRate: '/Engine/Deck4/Track/SampleRate', + EngineDeck4TrackSongAnalyzed: '/Engine/Deck4/Track/SongAnalyzed', + EngineDeck4TrackSongLoaded: '/Engine/Deck4/Track/SongLoaded', + EngineDeck4TrackSongName: '/Engine/Deck4/Track/SongName', + EngineDeck4TrackSoundSwitchGUID: '/Engine/Deck4/Track/SoundSwitchGuid', + EngineDeck4TrackTrackBytes: '/Engine/Deck4/Track/TrackBytes', + EngineDeck4TrackTrackData: '/Engine/Deck4/Track/TrackData', + EngineDeck4TrackTrackLength: '/Engine/Deck4/Track/TrackLength', + EngineDeck4TrackTrackName: '/Engine/Deck4/Track/TrackName', + EngineDeck4TrackTrackNetworkPath: '/Engine/Deck4/Track/TrackNetworkPath', + EngineDeck4TrackTrackURI: '/Engine/Deck4/Track/TrackUri', + EngineDeck4TrackTrackWasPlayed: '/Engine/Deck4/Track/TrackWasPlayed', + GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + }, + mixer: { + MixerCH1faderPosition: '/Mixer/CH1faderPosition', + MixerCH2faderPosition: '/Mixer/CH2faderPosition', + MixerCH3faderPosition: '/Mixer/CH3faderPosition', + MixerCH4faderPosition: '/Mixer/CH4faderPosition', + MixerCrossfaderPosition: '/Mixer/CrossfaderPosition', + MixerChannelAssignment1: '/Mixer/ChannelAssignment1', + MixerChannelAssignment2: '/Mixer/ChannelAssignment2', + MixerChannelAssignment3: '/Mixer/ChannelAssignment3', + MixerChannelAssignment4: '/Mixer/ChannelAssignment4', + MixerNumberOfChannels: '/Mixer/NumberOfChannels', - get source() { - if (this.TrackNetworkPath) { - const split = this.TrackNetworkPath.substring(6).split('/') - const deviceId = new DeviceId(split.shift()); - const sourceName = split.shift(); - const path = `/${sourceName}/${split.join('/')}` - this.#source = { - name: sourceName, - location: deviceId, - path: path, - } - } - return this.#source - } + }, } + + //EngineDeck1RequestUnsetSyncLead: '/Engine/Deck1/RequestUnsetSyncLead', + // GUIDecksDeckActiveDeck: '/GUI/Decks/Deck/ActiveDeck', + // GUIViewLayerLayerB: '/GUI/ViewLayer/LayerB', + // ClientDeck1DeckIsMaster: '/Client/Deck1/DeckIsMaster', + // ClientDeck2DeckIsMaster: '/Client/Deck2/DeckIsMaster', \ No newline at end of file diff --git a/types/models/Track.ts b/types/models/Track.ts index c8da51e..57b4873 100644 --- a/types/models/Track.ts +++ b/types/models/Track.ts @@ -1,4 +1,101 @@ -export interface Track { +import { DeviceId } from "../../devices"; + +interface ITrackData { + source: { + name: string; + location: DeviceId; + path: string; + } + ArtistName: string; + Bleep: boolean; + CuePosition: number; + CurrentBPM: number; + CurrentKeyIndex: number; + CurrentLoopInPosition: number; + CurrentLoopOutPosition: number; + CurrentLoopSizeInBeats: number; + KeyLock: boolean; + LoopEnableState: boolean; + Loop: { + QuickLoop1: boolean; + QuickLoop2: boolean; + QuickLoop3: boolean; + QuickLoop4: boolean; + QuickLoop5: boolean; + QuickLoop6: boolean; + QuickLoop7: boolean; + QuickLoop8: boolean; + }, + PlayPauseLEDState: boolean; + SampleRate: number; + SongAnalyzed: boolean; + SongLoaded: boolean; + SongName: string; + SoundSwitchGUID: string; + TrackBytes: number; + TrackData: boolean; + TrackLength: number; + TrackName: string; + TrackNetworkPath: string; + TrackURI: string; + TrackWasPlayed: boolean; +} + +export class Track implements Partial { + #prefix: string; + #source: { + name: string; + location: DeviceId; + path: string; + } = null; + + ArtistName: string = "" + CurrentBPM: number = 0; + SampleRate: number = 0; + SongAnalyzed: boolean = false; + SongLoaded: boolean = false; + SongName: string = ""; + SoundSwitchGUID: string = ""; + TrackBytes: number = 0; + TrackLength: number = 0; + TrackName: string = ""; + TrackNetworkPath: string = ""; + TrackURI: string = ""; + + /** + * @constructor + * @param {string} prefix State prefix that should proceed the property + */ + constructor(prefix: string) { + this.#prefix = prefix; + } + + /** + * Get State Prefix + */ + get prefix() { + return this.#prefix; + } + + get source() { + if (this.TrackNetworkPath) { + const split = this.TrackNetworkPath.substring(6).split('/') + const deviceId = new DeviceId(split.shift()); + const sourceName = split.shift(); + const path = `/${sourceName}/${split.join('/')}` + this.#source = { + name: sourceName, + location: deviceId, + path: path, + } + } + return this.#source + } +} + + + +export interface TrackDBEntry { id: number, playOrder: number, length: number, diff --git a/types/options.ts b/types/options.ts index 3412999..c628fbf 100644 --- a/types/options.ts +++ b/types/options.ts @@ -1,10 +1,11 @@ import { version } from '../package.json'; +import { DeviceId } from '../devices/DeviceId'; export interface DiscoveryMessageOptions { name: string; version: string; source: string; - token: Uint8Array; + deviceId: DeviceId; port?: number }; @@ -38,35 +39,35 @@ export const ActingAsDevice: { [name: string]: DiscoveryMessageOptions } = { name: 'stagelinqjs', version: version, source: 'SLJS', - token: Tokens.Listen + deviceId: new DeviceId(Tokens.Listen) }, NowPlaying: { name: 'nowplaying', version: '2.2.0', source: 'np2', - token: Tokens.Listen + deviceId: new DeviceId(Tokens.Listen) }, Sc6000_1: { name: 'sc6000', version: '2.3.1', source: 'JP13', - token: Tokens.Sc6000_1 + deviceId: new DeviceId(Tokens.Sc6000_1) }, Sc6000_2: { name: 'sc6000', version: '2.3.1', source: 'JP13', - token: Tokens.Sc6000_2 + deviceId: new DeviceId(Tokens.Sc6000_2) }, Resolume: { name: 'resolume', version: '10.0.0', source: 'res', - token: Tokens.Resolume + deviceId: new DeviceId(Tokens.Resolume) } } \ No newline at end of file From ad4843e8ac741c8fd2ebd9c7cf09febe8479010d Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 14:47:50 -0400 Subject: [PATCH 114/146] Refactor Databases to Sources --- Databases/Databases.ts | 53 -------------------------- {Databases => Sources}/DbConnection.ts | 0 {Databases => Sources}/Sources.ts | 25 ++++++++++++ {Databases => Sources}/index.ts | 1 - StageLinq/index.ts | 6 +-- cli/index.ts | 20 +++++----- index.ts | 2 +- services/FileTransfer.ts | 11 ++---- types/models/Source.ts | 9 ++--- 9 files changed, 48 insertions(+), 79 deletions(-) delete mode 100644 Databases/Databases.ts rename {Databases => Sources}/DbConnection.ts (100%) rename {Databases => Sources}/Sources.ts (73%) rename {Databases => Sources}/index.ts (66%) diff --git a/Databases/Databases.ts b/Databases/Databases.ts deleted file mode 100644 index 2d32ee7..0000000 --- a/Databases/Databases.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { EventEmitter } from 'stream'; -import { getTempFilePath } from '../utils'; -import { Logger } from '../LogEmitter'; -import * as fs from 'fs'; -import { StageLinq } from '../StageLinq'; -import { DbConnection } from './DbConnection'; -import { Source } from '../types'; -import { FileTransferProgress } from '../services'; - - -export declare interface Databases { - on(event: 'dbDownloaded', listener: (source: Source) => void): this; - on(event: 'dbDownloading', listener: (sourceName: string, dbPath: string) => void): this; - on(event: 'dbProgress', listener: (sourceName: string, txid: number, progress: FileTransferProgress) => void): this; -} - - -export class Databases extends EventEmitter { - parent: InstanceType; - - /** - * @constructor - * @param {StageLinq} _parent Instance of main StageLinq Class - */ - constructor(_parent: InstanceType) { - super(); - this.parent = _parent; - } - - /** - * Download a Database from Device - * @param {Source} source instance of Source - */ - - async downloadDb(source: Source) { - - Logger.debug(`downloadDb request for ${source.name}`); - const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); - Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); - - const file = await source.service.getFile(source, source.database.location); - Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); - fs.writeFileSync(dbPath, Buffer.from(file)); - - source.database.connection = new DbConnection(dbPath); - source.database.local = { - path: dbPath, - }; - this.parent.sources.setSource(source); - Logger.debug(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); - this.emit('dbDownloaded', source); - } -} diff --git a/Databases/DbConnection.ts b/Sources/DbConnection.ts similarity index 100% rename from Databases/DbConnection.ts rename to Sources/DbConnection.ts diff --git a/Databases/Sources.ts b/Sources/Sources.ts similarity index 73% rename from Databases/Sources.ts rename to Sources/Sources.ts index 2231168..c7126f0 100644 --- a/Databases/Sources.ts +++ b/Sources/Sources.ts @@ -3,6 +3,9 @@ import { Source } from '../types'; import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; +import * as fs from 'fs'; +import { DbConnection } from './DbConnection'; +import { getTempFilePath } from '../utils'; export declare interface Sources { @@ -11,6 +14,8 @@ export declare interface Sources { * @event newSource */ on(event: 'newSource', listener: (source: Source) => void): this; + on(event: 'sourceRemoved', listener: (sourceName: string, deviceId: DeviceId) => void): this; + on(event: 'dbDownloaded', listener: (source: Source) => void): this; } export class Sources extends EventEmitter { @@ -76,6 +81,7 @@ export class Sources extends EventEmitter { */ setSource(source: Source) { this._sources.set(`${source.deviceId.string}${source.name}`, source); + this.emit('newSource', source); } /** @@ -85,6 +91,7 @@ export class Sources extends EventEmitter { */ deleteSource(sourceName: string, deviceId: DeviceId) { this._sources.delete(`${deviceId.string}${sourceName}`) + this.emit('sourceRemoved', sourceName, deviceId); } /** @@ -105,5 +112,23 @@ export class Sources extends EventEmitter { throw new Error(err); } } + async downloadDb(source: Source) { + + Logger.debug(`downloadDb request for ${source.name}`); + const dbPath = getTempFilePath(`${source.deviceId.string}/${source.name}/m.db`); + Logger.debug(`Reading database ${source.deviceId.string}/${source.name}`); + + const file = await source.service.getFile(source, source.database.remote.location); + Logger.debug(`Saving ${source.deviceId.string}/${source.name} to ${dbPath}`); + fs.writeFileSync(dbPath, Buffer.from(file)); + + source.database.local = { + path: dbPath, + connection: new DbConnection(dbPath) + }; + this.setSource(source); + Logger.debug(`Downloaded ${source.deviceId.string}/${source.name} to ${dbPath}`); + this.emit('dbDownloaded', source); + } } diff --git a/Databases/index.ts b/Sources/index.ts similarity index 66% rename from Databases/index.ts rename to Sources/index.ts index 08ff7d5..7fd4c45 100644 --- a/Databases/index.ts +++ b/Sources/index.ts @@ -1,3 +1,2 @@ -export * from './Databases'; export * from './DbConnection'; export * from './Sources'; \ No newline at end of file diff --git a/StageLinq/index.ts b/StageLinq/index.ts index a9be701..39d466d 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions } from '../types'; import { Devices } from '../devices' -import { Databases, Sources } from '../Databases'; +import { Sources } from '../Sources'; import * as Services from '../services'; import { Status } from '../status/Status'; import { AddressInfo, Server } from 'net'; @@ -36,7 +36,7 @@ export class StageLinq extends EventEmitter { public readonly beatInfo: Services.BeatInfoHandler = null; public readonly timeSync: Services.TimeSynchronizationHandler = null; - public readonly databases: Databases = null; + //public readonly databases: Databases = null; public readonly sources: Sources = null; public readonly status: Status = null; @@ -51,7 +51,7 @@ export class StageLinq extends EventEmitter { constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; - this.databases = new Databases(this); + //this.databases = new Databases(this); this.sources = new Sources(this); this.status = new Status(this); diff --git a/cli/index.ts b/cli/index.ts index 492a68c..c7f7907 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -30,7 +30,7 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: } try { const source = stageLinq.sources.getSource(sourceName, deviceId); - const connection = source.database.connection; + const connection = source.database.local.connection; const result = await connection.getTrackInfo(trackName); return result; } catch (e) { @@ -142,11 +142,11 @@ async function main() { const deck = parseInt(data.name.substring(12, 13)) await sleep(250); const track = stageLinq.status.getTrack(data.deviceId, deck) - console.log(`Track Loaded: `, track) + console.log(`[STATUS] Track Loaded: `, track) if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath); - console.log('Track DB Info: ', trackInfo) + console.log('[STATUS] Track DB Info: ', trackInfo) downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } } @@ -180,18 +180,20 @@ async function main() { console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); - stageLinq.fileTransfer.on('newSource', (source: Source) => { - console.log(`[FILETRANSFER] Source Available: (${source.name})`); + stageLinq.sources.on('newSource', (source: Source) => { + console.log(`[SOURCES] Source Available: (${source.name})`); }); - stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { - console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); + stageLinq.sources.on('dbDownloaded', (source: Source) => { + console.log(`[SOURCES] Database Downloaded: (${source.name})`); }); - stageLinq.databases.on('dbDownloaded', (source: Source) => { - console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`); + stageLinq.sources.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { + console.log(`[SOURCES] Source Removed: ${sourceName} on ${deviceId.string}`); }); + + } diff --git a/index.ts b/index.ts index 3fb810f..b84561f 100644 --- a/index.ts +++ b/index.ts @@ -4,4 +4,4 @@ export * from './StageLinq'; export * from './types'; export * from './utils'; export * from './devices'; -export * from './Databases'; +export * from './Sources'; diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index e6ed180..7e9f939 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -44,8 +44,6 @@ export interface FileTransferProgress { export declare interface FileTransfer { on(event: 'fileTransferProgress', listener: (source: Source, fileName: string, txid: number, progress: FileTransferProgress) => void): this; on(event: 'fileTransferComplete', listener: (source: Source, fileName: string, txid: number) => void): this; - on(event: 'newSource', listener: (source: Source) => void): this; - on(event: 'sourceRemoved', listener: (sourceName: string, deviceId: DeviceId) => void): this; } export class FileTransferHandler extends ServiceHandler { @@ -344,7 +342,7 @@ export class FileTransfer extends Service { const newSources = sources.filter(source => !currentSourceNames.includes(source)); for (const source of markedForDelete) { this.parent.sources.deleteSource(source.name, source.deviceId) - this.emit('sourceRemoved', source.name, source.deviceId); + } if (newSources.length) { @@ -373,20 +371,19 @@ export class FileTransfer extends Service { deviceId: this.deviceId, service: this, database: { - location: database, size: fstatMessage.size, remote: { location: database, - device: this.deviceId.string, + device: this.deviceId, } } } this.parent.sources.setSource(thisSource); - this.emit('newSource', thisSource); + result.push(thisSource); if (this.parent.options.downloadDbSources) { - this.parent.databases.downloadDb(thisSource); + this.parent.sources.downloadDb(thisSource); } break; } diff --git a/types/models/Source.ts b/types/models/Source.ts index db2e1d6..6f46feb 100644 --- a/types/models/Source.ts +++ b/types/models/Source.ts @@ -1,4 +1,4 @@ -import { DbConnection } from '../../Databases'; +import { DbConnection } from '../../Sources'; import { FileTransfer } from '../../services'; import { DeviceId } from '../../devices/DeviceId'; @@ -8,15 +8,14 @@ export interface Source { deviceId: DeviceId; service: FileTransfer; database: { - location: string; size: number; - connection?: DbConnection; - remote?: { + remote: { location: string, - device: string, + device: DeviceId, }, local?: { path: string, + connection: DbConnection; } }; } \ No newline at end of file From 8701c5bf55f7f2a5ce9933e23d9deaa68fbe1b80 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 15:49:23 -0400 Subject: [PATCH 115/146] Syntax Fixes --- Sources/Sources.ts | 4 ++-- StageLinq/index.ts | 2 +- cli/index.ts | 8 ++++++-- services/FileTransfer.ts | 7 ++++--- services/Service.ts | 2 +- services/StateMap.ts | 8 ++------ 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Sources/Sources.ts b/Sources/Sources.ts index c7126f0..319e9b5 100644 --- a/Sources/Sources.ts +++ b/Sources/Sources.ts @@ -20,13 +20,13 @@ export declare interface Sources { export class Sources extends EventEmitter { private _sources: Map = new Map(); - public readonly parent: InstanceType; + public readonly parent: StageLinq; /** * @constructor * @param {StageLinq} parent */ - constructor(parent: InstanceType) { + constructor(parent: StageLinq) { super(); this.parent = parent; } diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 39d466d..98adde4 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -15,7 +15,7 @@ const DEFAULT_OPTIONS: StageLinqOptions = { downloadDbSources: true, }; -export interface ServiceHandlers { +interface ServiceHandlers { [key: string]: InstanceType; } diff --git a/cli/index.ts b/cli/index.ts index c7f7907..5b39e6a 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -71,7 +71,7 @@ async function main() { ], } - const stageLinq = new StageLinq(stageLinqOptions); + const stageLinq = await new StageLinq(stageLinqOptions); stageLinq.logger.on('error', (...args: any) => { @@ -124,6 +124,9 @@ async function main() { console.log(`[DEVICES] New ${service.name} Service on ${device.deviceId.string} port ${service.serverInfo.port}`) }); + if (!stageLinq.stateMap) console.warn('no StateMap!', stageLinq.stateMap) + if (!stageLinq.fileTransfer) console.warn('no fileTransfer!', stageLinq.fileTransfer) + if (!stageLinq.beatInfo) console.warn('no beatInfo!', stageLinq.beatInfo) if (stageLinq.stateMap) { @@ -155,7 +158,8 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMap) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - for (let i = 1; i <= stageLinq.devices.device(service.deviceId).deckCount(); i++) { + + for (let i = 1; i <= service.device.deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 7e9f939..f5f5c4e 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -267,9 +267,10 @@ export class FileTransfer extends Service { * @returns {Promise} Contents of the file. */ async getFile(source: Source, location: string): Promise { - while (!this.#isAvailable) { - await sleep(500) - } + // while (!this.#isAvailable) { + // await sleep(500) + // } + await this.isAvailable(); this.#isAvailable = false; assert(this.receivedFile === null); await this.requestFileTransferId(location); diff --git a/services/Service.ts b/services/Service.ts index c7fed28..01f7c5a 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -355,7 +355,7 @@ export abstract class Service extends EventEmitter { * @param {StageLinq} parent * @param {ServiceHandler} handler */ - protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: InstanceType, handler: ServiceHandler) { + protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: StageLinq, handler: ServiceHandler) { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); await server.close(); diff --git a/services/StateMap.ts b/services/StateMap.ts index 4b17634..36b2e89 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -5,7 +5,6 @@ import { ServiceMessage, StateNames } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; -import { sleep } from '../utils'; import { Service, ServiceHandler } from '../services'; import { StageLinq } from '../StageLinq'; import * as stagelinqConfig from '../stagelinqConfig.json'; @@ -112,14 +111,11 @@ export class StateMap extends Service { */ public async subscribe() { const socket = this.socket; - while (!this.parent.devices.hasDevice(this.deviceId)) { - await sleep(200); - } Logger.silly(`Sending Statemap subscriptions to ${socket.remoteAddress}:${socket.remotePort} ${this.deviceId.string}`); - const connectionInfo = this.parent.devices.device(this.deviceId).info; - switch (connectionInfo?.unit?.type) { + + switch (this.device.info.unit?.type) { case "PLAYER": { for (let state of playerStateValues) { await this.subscribeState(state, 0, socket); From 3cb1db050fccb43484d7b419d3f2fb5d1840895e Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 21:00:49 -0400 Subject: [PATCH 116/146] cleanup messages --- StageLinq/index.ts | 19 ++++++++--- cli/index.ts | 12 ++----- cli/nowPlaying.ts | 2 +- services/BeatInfo.ts | 74 ++++++++++++++++++++++------------------ services/FileTransfer.ts | 6 +++- services/Service.ts | 5 +-- 6 files changed, 67 insertions(+), 51 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 98adde4..23c2d90 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -25,7 +25,7 @@ interface ServiceHandlers { export class StageLinq extends EventEmitter { public options: StageLinqOptions; - public services: ServiceHandlers = {}; + #services: ServiceHandlers = {}; public readonly devices = new Devices(); public readonly logger: Logger = Logger.instance; @@ -34,7 +34,7 @@ export class StageLinq extends EventEmitter { public readonly stateMap: Services.StateMapHandler = null; public readonly fileTransfer: Services.FileTransferHandler = null; public readonly beatInfo: Services.BeatInfoHandler = null; - public readonly timeSync: Services.TimeSynchronizationHandler = null; + //public readonly timeSync: Services.TimeSynchronizationHandler = null; //public readonly databases: Databases = null; public readonly sources: Sources = null; @@ -51,7 +51,6 @@ export class StageLinq extends EventEmitter { constructor(options?: StageLinqOptions) { super(); this.options = options || DEFAULT_OPTIONS; - //this.databases = new Databases(this); this.sources = new Sources(this); this.status = new Status(this); @@ -71,7 +70,7 @@ export class StageLinq extends EventEmitter { break; } case "TimeSynchronization": { - this.timeSync = new Services.TimeSynchronizationHandler(this, service); + new Services.TimeSynchronizationHandler(this, service); break; } default: @@ -80,6 +79,18 @@ export class StageLinq extends EventEmitter { } } + get services() { + return this.#services + } + + get timeSync() { + return this.#services['TimeSynchronization'] as Services.TimeSynchronizationHandler || null + } + + addService(serviceHandler: InstanceType) { + this.#services[serviceHandler.name] = serviceHandler; + } + /** * * @param {string} serverName diff --git a/cli/index.ts b/cli/index.ts index 5b39e6a..ec49498 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -73,7 +73,6 @@ async function main() { const stageLinq = await new StageLinq(stageLinqOptions); - stageLinq.logger.on('error', (...args: any) => { console.error(...args); }); @@ -124,13 +123,9 @@ async function main() { console.log(`[DEVICES] New ${service.name} Service on ${device.deviceId.string} port ${service.serverInfo.port}`) }); - if (!stageLinq.stateMap) console.warn('no StateMap!', stageLinq.stateMap) - if (!stageLinq.fileTransfer) console.warn('no fileTransfer!', stageLinq.fileTransfer) - if (!stageLinq.beatInfo) console.warn('no beatInfo!', stageLinq.beatInfo) if (stageLinq.stateMap) { - async function deckIsMaster(data: StateData) { if (data.json.state) { const deck = parseInt(data.name.substring(12, 13)) @@ -158,7 +153,6 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMap) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - for (let i = 1; i <= service.device.deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); @@ -196,8 +190,6 @@ async function main() { console.log(`[SOURCES] Source Removed: ${sourceName} on ${deviceId.string}`); }); - - } @@ -234,7 +226,7 @@ async function main() { }; - stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { + stageLinq.beatInfo.on('newDevice', async (beatInfo: BeatInfo) => { console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) @@ -244,7 +236,7 @@ async function main() { if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); - stageLinq.beatInfo.on('beatMsg', (bd) => { + stageLinq.beatInfo.on('beatMessage', (bd) => { if (bd) { beatCallback(bd); } diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 9c93f2f..8908220 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -57,7 +57,7 @@ async function main() { stageLinq.stateMap.on('newDevice', async (service: StateMap) => { - for (let i = 1; i <= stageLinq.devices.device(service.deviceId).deckCount(); i++) { + for (let i = 1; i <= service.device.deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); } diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index ea301f1..b10bdee 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -29,8 +29,8 @@ export interface BeatData { } export declare interface BeatInfoHandler { - on(event: 'newBeatInfoDevice', listener: (device: Service) => void): this; - on(event: 'beatMsg', listener: (beatData: BeatData, device: Service) => void): this; + on(event: 'newDevice', listener: (device: Service) => void): this; + on(event: 'beatMessage', listener: (beatData: BeatData, device: Service) => void): this; } export class BeatInfoHandler extends ServiceHandler { @@ -66,10 +66,10 @@ export class BeatInfoHandler extends ServiceHandler { this.addDevice(deviceId, service); beatInfo.server.on("connection", () => { - this.emit('newBeatInfoDevice', beatInfo) + this.emit('newDevice', beatInfo) }); beatInfo.on('beatMessage', (message: ServiceMessage) => { - this.emit('beatMsg', message, beatInfo) + this.emit('beatMessage', message, beatInfo) }) } } @@ -82,10 +82,10 @@ export class BeatInfo extends Service { public readonly name = "BeatInfo"; public readonly handler: BeatInfoHandler; - private _userBeatCallback: BeatCallback = null; - private _userBeatOptions: BeatOptions = null; - private _currentBeatData: BeatData = null; - isBufferedService: boolean = true; + #userBeatCallback: BeatCallback = null; + #userBeatOptions: BeatOptions = null; + #currentBeatData: BeatData = null; + protected isBufferedService: boolean = true; /** * @constructor @@ -103,7 +103,7 @@ export class BeatInfo extends Service { * @returns {BeatData} */ getBeatData(): BeatData { - return this._currentBeatData; + return this.#currentBeatData; } /** @@ -113,9 +113,9 @@ export class BeatInfo extends Service { */ public startBeatInfo(options: BeatOptions, beatCB?: BeatCallback) { if (beatCB) { - this._userBeatCallback = beatCB; + this.#userBeatCallback = beatCB; } - this._userBeatOptions = options; + this.#userBeatOptions = options; this.sendBeatInfoRequest(); } @@ -170,37 +170,45 @@ export class BeatInfo extends Service { || (Math.floor(prevBeat / res) - Math.floor(currentBeat / res) >= 1) } - if (data && data.message) { - if (!this._currentBeatData) { - this._currentBeatData = data.message; - this.handler.setBeatData(this.deviceId, data.message); + if (!data || !data.message) { + return + } + + //if (data && data.message) { + if (!this.#currentBeatData) { + this.#currentBeatData = data.message; + this.handler.setBeatData(this.deviceId, data.message); + if (this.listenerCount('beatMessage')) { this.emit('beatMessage', data.message); - if (this._userBeatCallback) { - this._userBeatCallback(data.message); - } } + if (this.#userBeatCallback) { + this.#userBeatCallback(data.message); + } + + } - let hasUpdated = false; + let hasUpdated = false; - for (let i = 0; i < data.message.deckCount; i++) { - if (resCheck( - this._userBeatOptions.everyNBeats, - this._currentBeatData.deck[i].beat, - data.message.deck[i].beat)) { - hasUpdated = true; - } + for (let i = 0; i < data.message.deckCount; i++) { + if (resCheck( + this.#userBeatOptions.everyNBeats, + this.#currentBeatData.deck[i].beat, + data.message.deck[i].beat)) { + hasUpdated = true; } + } - if (hasUpdated) { - + if (hasUpdated) { + if (this.listenerCount('beatMessage')) { this.emit('beatMessage', data); - if (this._userBeatCallback) { - this._userBeatCallback(data.message); - } } - this._currentBeatData = data.message; - this.handler.setBeatData(this.deviceId, data.message); + if (this.#userBeatCallback) { + this.#userBeatCallback(data.message); + } } + this.#currentBeatData = data.message; + this.handler.setBeatData(this.deviceId, data.message); } + //} } \ No newline at end of file diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index f5f5c4e..5eed79a 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -58,6 +58,11 @@ export class FileTransferHandler extends ServiceHandler { const fileTransfer = service as Service; Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); this.addDevice(deviceId, service); + fileTransfer.on('newDevice', (service: FileTransfer) => { + Logger.debug(`New FileTransfer Device ${service.deviceId.string}`) + this.emit('newDevice', service); + }) + fileTransfer.on('fileTransferProgress', (source, fileName, txid, progress) => { this.emit('fileTransferProgress', source, fileName, txid, progress); }); @@ -75,7 +80,6 @@ export class FileTransferHandler extends ServiceHandler { export class FileTransfer extends Service { public name: string = "FileTransfer"; - private receivedFile: WriteContext = null; #txid: number = 1; #isAvailable: boolean = true; diff --git a/services/Service.ts b/services/Service.ts index 01f7c5a..fc73773 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -20,7 +20,7 @@ export declare type ServiceData = { export abstract class ServiceHandler extends EventEmitter { public name: string; - protected parent: InstanceType; + protected parent: StageLinq; private _devices: Map> = new Map(); /** @@ -34,7 +34,7 @@ export abstract class ServiceHandler extends EventEmitter { super(); this.parent = parent; this.name = serviceName; - this.parent.services[serviceName] = this; + this.parent.addService(this); } /** @@ -117,6 +117,7 @@ export abstract class Service extends EventEmitter { public serverInfo: AddressInfo; public serverStatus: boolean = false; public socket: Socket = null; + static instances: Map> = new Map(); protected isBufferedService: boolean = true; protected parent: StageLinq; From 3ab186f919d9f2aebf24d4237aa77812d8edbae0 Mon Sep 17 00:00:00 2001 From: honusz Date: Wed, 5 Apr 2023 22:01:50 -0400 Subject: [PATCH 117/146] testing static methods --- StageLinq/index.ts | 4 +++- cli/index.ts | 11 +++++++++-- services/FileTransfer.ts | 27 ++++++++++++++++++++++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 23c2d90..e8970bd 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -19,6 +19,8 @@ interface ServiceHandlers { [key: string]: InstanceType; } + + /** * Main StageLinq class. */ @@ -35,8 +37,8 @@ export class StageLinq extends EventEmitter { public readonly fileTransfer: Services.FileTransferHandler = null; public readonly beatInfo: Services.BeatInfoHandler = null; //public readonly timeSync: Services.TimeSynchronizationHandler = null; + public static FileTransfer: Services.FileTransfer - //public readonly databases: Databases = null; public readonly sources: Sources = null; public readonly status: Status = null; diff --git a/cli/index.ts b/cli/index.ts index ec49498..4610b38 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -1,6 +1,6 @@ import { ActingAsDevice, StageLinqOptions, ServiceList, Source } from '../types'; import { DeviceId } from '../devices' -import { StateData, StateMap, BeatData, BeatInfo } from '../services'; +import { StateData, StateMap, BeatData, BeatInfo, FileTransfer } from '../services'; import { sleep } from '../utils/sleep'; import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; @@ -61,7 +61,7 @@ async function main() { console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - downloadDbSources: true, + downloadDbSources: false, maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ @@ -170,6 +170,12 @@ async function main() { if (stageLinq.fileTransfer) { + //StageLinq.FileTransfer. + + FileTransfer.emitter.on('newSource', (source) => { + console.warn(`NEW FileTransfer static Source! ${source.name}`) + }) + stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => { console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); }); @@ -180,6 +186,7 @@ async function main() { stageLinq.sources.on('newSource', (source: Source) => { console.log(`[SOURCES] Source Available: (${source.name})`); + //console.warn(FileTransfer.getInstances()) }); stageLinq.sources.on('dbDownloaded', (source: Source) => { diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 5eed79a..77ed449 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -7,6 +7,8 @@ import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source } from '../types'; import { DeviceId } from '../devices' +import { StageLinq } from '../StageLinq'; +import EventEmitter = require('events'); const MAGIC_MARKER = 'fltx'; @@ -81,14 +83,37 @@ export class FileTransferHandler extends ServiceHandler { export class FileTransfer extends Service { public name: string = "FileTransfer"; private receivedFile: WriteContext = null; + static #instances: Map = new Map() + static readonly emitter: EventEmitter = new EventEmitter(); #txid: number = 1; #isAvailable: boolean = true; + constructor(parent: StageLinq, serviceHandler: FileTransferHandler, deviceId?: DeviceId) { + super(parent, serviceHandler, deviceId) + //this.handler = this._handler as FileTransferHandler + FileTransfer.addInstance(this) + this.addListener('newSource', (source: Source) => FileTransfer.fileTransferListener('newSource', source)) + } // TODO need better txId to handle concurrent transfers public get txid() { return this.#txid; } + private static addInstance(service: FileTransfer) { + FileTransfer.#instances.set(service.deviceId.string, service) + } + private static fileTransferListener(eventName: string, ...args: any) { + FileTransfer.emitter.emit(eventName, ...args) + } + + static getInstance(deviceId: DeviceId): FileTransfer { + return FileTransfer.#instances.get(deviceId.string) + } + + static getInstances(): string[] { + return [...FileTransfer.#instances.keys()] + } + protected parseData(ctx: ReadContext): ServiceMessage { const check = ctx.getString(4); @@ -384,7 +409,7 @@ export class FileTransfer extends Service { } } this.parent.sources.setSource(thisSource); - + this.emit('newSource', thisSource) result.push(thisSource); if (this.parent.options.downloadDbSources) { From 0eea7604e7bbf1e2e2329cc84ece90844fee1a05 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 6 Apr 2023 00:57:18 -0400 Subject: [PATCH 118/146] Removed ServiceHandlers --- StageLinq/index.ts | 62 ++++----------------- cli/index.ts | 35 ++++++------ cli/nowPlaying.ts | 2 +- services/BeatInfo.ts | 77 ++++++++------------------ services/Directory.ts | 23 +++----- services/FileTransfer.ts | 48 ++++------------- services/Service.ts | 113 +++------------------------------------ services/StateMap.ts | 55 +++++-------------- services/TimeSync.ts | 22 ++++---- status/Status.ts | 6 +++ 10 files changed, 107 insertions(+), 336 deletions(-) diff --git a/StageLinq/index.ts b/StageLinq/index.ts index e8970bd..7e31ad4 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -2,7 +2,7 @@ import { Discovery } from '../network'; import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions } from '../types'; -import { Devices } from '../devices' +import { Devices, DeviceId } from '../devices' import { Sources } from '../Sources'; import * as Services from '../services'; import { Status } from '../status/Status'; @@ -15,30 +15,17 @@ const DEFAULT_OPTIONS: StageLinqOptions = { downloadDbSources: true, }; -interface ServiceHandlers { - [key: string]: InstanceType; -} - - - /** * Main StageLinq class. */ export class StageLinq extends EventEmitter { public options: StageLinqOptions; - #services: ServiceHandlers = {}; public readonly devices = new Devices(); public readonly logger: Logger = Logger.instance; public readonly discovery: Discovery = new Discovery(this); - public readonly stateMap: Services.StateMapHandler = null; - public readonly fileTransfer: Services.FileTransferHandler = null; - public readonly beatInfo: Services.BeatInfoHandler = null; - //public readonly timeSync: Services.TimeSynchronizationHandler = null; - public static FileTransfer: Services.FileTransfer - public readonly sources: Sources = null; public readonly status: Status = null; @@ -55,42 +42,6 @@ export class StageLinq extends EventEmitter { this.options = options || DEFAULT_OPTIONS; this.sources = new Sources(this); this.status = new Status(this); - - //TODO make this into factory function? - for (let service of this.options.services) { - switch (service) { - case "StateMap": { - this.stateMap = new Services.StateMapHandler(this, service); - break; - } - case "FileTransfer": { - this.fileTransfer = new Services.FileTransferHandler(this, service); - break; - } - case "BeatInfo": { - this.beatInfo = new Services.BeatInfoHandler(this, service); - break; - } - case "TimeSynchronization": { - new Services.TimeSynchronizationHandler(this, service); - break; - } - default: - break; - } - } - } - - get services() { - return this.#services - } - - get timeSync() { - return this.#services['TimeSynchronization'] as Services.TimeSynchronizationHandler || null - } - - addService(serviceHandler: InstanceType) { - this.#services[serviceHandler.name] = serviceHandler; } /** @@ -126,13 +77,20 @@ export class StageLinq extends EventEmitter { await this.discovery.listen(this.options.actingAs); //Directory is required - const directory = new Services.DirectoryHandler(this, Services.Directory.name) - this.directory = await directory.startServiceListener(Services.Directory, this); + this.directory = await this.startServiceListener(Services.Directory); // Announce myself with Directory port await this.discovery.announce(this.directory.serverInfo.port); } + async startServiceListener>(ctor: { + new(parent: InstanceType, _deviceId?: DeviceId): T; + }, deviceId?: DeviceId): Promise { + const service = new ctor(this, deviceId); + await service.listen(); + return service; + } + /** * Disconnect from the StageLinq network. * Close all open Servers diff --git a/cli/index.ts b/cli/index.ts index 4610b38..48578c2 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -61,7 +61,7 @@ async function main() { console.log('Starting CLI'); const stageLinqOptions: StageLinqOptions = { - downloadDbSources: false, + downloadDbSources: true, maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ @@ -124,7 +124,7 @@ async function main() { }); - if (stageLinq.stateMap) { + if (stageLinqOptions.services.includes(ServiceList.StateMap)) { async function deckIsMaster(data: StateData) { if (data.json.state) { @@ -142,7 +142,7 @@ async function main() { const track = stageLinq.status.getTrack(data.deviceId, deck) console.log(`[STATUS] Track Loaded: `, track) - if (stageLinq.fileTransfer && stageLinq.options.downloadDbSources) { + if (stageLinqOptions.services.includes(ServiceList.FileTransfer) && stageLinq.options.downloadDbSources) { const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath); console.log('[STATUS] Track DB Info: ', trackInfo) downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); @@ -150,7 +150,7 @@ async function main() { } } - stageLinq.stateMap.on('newDevice', async (service: StateMap) => { + StateMap.emitter.on('newDevice', async (service: StateMap) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); for (let i = 1; i <= service.device.deckCount(); i++) { @@ -161,32 +161,29 @@ async function main() { service.subscribe(); }); - stageLinq.stateMap.on('stateMessage', async (data: StateData) => { - Logger.debug(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`); + StateMap.emitter.on('stateMessage', async (data: StateData) => { + console.log(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`); }); } - if (stageLinq.fileTransfer) { - - //StageLinq.FileTransfer. + if (stageLinqOptions.services.includes(ServiceList.FileTransfer)) { FileTransfer.emitter.on('newSource', (source) => { console.warn(`NEW FileTransfer static Source! ${source.name}`) }) - stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => { + FileTransfer.emitter.on('fileTransferProgress', (source, file, txid, progress) => { console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); }); - stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => { + FileTransfer.emitter.on('fileTransferComplete', (source, file, txid) => { console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); stageLinq.sources.on('newSource', (source: Source) => { console.log(`[SOURCES] Source Available: (${source.name})`); - //console.warn(FileTransfer.getInstances()) }); stageLinq.sources.on('dbDownloaded', (source: Source) => { @@ -200,7 +197,7 @@ async function main() { } - if (stageLinq.beatInfo) { + if (stageLinqOptions.services.includes(ServiceList.BeatInfo)) { // User Options const beatOptions = { @@ -232,18 +229,24 @@ async function main() { useRegister: false, }; + BeatInfo.emitter.on('newDevice', async (beatInfo: BeatInfo) => { + console.log(`[STATICBEATINFO] New Device ${beatInfo.deviceId.string}`) + //beatInfo + //}); - stageLinq.beatInfo.on('newDevice', async (beatInfo: BeatInfo) => { - console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) + //stageLinq.beatInfo.on('newDevice', async (beatInfo: BeatInfo) => { + //console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) if (beatMethod.useCallback) { beatInfo.startBeatInfo(beatOptions, beatCallback); + console.warn(BeatInfo.getInstances()) } if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); - stageLinq.beatInfo.on('beatMessage', (bd) => { + BeatInfo.emitter.on('beatMessage', (bd) => { + if (bd) { beatCallback(bd); } diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 8908220..34ac5c0 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -55,7 +55,7 @@ async function main() { } - stageLinq.stateMap.on('newDevice', async (service: StateMap) => { + StateMap.emitter.on('newDevice', async (service: StateMap) => { for (let i = 1; i <= service.device.deckCount(); i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index b10bdee..770832a 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -1,11 +1,12 @@ import { strict as assert } from 'assert'; import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service, ServiceHandler } from './Service'; -import { Logger } from '../LogEmitter'; +import { Service } from './Service'; import type { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; +import EventEmitter = require('events'); + type BeatCallback = (n: BeatData) => void; @@ -28,59 +29,14 @@ export interface BeatData { deck: deckBeatData[]; } -export declare interface BeatInfoHandler { - on(event: 'newDevice', listener: (device: Service) => void): this; - on(event: 'beatMessage', listener: (beatData: BeatData, device: Service) => void): this; -} - -export class BeatInfoHandler extends ServiceHandler { - public name: string = 'BeatInfo'; - #beatRegister: Map = new Map(); - - /** - * Get most recent BeatData - * @param {DeviceId} [deviceId] optionally filter by DeviceId - * @returns {BeatData[]} - */ - public getBeatData(deviceId?: DeviceId): BeatData[] { - return (deviceId ? [this.#beatRegister.get(deviceId.string)] : [...this.#beatRegister.values()]) - } - - /** - * Add BeatData for Device - * @param {DeviceId} deviceId - * @param {BeatData} data - */ - public setBeatData(deviceId: DeviceId, data: BeatData) { - this.#beatRegister.set(deviceId.string, data); - } - - /** - * Setup BeatInfo ServiceHandler - * @param {Service} service - * @param {DeviceId} deviceId - */ - public setupService(service: Service, deviceId: DeviceId) { - Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); - const beatInfo = service as BeatInfo; - this.addDevice(deviceId, service); - - beatInfo.server.on("connection", () => { - this.emit('newDevice', beatInfo) - }); - beatInfo.on('beatMessage', (message: ServiceMessage) => { - this.emit('beatMessage', message, beatInfo) - }) - } -} - export declare interface BeatInfo { on(event: 'beatMessage', listener: (message: ServiceMessage) => void): this; } export class BeatInfo extends Service { public readonly name = "BeatInfo"; - public readonly handler: BeatInfoHandler; + static #instances: Map = new Map() + static readonly emitter: EventEmitter = new EventEmitter(); #userBeatCallback: BeatCallback = null; #userBeatOptions: BeatOptions = null; @@ -93,11 +49,24 @@ export class BeatInfo extends Service { * @param {BeatInfoHandler} serviceHandler * @param {DeviceId} [deviceId] */ - constructor(parent: StageLinq, serviceHandler: BeatInfoHandler, deviceId?: DeviceId) { - super(parent, serviceHandler, deviceId) - this.handler = this._handler as BeatInfoHandler + + constructor(parent: StageLinq, deviceId: DeviceId) { + super(parent, deviceId) + BeatInfo.#instances.set(this.deviceId.string, this) + this.addListener('connection', () => BeatInfo.instanceListener('newDevice', this)) + this.addListener('beatMessage', (data: BeatData) => BeatInfo.instanceListener('beatMessage', data)) } + private static instanceListener(eventName: string, ...args: any) { + BeatInfo.emitter.emit(eventName, ...args) + } + static getInstances(): string[] { + return [...BeatInfo.#instances.keys()] + } + + deleteDevice(deviceId: DeviceId) { + BeatInfo.#instances.delete(deviceId.string) + } /** * Get current BeatData * @returns {BeatData} @@ -174,10 +143,8 @@ export class BeatInfo extends Service { return } - //if (data && data.message) { if (!this.#currentBeatData) { this.#currentBeatData = data.message; - this.handler.setBeatData(this.deviceId, data.message); if (this.listenerCount('beatMessage')) { this.emit('beatMessage', data.message); } @@ -207,8 +174,6 @@ export class BeatInfo extends Service { } } this.#currentBeatData = data.message; - this.handler.setBeatData(this.deviceId, data.message); } - //} } \ No newline at end of file diff --git a/services/Directory.ts b/services/Directory.ts index 018ce09..e380863 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,6 +1,6 @@ import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service, ServiceHandler } from './Service'; +import { Service, } from './Service'; import { ServiceMessage, MessageId, Units } from '../types'; import { DeviceId } from '../devices' import { sleep } from '../utils/sleep'; @@ -10,19 +10,12 @@ import { WriteContext } from '../utils/WriteContext'; import { FileTransfer } from './FileTransfer'; import { StateMap } from './StateMap'; import { BeatInfo } from './BeatInfo'; -import { TimeSynchronization } from './TimeSync'; +//import { TimeSynchronization } from './TimeSync'; export interface DirectoryData { deviceId: string; } -export class DirectoryHandler extends ServiceHandler { - public name: string = "Directory" - - public setupService(service: Service) { - Logger.debug(`Setting up ${service.name}`); - } -} export class Directory extends Service { public readonly name = 'Directory'; @@ -110,27 +103,27 @@ export class Directory extends Service { ctx.write(this.parent.options.actingAs.deviceId.array); let services: InstanceType[] = [] const device = await this.parent.devices.getDevice(deviceId); - for (const serviceName of Object.keys(this.parent.services)) { + for (const serviceName of this.parent.options.services) { if (device && !!Units[device.info?.software?.name]) { switch (serviceName) { case 'FileTransfer': { - const fileTransfer = await this.parent.services[serviceName].startServiceListener(FileTransfer, this.parent, deviceId); + const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId) services.push(fileTransfer); break; } case 'StateMap': { - const stateMap = await this.parent.services[serviceName].startServiceListener(StateMap, this.parent, deviceId); + const stateMap = await this.parent.startServiceListener(StateMap, deviceId) services.push(stateMap); break; } case 'BeatInfo': { - const beatInfo = await this.parent.services[serviceName].startServiceListener(BeatInfo, this.parent, deviceId); + const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId) services.push(beatInfo); break; } case 'TimeSynchronization': { - const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); - services.push(timeSync); + //const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); + //services.push(timeSync); break; } default: diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 77ed449..9061386 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,7 +1,7 @@ import { DOWNLOAD_TIMEOUT } from '../types'; import { Logger } from '../LogEmitter'; import { ReadContext } from '../utils/ReadContext'; -import { Service, ServiceHandler } from './Service'; +import { Service } from './Service'; import { sleep } from '../utils/sleep'; import { strict as assert } from 'assert'; import { WriteContext } from '../utils/WriteContext'; @@ -48,37 +48,6 @@ export declare interface FileTransfer { on(event: 'fileTransferComplete', listener: (source: Source, fileName: string, txid: number) => void): this; } -export class FileTransferHandler extends ServiceHandler { - public readonly name = "FileTransfer" - - /** - * - * @param {Service} service - * @param {DeviceId} deviceId - */ - public setupService(service: Service, deviceId: DeviceId) { - const fileTransfer = service as Service; - Logger.debug(`Setting up ${fileTransfer.name} for ${deviceId.string}`); - this.addDevice(deviceId, service); - fileTransfer.on('newDevice', (service: FileTransfer) => { - Logger.debug(`New FileTransfer Device ${service.deviceId.string}`) - this.emit('newDevice', service); - }) - - fileTransfer.on('fileTransferProgress', (source, fileName, txid, progress) => { - this.emit('fileTransferProgress', source, fileName, txid, progress); - }); - fileTransfer.on('fileTransferComplete', (source, fileName, txid) => { - this.emit('fileTransferComplete', source, fileName, txid); - }); - fileTransfer.on('newSource', (source: Source) => { - this.emit('newSource', source); - }); - fileTransfer.on('sourceRemoved', (name: string, deviceId: DeviceId) => { - this.emit('sourceRemoved', name, deviceId); - }); - } -} export class FileTransfer extends Service { public name: string = "FileTransfer"; @@ -88,20 +57,21 @@ export class FileTransfer extends Service { #txid: number = 1; #isAvailable: boolean = true; - constructor(parent: StageLinq, serviceHandler: FileTransferHandler, deviceId?: DeviceId) { - super(parent, serviceHandler, deviceId) - //this.handler = this._handler as FileTransferHandler - FileTransfer.addInstance(this) + constructor(parent: StageLinq, deviceId?: DeviceId) { + super(parent, deviceId) + FileTransfer.#instances.set(this.deviceId.string, this) + this.addListener('newDevice', (service: FileTransfer) => FileTransfer.fileTransferListener('newDevice', service)) this.addListener('newSource', (source: Source) => FileTransfer.fileTransferListener('newSource', source)) + this.addListener('sourceRemoved', (name: string, deviceId: DeviceId) => FileTransfer.fileTransferListener('newSource', name, deviceId)) + this.addListener('fileTransferProgress', (source: Source, fileName: string, txid: number, progress: FileTransferProgress) => FileTransfer.fileTransferListener('fileTransferProgress', source, fileName, txid, progress)) + this.addListener('fileTransferComplete', (source: Source, fileName: string, txid: number) => FileTransfer.fileTransferListener('fileTransferComplete', source, fileName, txid)) } // TODO need better txId to handle concurrent transfers public get txid() { return this.#txid; } - private static addInstance(service: FileTransfer) { - FileTransfer.#instances.set(service.deviceId.string, service) - } + private static fileTransferListener(eventName: string, ...args: any) { FileTransfer.emitter.emit(eventName, ...args) } diff --git a/services/Service.ts b/services/Service.ts index fc73773..9261631 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -18,96 +18,6 @@ export declare type ServiceData = { service?: InstanceType; } -export abstract class ServiceHandler extends EventEmitter { - public name: string; - protected parent: StageLinq; - private _devices: Map> = new Map(); - - /** - * ServiceHandler Abstract Class - * @constructor - * @param {StageLinq} parent - * @param {string} serviceName - */ - - constructor(parent: StageLinq, serviceName: string) { - super(); - this.parent = parent; - this.name = serviceName; - this.parent.addService(this); - } - - /** - * Check if Service Handler has Device - * @param {DeviceId} deviceId - * @returns {boolean} - */ - hasDevice(deviceId: DeviceId): boolean { - return this._devices.has(deviceId.string) - } - - /** - * Get an attached device from Service Handler - * @param {DeviceId} deviceId - * @returns {Service} - */ - getDevice(deviceId: DeviceId): Service { - return this._devices.get(deviceId.string); - } - - /** - * Get all attached devices from Service Handler - * @returns {Service[]} - */ - getDevices(): Service[] { - return [...this._devices.values()] - } - - /** - * Add a Device to Service Handler - * @param {DeviceId} deviceId - * @param {Service} service - */ - addDevice(deviceId: DeviceId, service: Service) { - this._devices.set(deviceId.string, service) - } - - /** - * Remove a Device from Service Handler - * @param {DeviceId} deviceId - */ - deleteDevice(deviceId: DeviceId) { - this._devices.delete(deviceId.string) - } - - /** - * Start new service factory function - * @param {Service} ctor - * @param {StageLinq} parent - * @param {DeviceId} deviceId - * @returns {Service} - */ - async startServiceListener>(ctor: { - new(_parent: InstanceType, _serviceHandler?: any, _deviceId?: DeviceId): T; - }, parent?: InstanceType, deviceId?: DeviceId): Promise { - - const service = new ctor(parent, this, deviceId); - await service.listen(); - - let serverName = `${ctor.name}`; - if (deviceId) { - this.parent.devices.addService(deviceId, service) - serverName += deviceId.string; - } - this.setupService(service, deviceId) - - this.parent.addServer(serverName, service.server); - return service; - } - - protected abstract setupService(service: any, deviceId?: DeviceId): void; -} - export abstract class Service extends EventEmitter { public readonly name: string = "Service"; @@ -121,9 +31,7 @@ export abstract class Service extends EventEmitter { protected isBufferedService: boolean = true; protected parent: StageLinq; - protected _handler: ServiceHandler = null; protected timeout: NodeJS.Timer; - private messageBuffer: Buffer = null; /** @@ -132,14 +40,15 @@ export abstract class Service extends EventEmitter { * @param {ServiceHandler} serviceHandler * @param {DeviceId} deviceId */ - constructor(parent: StageLinq, serviceHandler: InstanceType, deviceId?: DeviceId) { + constructor(parent: StageLinq, deviceId?: DeviceId) { super(); this.parent = parent; - this._handler = serviceHandler as ServiceHandler; this.deviceId = deviceId || null; this.device = (deviceId ? this.parent.devices.device(deviceId) : null); + } + /** * Creates a new Net.Server for Service * @returns {Server} @@ -151,13 +60,13 @@ export abstract class Service extends EventEmitter { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) clearTimeout(this.timeout); + this.socket = socket; if (this.name !== "Directory") { - const handler = this._handler as ServiceHandler; - handler.emit('connection', this.name, this.deviceId) + this.emit('connection', this.name, this.deviceId) if (this.deviceId) { - handler.addDevice(this.deviceId, this) + //handler.addDevice(this.deviceId, this) } } @@ -176,7 +85,7 @@ export abstract class Service extends EventEmitter { Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); if (this.deviceId) { Logger.silly(`started timer for ${this.name} for ${this.deviceId.string}`) - this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent, this._handler); + this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent); }; resolve(server); }); @@ -356,7 +265,7 @@ export abstract class Service extends EventEmitter { * @param {StageLinq} parent * @param {ServiceHandler} handler */ - protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: StageLinq, handler: ServiceHandler) { + protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: StageLinq) { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); await server.close(); @@ -364,13 +273,7 @@ export abstract class Service extends EventEmitter { const serverName = `${serviceName}${deviceId.string}`; parent.deleteServer(serverName); - await handler.deleteDevice(deviceId); - assert(!handler.hasDevice(deviceId)); - - const service = parent.services[serviceName] parent.devices.deleteService(deviceId, serviceName); - await service.deleteDevice(deviceId); - assert(!service.hasDevice(deviceId)); } protected abstract parseData(ctx: ReadContext, socket: Socket): ServiceMessage; diff --git a/services/StateMap.ts b/services/StateMap.ts index 36b2e89..0ad84af 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -5,9 +5,10 @@ import { ServiceMessage, StateNames } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; import { Logger } from '../LogEmitter'; -import { Service, ServiceHandler } from '../services'; +import { Service } from '../services'; import { StageLinq } from '../StageLinq'; import * as stagelinqConfig from '../stagelinqConfig.json'; +import EventEmitter = require('events'); export type Player = typeof stagelinqConfig.player; export type PlayerDeck = typeof stagelinqConfig.playerDeck; @@ -59,41 +60,13 @@ export interface StateData { interval?: number; } -export class StateMapHandler extends ServiceHandler { - public readonly name = 'StateMap'; - public deviceTrackRegister: Map = new Map(); - - /** - * Setup Statemap ServiceHandler - * @param {Service} service - * @param {DeviceId} deviceId - */ - public setupService(service: Service, deviceId: DeviceId) { - Logger.debug(`Setting up ${service.name} for ${deviceId.string}`); - const stateMap = service as Service; - this.addDevice(deviceId, service); - - stateMap.on('stateMessage', (data: ServiceMessage) => { - this.emit('stateMessage', data); - }); - - stateMap.on('newDevice', (service: StateMap) => { - Logger.debug(`New StateMap Device ${service.deviceId.string}`) - for (let i = 1; i <= this.parent.devices.device(service.deviceId).deckCount(); i++) { - this.parent.status.addDeck(service, i); - } - this.emit('newDevice', service); - }) - } -} - /** * StateMap Class */ export class StateMap extends Service { public readonly name = "StateMap"; - public readonly handler: StateMapHandler; - private hasReceivedState: boolean = false; + static readonly emitter: EventEmitter = new EventEmitter(); + static #instances: Map = new Map() /** * @constructor @@ -101,9 +74,16 @@ export class StateMap extends Service { * @param {StateMapHandler} serviceHandler * @param {DeviceId} deviceId */ - constructor(parent: StageLinq, serviceHandler: StateMapHandler, deviceId?: DeviceId) { - super(parent, serviceHandler, deviceId) - this.handler = this._handler as StateMapHandler + constructor(parent: StageLinq, deviceId?: DeviceId) { + super(parent, deviceId) + StateMap.#instances.set(this.deviceId.string, this) + this.addListener('newDevice', (service: StateMap) => StateMap.instanceListener('newDevice', service)) + this.addListener('newDevice', (service: StateMap) => this.parent.status.addDecks(service)) + this.addListener('stateMessage', (data: StateData) => StateMap.instanceListener('stateMessage', data)) + } + + private static instanceListener(eventName: string, ...args: any) { + StateMap.emitter.emit(eventName, ...args) } /** @@ -204,13 +184,6 @@ export class StateMap extends Service { if (data?.message?.json) { this.emit('stateMessage', data.message); } - - if (data && data.message.json && !this.hasReceivedState) { - Logger.silent( - `${data.message.deviceId.string} ${data.message.name} => ${data.message.json ? JSON.stringify(data.message.json) : data.message.interval - }`); - this.hasReceivedState = true; - } } /** diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 5851277..8ac41a5 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -1,7 +1,7 @@ import { ReadContext } from '../utils/ReadContext'; import { WriteContext } from '../utils/WriteContext'; -import { Service, ServiceHandler } from './Service'; +import { Service } from './Service'; import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' import { Logger } from '../LogEmitter'; @@ -14,18 +14,18 @@ export interface TimeSyncData { } -export class TimeSynchronizationHandler extends ServiceHandler { - public name: string = 'TimeSync' +// export class TimeSynchronizationHandler extends ServiceHandler { +// public name: string = 'TimeSync' - public setupService(service: TimeSynchronization, deviceId: DeviceId) { - console.log(`Setting up ${service.name} for ${deviceId.string}`); +// public setupService(service: TimeSynchronization, deviceId: DeviceId) { +// console.log(`Setting up ${service.name} for ${deviceId.string}`); - service.on('newDevice', (_service: InstanceType) => { - Logger.debug(`New TimeSync Device ${service.deviceId.string}`) - _service.sendTimeSyncRequest(); - }) - } -} +// service.on('newDevice', (_service: InstanceType) => { +// Logger.debug(`New TimeSync Device ${service.deviceId.string}`) +// _service.sendTimeSyncRequest(); +// }) +// } +// } export class TimeSynchronization extends Service { public readonly name = "TimeSynchronization" diff --git a/status/Status.ts b/status/Status.ts index 2856512..3dc1d33 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -41,6 +41,12 @@ export class Status extends EventEmitter { } } + async addDecks(service: StateMap) { + for (let i = 1; i <= this.parent.devices.device(service.deviceId).deckCount(); i++) { + this.addDeck(service, i); + } + } + private listener(data: StateData, status: Status) { const deck = parseInt(data.name.substring(12, 13)) const property = data.name.split('/').pop() From 77dce038a0e700da8256223a82d99d98accff668 Mon Sep 17 00:00:00 2001 From: honusz Date: Thu, 6 Apr 2023 15:59:57 -0400 Subject: [PATCH 119/146] Further static-ing --- Sources/Sources.ts | 5 +-- StageLinq/index.ts | 74 ++++++++++++++++++++-------------------- cli/index.ts | 55 ++++++++++++----------------- cli/nowPlaying.ts | 15 ++++---- network/Discovery.ts | 38 +++++++++------------ services/BeatInfo.ts | 12 +++---- services/Directory.ts | 42 ++++++++++++----------- services/FileTransfer.ts | 24 ++++++------- services/Service.ts | 64 +++++++++++++--------------------- services/StateMap.ts | 19 ++++++----- services/TimeSync.ts | 26 ++++---------- status/Status.ts | 9 ++--- types/common.ts | 7 ---- types/index.ts | 1 - 14 files changed, 163 insertions(+), 228 deletions(-) delete mode 100644 types/common.ts diff --git a/Sources/Sources.ts b/Sources/Sources.ts index 319e9b5..2924b34 100644 --- a/Sources/Sources.ts +++ b/Sources/Sources.ts @@ -1,7 +1,6 @@ import { EventEmitter } from 'events'; import { Source } from '../types'; import { DeviceId } from '../devices' -import { StageLinq } from '../StageLinq'; import { Logger } from '../LogEmitter'; import * as fs from 'fs'; import { DbConnection } from './DbConnection'; @@ -20,15 +19,13 @@ export declare interface Sources { export class Sources extends EventEmitter { private _sources: Map = new Map(); - public readonly parent: StageLinq; /** * @constructor * @param {StageLinq} parent */ - constructor(parent: StageLinq) { + constructor() { super(); - this.parent = parent; } /** diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 7e31ad4..35aeb39 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -4,13 +4,12 @@ import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions } from '../types'; import { Devices, DeviceId } from '../devices' import { Sources } from '../Sources'; -import * as Services from '../services'; +import { Service, Directory } from '../services'; import { Status } from '../status/Status'; import { AddressInfo, Server } from 'net'; const DEFAULT_OPTIONS: StageLinqOptions = { - maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, downloadDbSources: true, }; @@ -19,18 +18,15 @@ const DEFAULT_OPTIONS: StageLinqOptions = { * Main StageLinq class. */ export class StageLinq extends EventEmitter { + static options: StageLinqOptions; + static readonly devices = new Devices(); + static readonly discovery: Discovery = new Discovery(); + static readonly sources: Sources = new Sources();; + static readonly status: Status = new Status(); + static directory: Directory = null; + static servers: Map = new Map(); - public options: StageLinqOptions; - - public readonly devices = new Devices(); public readonly logger: Logger = Logger.instance; - public readonly discovery: Discovery = new Discovery(this); - - public readonly sources: Sources = null; - public readonly status: Status = null; - - private directory: Services.Directory = null; - private servers: Map = new Map(); /** * Main StageLinq Class @@ -39,34 +35,46 @@ export class StageLinq extends EventEmitter { */ constructor(options?: StageLinqOptions) { super(); - this.options = options || DEFAULT_OPTIONS; - this.sources = new Sources(this); - this.status = new Status(this); + StageLinq.options = options || DEFAULT_OPTIONS; } /** - * + * Service Constructor Factory Function + * @param {Service} Service + * @param {DeviceId} deviceId + * @returns {Promise>} + */ + static async startServiceListener>(ctor: { + new(_deviceId?: DeviceId): T; + }, deviceId?: DeviceId): Promise { + const service = new ctor(deviceId); + await service.listen(); + return service; + } + + /** + * Add a Server to the Server Register * @param {string} serverName * @param {Server} server */ - addServer(serverName: string, server: Server) { - this.servers.set(serverName, server); + static addServer(serverName: string, server: Server) { + StageLinq.servers.set(serverName, server); } /** - * + * Remove a Server from the Server Register * @param {string} serverName */ - deleteServer(serverName: string) { - this.servers.delete(serverName); + static deleteServer(serverName: string) { + StageLinq.servers.delete(serverName); } /** - * + * Get All Servers * @returns {IterableIterator<[string, Server]>} */ - private getServers() { - return this.servers.entries(); + private static getServers() { + return StageLinq.servers.entries(); } /** @@ -74,21 +82,13 @@ export class StageLinq extends EventEmitter { */ async connect() { // Initialize Discovery agent - await this.discovery.listen(this.options.actingAs); + await StageLinq.discovery.listen(StageLinq.options.actingAs); //Directory is required - this.directory = await this.startServiceListener(Services.Directory); + StageLinq.directory = await StageLinq.startServiceListener(Directory); // Announce myself with Directory port - await this.discovery.announce(this.directory.serverInfo.port); - } - - async startServiceListener>(ctor: { - new(parent: InstanceType, _deviceId?: DeviceId): T; - }, deviceId?: DeviceId): Promise { - const service = new ctor(this, deviceId); - await service.listen(); - return service; + await StageLinq.discovery.announce(StageLinq.directory.serverInfo.port); } /** @@ -98,13 +98,13 @@ export class StageLinq extends EventEmitter { async disconnect() { try { Logger.warn('disconnecting'); - const servers = this.getServers(); + const servers = StageLinq.getServers(); for (let [serviceName, server] of servers) { const addressInfo = server.address() as AddressInfo; console.log(`Closing ${serviceName} server port ${addressInfo.port}`); await server.close; } - await this.discovery.unannounce(); + await StageLinq.discovery.unannounce(); } catch (e) { throw new Error(e); } diff --git a/cli/index.ts b/cli/index.ts index 48578c2..df0ff50 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -24,12 +24,12 @@ function progressBar(size: number, bytes: number, total: number): string { return `[${progressArrary.join('')}]` } -async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, trackName: string) { - while (!stageLinq.sources.hasSourceAndDB(sourceName, deviceId)) { +async function getTrackInfo(sourceName: string, deviceId: DeviceId, trackName: string) { + while (!StageLinq.sources.hasSourceAndDB(sourceName, deviceId)) { await sleep(1000); } try { - const source = stageLinq.sources.getSource(sourceName, deviceId); + const source = StageLinq.sources.getSource(sourceName, deviceId); const connection = source.database.local.connection; const result = await connection.getTrackInfo(trackName); return result; @@ -38,13 +38,13 @@ async function getTrackInfo(stageLinq: StageLinq, sourceName: string, deviceId: } } -async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { - while (!stageLinq.sources.hasSource(sourceName, deviceId)) { +async function downloadFile(sourceName: string, deviceId: DeviceId, path: string, dest?: string) { + while (!StageLinq.sources.hasSource(sourceName, deviceId)) { await sleep(250) } try { - const source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.sources.downloadFile(source, path); + const source = StageLinq.sources.getSource(sourceName, deviceId); + const data = await StageLinq.sources.downloadFile(source, path); if (dest && data) { const filePath = `${dest}/${path.split('/').pop()}` fs.writeFileSync(filePath, Buffer.from(data)); @@ -62,7 +62,6 @@ async function main() { const stageLinqOptions: StageLinqOptions = { downloadDbSources: true, - maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ ServiceList.StateMap, @@ -98,28 +97,28 @@ async function main() { // }); - stageLinq.discovery.on('listening', () => { + StageLinq.discovery.on('listening', () => { console.log(`[DISCOVERY] Listening`) }); - stageLinq.discovery.on('announcing', (info) => { + StageLinq.discovery.on('announcing', (info) => { console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) }); - stageLinq.discovery.on('newDiscoveryDevice', (info) => { + StageLinq.discovery.on('newDiscoveryDevice', (info) => { console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`) }); - stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { + StageLinq.discovery.on('updatedDiscoveryDevice', (info) => { console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) }); - stageLinq.devices.on('newDevice', (device) => { + StageLinq.devices.on('newDevice', (device) => { Logger.debug(`[DEVICES] New Device ${device.deviceId.string}`) }); - stageLinq.devices.on('newService', (device, service) => { + StageLinq.devices.on('newService', (device, service) => { console.log(`[DEVICES] New ${service.name} Service on ${device.deviceId.string} port ${service.serverInfo.port}`) }); @@ -130,7 +129,7 @@ async function main() { if (data.json.state) { const deck = parseInt(data.name.substring(12, 13)) await sleep(250); - const track = stageLinq.status.getTrack(data.deviceId, deck) + const track = StageLinq.status.getTrack(data.deviceId, deck) console.log(`Now Playing: `, track) } } @@ -139,13 +138,13 @@ async function main() { if (data.json.state) { const deck = parseInt(data.name.substring(12, 13)) await sleep(250); - const track = stageLinq.status.getTrack(data.deviceId, deck) + const track = StageLinq.status.getTrack(data.deviceId, deck) console.log(`[STATUS] Track Loaded: `, track) - if (stageLinqOptions.services.includes(ServiceList.FileTransfer) && stageLinq.options.downloadDbSources) { - const trackInfo = await getTrackInfo(stageLinq, track.source.name, track.source.location, track.TrackNetworkPath); + if (stageLinqOptions.services.includes(ServiceList.FileTransfer) && StageLinq.options.downloadDbSources) { + const trackInfo = await getTrackInfo(track.source.name, track.source.location, track.TrackNetworkPath); console.log('[STATUS] Track DB Info: ', trackInfo) - downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); + downloadFile(track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } } } @@ -170,9 +169,6 @@ async function main() { if (stageLinqOptions.services.includes(ServiceList.FileTransfer)) { - FileTransfer.emitter.on('newSource', (source) => { - console.warn(`NEW FileTransfer static Source! ${source.name}`) - }) FileTransfer.emitter.on('fileTransferProgress', (source, file, txid, progress) => { console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); @@ -182,15 +178,15 @@ async function main() { console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); - stageLinq.sources.on('newSource', (source: Source) => { + StageLinq.sources.on('newSource', (source: Source) => { console.log(`[SOURCES] Source Available: (${source.name})`); }); - stageLinq.sources.on('dbDownloaded', (source: Source) => { + StageLinq.sources.on('dbDownloaded', (source: Source) => { console.log(`[SOURCES] Database Downloaded: (${source.name})`); }); - stageLinq.sources.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { + StageLinq.sources.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { console.log(`[SOURCES] Source Removed: ${sourceName} on ${deviceId.string}`); }); @@ -230,17 +226,10 @@ async function main() { }; BeatInfo.emitter.on('newDevice', async (beatInfo: BeatInfo) => { - console.log(`[STATICBEATINFO] New Device ${beatInfo.deviceId.string}`) - //beatInfo - //}); - - //stageLinq.beatInfo.on('newDevice', async (beatInfo: BeatInfo) => { - //console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) - + console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) if (beatMethod.useCallback) { beatInfo.startBeatInfo(beatOptions, beatCallback); - console.warn(BeatInfo.getInstances()) } if (beatMethod.useEvent) { diff --git a/cli/nowPlaying.ts b/cli/nowPlaying.ts index 34ac5c0..e0d24c0 100644 --- a/cli/nowPlaying.ts +++ b/cli/nowPlaying.ts @@ -12,7 +12,6 @@ async function main() { const stageLinqOptions: StageLinqOptions = { downloadDbSources: true, - maxRetries: 3, actingAs: ActingAsDevice.NowPlaying, services: [ ServiceList.StateMap, @@ -22,13 +21,13 @@ async function main() { const stageLinq = new StageLinq(stageLinqOptions); - async function downloadFile(stageLinq: StageLinq, sourceName: string, deviceId: DeviceId, path: string, dest?: string) { - while (!stageLinq.sources.hasSource(sourceName, deviceId)) { + async function downloadFile(sourceName: string, deviceId: DeviceId, path: string, dest?: string) { + while (!StageLinq.sources.hasSource(sourceName, deviceId)) { await sleep(250) } try { - const source = stageLinq.sources.getSource(sourceName, deviceId); - const data = await stageLinq.sources.downloadFile(source, path); + const source = StageLinq.sources.getSource(sourceName, deviceId); + const data = await StageLinq.sources.downloadFile(source, path); if (dest && data) { const filePath = `${dest}/${path.split('/').pop()}` fs.writeFileSync(filePath, Buffer.from(data)); @@ -44,10 +43,10 @@ async function main() { if (data.json.state) { const deck = parseInt(data.name.substring(12, 13)) await sleep(250); - const track = stageLinq.status.getTrack(data.deviceId, deck) + const track = StageLinq.status.getTrack(data.deviceId, deck) - if (stageLinq.options.downloadDbSources) { - downloadFile(stageLinq, track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); + if (StageLinq.options.downloadDbSources) { + downloadFile(track.source.name, track.source.location, track.source.path, Path.resolve(os.tmpdir())); } console.log(`Now Playing: `, track) //Or however you consume it diff --git a/network/Discovery.ts b/network/Discovery.ts index c31009e..a8b5aa3 100644 --- a/network/Discovery.ts +++ b/network/Discovery.ts @@ -1,18 +1,18 @@ -import { ConnectionInfo, DiscoveryMessage, DiscoveryMessageOptions, Action, IpAddress, Units } from '../types'; -import { DeviceId } from '../devices' -import { Socket, RemoteInfo } from 'dgram'; -import * as UDPSocket from 'dgram'; -import { LISTEN_PORT, DISCOVERY_MESSAGE_MARKER, ANNOUNCEMENT_INTERVAL } from '../types/common'; +import { EventEmitter } from 'events'; +import { Logger } from '../LogEmitter'; import { strict as assert } from 'assert'; +import { ConnectionInfo, DiscoveryMessage, DiscoveryMessageOptions, Action, IpAddress, Units } from '../types'; import { sleep, WriteContext, ReadContext } from '../utils'; -import { networkInterfaces } from 'os'; +import { DeviceId } from '../devices' +import { Socket, RemoteInfo, createSocket } from 'dgram'; import { subnet, SubnetInfo } from 'ip'; -import { Logger } from '../LogEmitter'; +import { networkInterfaces } from 'os'; import { StageLinq } from '../StageLinq'; -import EventEmitter = require('events'); - +const ANNOUNCEMENT_INTERVAL = 1000; +const LISTEN_PORT = 51337; +const DISCOVERY_MESSAGE_MARKER = 'airD'; type DeviceDiscoveryCallback = (info: ConnectionInfo) => void; @@ -24,27 +24,21 @@ export declare interface Discovery { } export class Discovery extends EventEmitter { - public parent: InstanceType; - private socket: Socket; private address: IpAddress; private broadcastAddress: IpAddress; private options: DiscoveryMessageOptions = null; private peers: Map = new Map(); private deviceId: DeviceId = null - - private announceTimer: NodeJS.Timer; private hasLooped: boolean = false; /** * Discovery Class * @constructor - * @param {StageLinq} parent StageLinq Instance */ - constructor(parent: InstanceType) { + constructor() { super(); - this.parent = parent; } /** @@ -83,8 +77,8 @@ export class Discovery extends EventEmitter { this.emit('listening'); await this.listenForDevices(async (connectionInfo: ConnectionInfo) => { - if (Units[connectionInfo.software.name] && !this.parent.devices.hasDevice(connectionInfo.deviceId)) { - const device = this.parent.devices.addDevice(connectionInfo); + if (Units[connectionInfo.software.name] && !StageLinq.devices.hasDevice(connectionInfo.deviceId)) { + const device = StageLinq.devices.addDevice(connectionInfo); this.peers.set(device.deviceId.string, connectionInfo); Logger.silly(`Discovery Message From ${connectionInfo.source} ${connectionInfo.software.name} ${device.deviceId.string}`) this.emit('newDiscoveryDevice', connectionInfo); @@ -92,9 +86,9 @@ export class Discovery extends EventEmitter { this.hasLooped = true; } - if (Units[connectionInfo.software.name] && this.parent.devices.hasDevice(connectionInfo.deviceId) && this.parent.devices.hasNewInfo(connectionInfo.deviceId, connectionInfo)) { + if (Units[connectionInfo.software.name] && StageLinq.devices.hasDevice(connectionInfo.deviceId) && StageLinq.devices.hasNewInfo(connectionInfo.deviceId, connectionInfo)) { this.peers.set(connectionInfo.deviceId.string, connectionInfo); - this.parent.devices.updateDeviceInfo(connectionInfo.deviceId, connectionInfo); + StageLinq.devices.updateDeviceInfo(connectionInfo.deviceId, connectionInfo); Logger.silly(`Updated port for ${connectionInfo.deviceId.string}`); this.emit('updatedDiscoveryDevice', connectionInfo); } @@ -110,7 +104,7 @@ export class Discovery extends EventEmitter { this.socket.setBroadcast(true); const discoveryMessage = this.createDiscoveryMessage(Action.Login, this.options, port); while (!this.hasLooped) { - await sleep(500); + await sleep(250); } const ips = this.findBroadcastIPs() const address = ips.filter(ip => { @@ -160,7 +154,7 @@ export class Discovery extends EventEmitter { */ private async listenForDevices(callback: DeviceDiscoveryCallback) { - this.socket = UDPSocket.createSocket('udp4'); + this.socket = createSocket('udp4'); this.socket.on('message', (announcement: Uint8Array, remote: RemoteInfo) => { const ctx = new ReadContext(announcement.buffer, false); const result = this.readConnectionInfo(ctx, remote.address); diff --git a/services/BeatInfo.ts b/services/BeatInfo.ts index 770832a..a22230d 100644 --- a/services/BeatInfo.ts +++ b/services/BeatInfo.ts @@ -1,11 +1,9 @@ import { strict as assert } from 'assert'; -import { ReadContext } from '../utils/ReadContext'; -import { WriteContext } from '../utils/WriteContext'; +import { ReadContext, WriteContext } from '../utils'; import { Service } from './Service'; import type { ServiceMessage } from '../types'; import { DeviceId } from '../devices' -import { StageLinq } from '../StageLinq'; -import EventEmitter = require('events'); +import { EventEmitter } from 'events'; type BeatCallback = (n: BeatData) => void; @@ -45,13 +43,11 @@ export class BeatInfo extends Service { /** * @constructor - * @param {StageLinq} parent - * @param {BeatInfoHandler} serviceHandler * @param {DeviceId} [deviceId] */ - constructor(parent: StageLinq, deviceId: DeviceId) { - super(parent, deviceId) + constructor(deviceId: DeviceId) { + super(deviceId) BeatInfo.#instances.set(this.deviceId.string, this) this.addListener('connection', () => BeatInfo.instanceListener('newDevice', this)) this.addListener('beatMessage', (data: BeatData) => BeatInfo.instanceListener('beatMessage', data)) diff --git a/services/Directory.ts b/services/Directory.ts index e380863..1d2be9a 100644 --- a/services/Directory.ts +++ b/services/Directory.ts @@ -1,16 +1,18 @@ +import { strict as assert } from 'assert'; import { Logger } from '../LogEmitter'; -import { ReadContext } from '../utils/ReadContext'; -import { Service, } from './Service'; +import { ReadContext, WriteContext, sleep } from '../utils'; import { ServiceMessage, MessageId, Units } from '../types'; import { DeviceId } from '../devices' -import { sleep } from '../utils/sleep'; import { Socket } from 'net'; -import { strict as assert } from 'assert'; -import { WriteContext } from '../utils/WriteContext'; -import { FileTransfer } from './FileTransfer'; -import { StateMap } from './StateMap'; -import { BeatInfo } from './BeatInfo'; -//import { TimeSynchronization } from './TimeSync'; +import { StageLinq } from '../StageLinq'; +import { + Service, + StateMap, + FileTransfer, + BeatInfo, + TimeSynchronization, +} from '../services' + export interface DirectoryData { deviceId: string; @@ -35,7 +37,7 @@ export class Directory extends Service { } this.deviceId = new DeviceId(token); - const deviceInfo = this.parent.discovery.getConnectionInfo(this.deviceId); + const deviceInfo = StageLinq.discovery.getConnectionInfo(this.deviceId); assert(this.socket) try { @@ -100,30 +102,30 @@ export class Directory extends Service { private async sendServiceAnnouncement(deviceId: DeviceId, socket: Socket): Promise { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.ServicesRequest); - ctx.write(this.parent.options.actingAs.deviceId.array); + ctx.write(StageLinq.options.actingAs.deviceId.array); let services: InstanceType[] = [] - const device = await this.parent.devices.getDevice(deviceId); - for (const serviceName of this.parent.options.services) { + const device = await StageLinq.devices.getDevice(deviceId); + for (const serviceName of StageLinq.options.services) { if (device && !!Units[device.info?.software?.name]) { switch (serviceName) { case 'FileTransfer': { - const fileTransfer = await this.parent.startServiceListener(FileTransfer, deviceId) + const fileTransfer = await StageLinq.startServiceListener(FileTransfer, deviceId) services.push(fileTransfer); break; } case 'StateMap': { - const stateMap = await this.parent.startServiceListener(StateMap, deviceId) + const stateMap = await StageLinq.startServiceListener(StateMap, deviceId) services.push(stateMap); break; } case 'BeatInfo': { - const beatInfo = await this.parent.startServiceListener(BeatInfo, deviceId) + const beatInfo = await StageLinq.startServiceListener(BeatInfo, deviceId) services.push(beatInfo); break; } case 'TimeSynchronization': { - //const timeSync = await this.parent.services[serviceName].startServiceListener(TimeSynchronization, this.parent, deviceId); - //services.push(timeSync); + const timeSync = await StageLinq.startServiceListener(TimeSynchronization, deviceId) + services.push(timeSync); break; } default: @@ -134,7 +136,7 @@ export class Directory extends Service { for (const service of services) { ctx.writeUInt32(MessageId.ServicesAnnouncement); - ctx.write(this.parent.options.actingAs.deviceId.array); + ctx.write(StageLinq.options.actingAs.deviceId.array); ctx.writeNetworkStringUTF16(service.name); ctx.writeUInt16(service.serverInfo.port); Logger.debug(`${deviceId.string} Created new ${service.name} on port ${service.serverInfo.port}`); @@ -153,7 +155,7 @@ export class Directory extends Service { const ctx = new WriteContext(); ctx.writeUInt32(MessageId.TimeStamp); ctx.write(token); - ctx.write(this.parent.options.actingAs.deviceId.array); + ctx.write(StageLinq.options.actingAs.deviceId.array); ctx.writeUInt64(0n); const message = ctx.getBuffer(); assert(message.length === 44); diff --git a/services/FileTransfer.ts b/services/FileTransfer.ts index 9061386..c10c2bc 100644 --- a/services/FileTransfer.ts +++ b/services/FileTransfer.ts @@ -1,16 +1,14 @@ -import { DOWNLOAD_TIMEOUT } from '../types'; +import { EventEmitter } from 'events'; +import { strict as assert } from 'assert'; import { Logger } from '../LogEmitter'; -import { ReadContext } from '../utils/ReadContext'; +import { ReadContext, WriteContext, sleep } from '../utils'; import { Service } from './Service'; -import { sleep } from '../utils/sleep'; -import { strict as assert } from 'assert'; -import { WriteContext } from '../utils/WriteContext'; import type { ServiceMessage, Source } from '../types'; import { DeviceId } from '../devices' import { StageLinq } from '../StageLinq'; -import EventEmitter = require('events'); +const DOWNLOAD_TIMEOUT = 60000; // in ms const MAGIC_MARKER = 'fltx'; export const CHUNK_SIZE = 4096; @@ -57,8 +55,8 @@ export class FileTransfer extends Service { #txid: number = 1; #isAvailable: boolean = true; - constructor(parent: StageLinq, deviceId?: DeviceId) { - super(parent, deviceId) + constructor(deviceId?: DeviceId) { + super(deviceId) FileTransfer.#instances.set(this.deviceId.string, this) this.addListener('newDevice', (service: FileTransfer) => FileTransfer.fileTransferListener('newDevice', service)) this.addListener('newSource', (source: Source) => FileTransfer.fileTransferListener('newSource', source)) @@ -334,14 +332,14 @@ export class FileTransfer extends Service { * @param {string[]} sources an array of current sources from device */ async updateSources(sources: string[]) { - const currentSources = this.parent.sources.getSources(this.deviceId); + const currentSources = StageLinq.sources.getSources(this.deviceId); const currentSourceNames = currentSources.map(source => source.name); //When a source is disconnected, devices send a new SourceLocations message that excludes the removed source const markedForDelete = currentSources.filter(item => !sources.includes(item.name)); const newSources = sources.filter(source => !currentSourceNames.includes(source)); for (const source of markedForDelete) { - this.parent.sources.deleteSource(source.name, source.deviceId) + StageLinq.sources.deleteSource(source.name, source.deviceId) } @@ -378,12 +376,12 @@ export class FileTransfer extends Service { } } } - this.parent.sources.setSource(thisSource); + StageLinq.sources.setSource(thisSource); this.emit('newSource', thisSource) result.push(thisSource); - if (this.parent.options.downloadDbSources) { - this.parent.sources.downloadDb(thisSource); + if (StageLinq.options.downloadDbSources) { + StageLinq.sources.downloadDb(thisSource); } break; } diff --git a/services/Service.ts b/services/Service.ts index 9261631..b1c8a12 100644 --- a/services/Service.ts +++ b/services/Service.ts @@ -1,16 +1,15 @@ import { EventEmitter } from 'events'; -import { Logger } from '../LogEmitter'; -import { MessageId, MESSAGE_TIMEOUT } from '../types'; -import { DeviceId, Device } from '../devices' -import { ReadContext } from '../utils/ReadContext'; import { strict as assert } from 'assert'; -import { WriteContext } from '../utils/WriteContext'; -import { Server, Socket, AddressInfo } from 'net'; -import * as net from 'net'; -import type { ServiceMessage } from '../types'; +import { Logger } from '../LogEmitter'; +import { MessageId, ServiceMessage } from '../types'; +import { DeviceId, Device } from '../devices'; +import { ReadContext, WriteContext } from '../utils'; +import { Server, Socket, AddressInfo, createServer } from 'net'; import { StageLinq } from '../StageLinq'; +const MESSAGE_TIMEOUT = 3000; // in ms + export declare type ServiceData = { name?: string; socket?: Socket; @@ -18,57 +17,43 @@ export declare type ServiceData = { service?: InstanceType; } - export abstract class Service extends EventEmitter { + static instances: Map> = new Map(); public readonly name: string = "Service"; public readonly device: Device; + public deviceId: DeviceId = null; public server: Server = null; public serverInfo: AddressInfo; - public serverStatus: boolean = false; public socket: Socket = null; - static instances: Map> = new Map(); protected isBufferedService: boolean = true; - protected parent: StageLinq; protected timeout: NodeJS.Timer; private messageBuffer: Buffer = null; /** * Service Abstract Class - * @param {StageLinq} parent - * @param {ServiceHandler} serviceHandler - * @param {DeviceId} deviceId + * @param {DeviceId} [deviceId] */ - constructor(parent: StageLinq, deviceId?: DeviceId) { + constructor(deviceId?: DeviceId) { super(); - this.parent = parent; this.deviceId = deviceId || null; - this.device = (deviceId ? this.parent.devices.device(deviceId) : null); - + this.device = (deviceId ? StageLinq.devices.device(deviceId) : null); } - /** - * Creates a new Net.Server for Service + * Creates a new Server for Service * @returns {Server} */ - async createServer(): Promise { + private async startServer(): Promise { return await new Promise((resolve, reject) => { - const server = net.createServer((socket) => { - + const server = createServer((socket) => { Logger.debug(`[${this.name}] connection from ${socket.remoteAddress}:${socket.remotePort}`) - clearTimeout(this.timeout); + clearTimeout(this.timeout); this.socket = socket; - - if (this.name !== "Directory") { - this.emit('connection', this.name, this.deviceId) - if (this.deviceId) { - //handler.addDevice(this.deviceId, this) - } - } + if (this.name !== "Directory") this.emit('connection', this.name, this.deviceId) socket.on('error', (err) => { reject(err); @@ -79,13 +64,12 @@ export abstract class Service extends EventEmitter { }); }).listen(0, '0.0.0.0', () => { - this.serverStatus = true; - this.serverInfo = server.address() as net.AddressInfo; this.server = server; + this.serverInfo = server.address() as AddressInfo; Logger.silly(`opened ${this.name} server on ${this.serverInfo.port}`); if (this.deviceId) { Logger.silly(`started timer for ${this.name} for ${this.deviceId.string}`) - this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server, this.parent); + this.timeout = setTimeout(this.closeService, 5000, this.deviceId, this.name, this.server); }; resolve(server); }); @@ -97,8 +81,8 @@ export abstract class Service extends EventEmitter { * @returns {Promise} */ async listen(): Promise { - const server = await this.createServer(); - return server.address() as net.AddressInfo; + const server = await this.startServer(); + return server.address() as AddressInfo; } /** @@ -265,15 +249,15 @@ export abstract class Service extends EventEmitter { * @param {StageLinq} parent * @param {ServiceHandler} handler */ - protected async closeService(deviceId: DeviceId, serviceName: string, server: Server, parent: StageLinq) { + protected async closeService(deviceId: DeviceId, serviceName: string, server: Server) { Logger.debug(`closing ${serviceName} server for ${deviceId.string} due to timeout`); await server.close(); const serverName = `${serviceName}${deviceId.string}`; - parent.deleteServer(serverName); + StageLinq.deleteServer(serverName); - parent.devices.deleteService(deviceId, serviceName); + StageLinq.devices.deleteService(deviceId, serviceName); } protected abstract parseData(ctx: ReadContext, socket: Socket): ServiceMessage; diff --git a/services/StateMap.ts b/services/StateMap.ts index 0ad84af..98fe9c8 100644 --- a/services/StateMap.ts +++ b/services/StateMap.ts @@ -1,20 +1,22 @@ +import { EventEmitter } from 'events'; +import { Logger } from '../LogEmitter'; import { strict as assert } from 'assert'; -import { ReadContext } from '../utils/ReadContext'; -import { WriteContext } from '../utils/WriteContext'; +import { ReadContext, WriteContext } from '../utils'; import { ServiceMessage, StateNames } from '../types'; import { DeviceId } from '../devices' import { Socket } from 'net'; -import { Logger } from '../LogEmitter'; import { Service } from '../services'; import { StageLinq } from '../StageLinq'; import * as stagelinqConfig from '../stagelinqConfig.json'; -import EventEmitter = require('events'); + export type Player = typeof stagelinqConfig.player; export type PlayerDeck = typeof stagelinqConfig.playerDeck; export type Mixer = typeof stagelinqConfig.mixer; const MAGIC_MARKER = 'smaa'; +const MAGIC_MARKER_INTERVAL = 0x000007d2; +const MAGIC_MARKER_JSON = 0x00000000; enum Action { request = 0x000007d2, @@ -27,8 +29,7 @@ enum Result { inquire = 0x00000064 } -const MAGIC_MARKER_INTERVAL = 0x000007d2; -const MAGIC_MARKER_JSON = 0x00000000; + // function stateReducer(obj: any, prefix: string): string[] { // const entries = Object.entries(obj) @@ -74,11 +75,11 @@ export class StateMap extends Service { * @param {StateMapHandler} serviceHandler * @param {DeviceId} deviceId */ - constructor(parent: StageLinq, deviceId?: DeviceId) { - super(parent, deviceId) + constructor(deviceId?: DeviceId) { + super(deviceId) StateMap.#instances.set(this.deviceId.string, this) this.addListener('newDevice', (service: StateMap) => StateMap.instanceListener('newDevice', service)) - this.addListener('newDevice', (service: StateMap) => this.parent.status.addDecks(service)) + this.addListener('newDevice', (service: StateMap) => StageLinq.status.addDecks(service)) this.addListener('stateMessage', (data: StateData) => StateMap.instanceListener('stateMessage', data)) } diff --git a/services/TimeSync.ts b/services/TimeSync.ts index 8ac41a5..58c7397 100644 --- a/services/TimeSync.ts +++ b/services/TimeSync.ts @@ -1,11 +1,11 @@ -import { ReadContext } from '../utils/ReadContext'; -import { WriteContext } from '../utils/WriteContext'; -import { Service } from './Service'; +import { Logger } from '../LogEmitter'; +import { performance } from 'perf_hooks'; +import { ReadContext, WriteContext } from '../utils'; import { ServiceMessage } from '../types'; import { DeviceId } from '../devices' -import { Logger } from '../LogEmitter'; -const { performance } = require('perf_hooks'); +import { Service } from './Service'; +import { StageLinq } from '../StageLinq'; export interface TimeSyncData { @@ -13,20 +13,6 @@ export interface TimeSyncData { timestamp: bigint, } - -// export class TimeSynchronizationHandler extends ServiceHandler { -// public name: string = 'TimeSync' - -// public setupService(service: TimeSynchronization, deviceId: DeviceId) { -// console.log(`Setting up ${service.name} for ${deviceId.string}`); - -// service.on('newDevice', (_service: InstanceType) => { -// Logger.debug(`New TimeSync Device ${service.deviceId.string}`) -// _service.sendTimeSyncRequest(); -// }) -// } -// } - export class TimeSynchronization extends Service { public readonly name = "TimeSynchronization" protected readonly isBufferedService: boolean = false; @@ -38,7 +24,7 @@ export class TimeSynchronization extends Service { public async sendTimeSyncRequest() { const ctx = new WriteContext(); ctx.write(new Uint8Array([0x0, 0x0, 0x0, 0x0])); - ctx.write(this.parent.options.actingAs.deviceId.array); + ctx.write(StageLinq.options.actingAs.deviceId.array); ctx.write(new Uint8Array([0x0])); ctx.writeFixedSizedString('TimeSynchronization'); await this.write(ctx); diff --git a/status/Status.ts b/status/Status.ts index 3dc1d33..ff0f0b4 100644 --- a/status/Status.ts +++ b/status/Status.ts @@ -1,4 +1,4 @@ -import EventEmitter = require("events"); +import { EventEmitter } from 'events'; import { StageLinq } from '../StageLinq'; import { StateData, StateMap } from '../services'; import { Track } from '../types'; @@ -6,16 +6,13 @@ import { DeviceId } from '../devices' export class Status extends EventEmitter { - readonly parent: InstanceType; private tracks: Map = new Map(); /** * @constructor - * @param {StageLinq} parent */ - constructor(parent: InstanceType) { + constructor() { super(); - this.parent = parent; } /** @@ -42,7 +39,7 @@ export class Status extends EventEmitter { } async addDecks(service: StateMap) { - for (let i = 1; i <= this.parent.devices.device(service.deviceId).deckCount(); i++) { + for (let i = 1; i <= StageLinq.devices.device(service.deviceId).deckCount(); i++) { this.addDeck(service, i); } } diff --git a/types/common.ts b/types/common.ts deleted file mode 100644 index ddce992..0000000 --- a/types/common.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const ANNOUNCEMENT_INTERVAL = 1000; // in ms -export const LISTEN_PORT = 51337; -export const LISTEN_TIMEOUT = 5000; // in ms -export const MESSAGE_TIMEOUT = 3000; // in ms -export const CONNECT_TIMEOUT = 5000; // in ms -export const DOWNLOAD_TIMEOUT = 60000; // in ms -export const DISCOVERY_MESSAGE_MARKER = 'airD'; \ No newline at end of file diff --git a/types/index.ts b/types/index.ts index c4a6c9f..3e3f633 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,4 +1,3 @@ -export * from './common'; export * from './models'; export * from './messages'; export * from './options'; From 3ac68be5d9b1d64ae9fe5b88045ed69b9079dc21 Mon Sep 17 00:00:00 2001 From: honusz Date: Sat, 8 Apr 2023 16:31:14 -0400 Subject: [PATCH 120/146] update docs --- README.md | 37 +- StageLinq/index.ts | 6 +- devices/Devices.ts | 10 +- docs/assets/highlight.css | 24 +- docs/assets/search.js | 2 +- docs/classes/BeatInfo.html | 325 +++--- docs/classes/BeatInfoHandler.html | 1020 ----------------- docs/classes/Context.html | 24 +- docs/classes/Databases.html | 812 ------------- docs/classes/DbConnection.html | 20 +- docs/classes/Device.html | 724 +----------- docs/classes/DeviceId.html | 12 +- docs/classes/Devices.html | 64 +- docs/classes/Directory.html | 226 ++-- docs/classes/DirectoryHandler.html | 944 --------------- docs/classes/Discovery.html | 108 +- docs/classes/FileTransfer.html | 390 +++---- docs/classes/FileTransferHandler.html | 946 --------------- docs/classes/ReadContext.html | 52 +- docs/classes/Service.html | 232 ++-- docs/classes/ServiceHandler.html | 960 ---------------- docs/classes/Sources.html | 149 ++- docs/classes/StageLinq.html | 854 ++------------ docs/classes/StateMap.html | 273 ++--- docs/classes/StateMapHandler.html | 955 --------------- docs/classes/TimeSynchronization.html | 238 ++-- docs/classes/TimeSynchronizationHandler.html | 946 --------------- docs/classes/{TrackData.html => Track.html} | 120 +- docs/classes/WriteContext.html | 48 +- docs/enums/Action.html | 71 -- docs/enums/MessageId.html | 78 -- docs/enums/ServiceList.html | 12 +- docs/functions/getTempFilePath.html | 32 +- docs/functions/sleep.html | 32 +- docs/index.html | 50 +- docs/interfaces/BeatData.html | 12 +- docs/interfaces/ConnectionInfo.html | 18 +- docs/interfaces/DirectoryData.html | 4 +- docs/interfaces/DiscoveryMessage.html | 12 +- docs/interfaces/DiscoveryMessageOptions.html | 28 +- docs/interfaces/FileTransferData.html | 16 +- docs/interfaces/FileTransferProgress.html | 10 +- docs/interfaces/ServiceHandlers.html | 112 -- docs/interfaces/ServiceMessage.html | 6 +- docs/interfaces/Source.html | 24 +- docs/interfaces/StageLinqOptions.html | 12 +- docs/interfaces/StateData.html | 12 +- docs/interfaces/TimeSyncData.html | 6 +- .../{Track.html => TrackDBEntry.html} | 302 ++--- docs/modules.html | 56 +- docs/types/IpAddress.html | 32 +- docs/types/IpAddressPort.html | 32 +- docs/types/Mixer.html | 106 -- docs/types/Player.html | 106 -- docs/types/PlayerDeck.html | 106 -- docs/types/ServiceData.html | 117 -- docs/variables/ANNOUNCEMENT_INTERVAL.html | 106 -- docs/variables/ActingAsDevice.html | 32 +- docs/variables/CHUNK_SIZE.html | 106 -- docs/variables/CONNECT_TIMEOUT.html | 106 -- docs/variables/DISCOVERY_MESSAGE_MARKER.html | 106 -- docs/variables/DOWNLOAD_TIMEOUT.html | 106 -- docs/variables/LISTEN_PORT.html | 106 -- docs/variables/LISTEN_TIMEOUT.html | 106 -- docs/variables/MESSAGE_TIMEOUT.html | 106 -- docs/variables/StateNames.html | 32 +- docs/variables/Units.html | 32 +- network/Discovery.ts | 7 +- services/Directory.ts | 8 +- services/FileTransfer.ts | 11 +- services/Service.ts | 31 +- services/StateMap.ts | 9 +- types/messages.ts | 10 - types/models/Source.ts | 2 +- 74 files changed, 1543 insertions(+), 11404 deletions(-) delete mode 100644 docs/classes/BeatInfoHandler.html delete mode 100644 docs/classes/Databases.html delete mode 100644 docs/classes/DirectoryHandler.html delete mode 100644 docs/classes/FileTransferHandler.html delete mode 100644 docs/classes/ServiceHandler.html delete mode 100644 docs/classes/StateMapHandler.html delete mode 100644 docs/classes/TimeSynchronizationHandler.html rename docs/classes/{TrackData.html => Track.html} (68%) delete mode 100644 docs/enums/Action.html delete mode 100644 docs/enums/MessageId.html delete mode 100644 docs/interfaces/ServiceHandlers.html rename docs/interfaces/{Track.html => TrackDBEntry.html} (67%) delete mode 100644 docs/types/Mixer.html delete mode 100644 docs/types/Player.html delete mode 100644 docs/types/PlayerDeck.html delete mode 100644 docs/types/ServiceData.html delete mode 100644 docs/variables/ANNOUNCEMENT_INTERVAL.html delete mode 100644 docs/variables/CHUNK_SIZE.html delete mode 100644 docs/variables/CONNECT_TIMEOUT.html delete mode 100644 docs/variables/DISCOVERY_MESSAGE_MARKER.html delete mode 100644 docs/variables/DOWNLOAD_TIMEOUT.html delete mode 100644 docs/variables/LISTEN_PORT.html delete mode 100644 docs/variables/LISTEN_TIMEOUT.html delete mode 100644 docs/variables/MESSAGE_TIMEOUT.html diff --git a/README.md b/README.md index 0f5dc94..d782a15 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ We can choose which services to implement by including them in the `StageLinqOpt ```ts const stageLinqOptions: StageLinqOptions = { downloadDbSources: true, - maxRetries: 3, actingAs: ActingAsDevice.StageLinqJS, services: [ ServiceList.StateMap, @@ -63,19 +62,19 @@ await stageLinq.connect(); Discovery emits a number of messages which may be helpful when debugging. ```ts -stageLinq.discovery.on('listening', () => { +StageLinq.discovery.on('listening', () => { console.log(`[DISCOVERY] Listening`) }); -stageLinq.discovery.on('announcing', (info) => { +StageLinq.discovery.on('announcing', (info) => { console.log(`[DISCOVERY] Broadcasting Announce ${info.deviceId.string} Port ${info.port} ${info.source} ${info.software.name}:${info.software.version}`) }); -stageLinq.discovery.on('newDiscoveryDevice', (info) => { +StageLinq.discovery.on('newDiscoveryDevice', (info) => { console.log(`[DISCOVERY] New Device ${info.deviceId.string} ${info.source} ${info.software.name} ${info.software.version}`) }); -stageLinq.discovery.on('updatedDiscoveryDevice', (info) => { +StageLinq.discovery.on('updatedDiscoveryDevice', (info) => { console.log(`[DISCOVERY] Updated Device ${info.deviceId.string} Port:${info.port} ${info.source} ${info.software.name} ${info.software.version}`) }); ``` @@ -112,15 +111,14 @@ public getDevices(): ConnectionInfo[] { - ## StateMap ```ts -stageLinq.stateMap.on('newDevice', (service: StateMapDevice) => { +StateMap.emitter.on('newDevice', (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); service.subscribe(); }); -stageLinq.stateMap.on('stateMessage', async (data: StateData) => { +StateMap.emitter.on('stateMessage', async (data: StateData) => { console.log(`[STATEMAP] ${data.deviceId.string} ${data.name} => ${JSON.stringify(data.json)}`); }); ``` @@ -151,39 +149,38 @@ async function songLoaded(data: StateData) { } } -stageLinq.stateMap.on('newDevice', async (service: StateMapDevice) => { +StateMap.emitter,on('newDevice', async (service: StateMapDevice) => { console.log(`[STATEMAP] Subscribing to States on ${service.deviceId.string}`); - const info = stageLinq.devices.device(service.deviceId).info + const info = StageLinq.devices.device(service.deviceId).info for (let i = 1; i <= info.unit.decks; i++) { service.addListener(`/Engine/Deck${i}/DeckIsMaster`, deckIsMaster); service.addListener(`/Engine/Deck${i}/Track/SongLoaded`, songLoaded); } - service.subscribe(); }); ``` -## FileTransfer & Databases +## FileTransfer & Sources ```ts -stageLinq.fileTransfer.on('fileTransferProgress', (source, file, txid, progress) => { +FileTransfer.emitter.on('fileTransferProgress', (source, file, txid, progress) => { console.log(`[FILETRANSFER] ${source.name} id:{${txid}} Reading ${file}: ${progressBar(10, progress.bytesDownloaded, progress.total)} (${Math.ceil(progress.percentComplete)}%)`); }); -stageLinq.fileTransfer.on('fileTransferComplete', (source, file, txid) => { +FileTransfer.emitter.on('fileTransferComplete', (source, file, txid) => { console.log(`[FILETRANSFER] Complete ${source.name} id:{${txid}} ${file}`); }); -stageLinq.fileTransfer.on('newSource', (source: Source) => { +StageLing.sources.on('newSource', (source: Source) => { console.log(`[FILETRANSFER] Source Available: (${source.name})`); }); -stageLinq.fileTransfer.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { +StageLing.sources.on('sourceRemoved', (sourceName: string, deviceId: DeviceId) => { console.log(`[FILETRANSFER] Source Removed: ${sourceName} on ${deviceId.string}`); }); -stageLinq.databases.on('dbDownloaded', (source: Source) => { +StageLing.sources.on('dbDownloaded', (source: Source) => { console.log(`[FILETRANSFER] Database Downloaded: (${source.name})`); }); ``` @@ -221,17 +218,16 @@ const beatMethod = { }; -stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { +BeatInfo.emitter.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { console.log(`[BEATINFO] New Device ${beatInfo.deviceId.string}`) - if (beatMethod.useCallback) { beatInfo.startBeatInfo(beatOptions, beatCallback); } if (beatMethod.useEvent) { beatInfo.startBeatInfo(beatOptions); - stageLinq.beatInfo.on('beatMsg', (bd) => { + BeatInfo.emitter.on('beatMsg', (bd) => { if (bd.message) { beatCallback(bd); } @@ -248,7 +244,6 @@ stageLinq.beatInfo.on('newBeatInfoDevice', async (beatInfo: BeatInfo) => { setTimeout(beatFunc, 4000, beatInfo) } - }) ``` diff --git a/StageLinq/index.ts b/StageLinq/index.ts index 35aeb39..5b8a991 100644 --- a/StageLinq/index.ts +++ b/StageLinq/index.ts @@ -1,5 +1,4 @@ import { Discovery } from '../network'; -import { EventEmitter } from 'events'; import { Logger } from '../LogEmitter'; import { ActingAsDevice, StageLinqOptions } from '../types'; import { Devices, DeviceId } from '../devices' @@ -17,7 +16,7 @@ const DEFAULT_OPTIONS: StageLinqOptions = { /** * Main StageLinq class. */ -export class StageLinq extends EventEmitter { +export class StageLinq { static options: StageLinqOptions; static readonly devices = new Devices(); static readonly discovery: Discovery = new Discovery(); @@ -34,7 +33,6 @@ export class StageLinq extends EventEmitter { * @param {StageLinqOptions} [options] */ constructor(options?: StageLinqOptions) { - super(); StageLinq.options = options || DEFAULT_OPTIONS; } @@ -48,7 +46,7 @@ export class StageLinq extends EventEmitter { new(_deviceId?: DeviceId): T; }, deviceId?: DeviceId): Promise { const service = new ctor(deviceId); - await service.listen(); + await service.start(); return service; } diff --git a/devices/Devices.ts b/devices/Devices.ts index 4606837..e353771 100644 --- a/devices/Devices.ts +++ b/devices/Devices.ts @@ -19,7 +19,7 @@ export class Devices extends EventEmitter { * @returns {Device} */ addDevice(info: ConnectionInfo): Device { - const device = new Device(info, this); + const device = new Device(info); this.#devices.set(device.deviceId.string, device) this.emit('newDevice', device) return device @@ -98,8 +98,7 @@ export class Devices extends EventEmitter { } -export class Device extends EventEmitter { - readonly parent: Devices; +export class Device { readonly deviceId: DeviceId; info: ConnectionInfo; private services: Map> = new Map(); @@ -107,12 +106,9 @@ export class Device extends EventEmitter { /** * @constructor * @param {connectionInfo} info - * @param {Devices} parent */ - constructor(info: ConnectionInfo, parent: Devices) { - super(); + constructor(info: ConnectionInfo) { this.deviceId = info.deviceId; - this.parent = parent; this.info = info; } diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index 6b99fd0..0932b24 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -9,18 +9,18 @@ --dark-hl-3: #4EC9B0; --light-hl-4: #001080; --dark-hl-4: #9CDCFE; - --light-hl-5: #098658; - --dark-hl-5: #B5CEA8; - --light-hl-6: #795E26; - --dark-hl-6: #DCDCAA; - --light-hl-7: #AF00DB; - --dark-hl-7: #C586C0; - --light-hl-8: #A31515; - --dark-hl-8: #CE9178; - --light-hl-9: #000000FF; - --dark-hl-9: #D4D4D4; - --light-hl-10: #008000; - --dark-hl-10: #6A9955; + --light-hl-5: #795E26; + --dark-hl-5: #DCDCAA; + --light-hl-6: #AF00DB; + --dark-hl-6: #C586C0; + --light-hl-7: #A31515; + --dark-hl-7: #CE9178; + --light-hl-8: #000000FF; + --dark-hl-8: #D4D4D4; + --light-hl-9: #008000; + --dark-hl-9: #6A9955; + --light-hl-10: #098658; + --dark-hl-10: #B5CEA8; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } diff --git a/docs/assets/search.js b/docs/assets/search.js index 00ad401..5a9a812 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"8\":\"Enumeration\",\"16\":\"Enumeration Member\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":128,\"name\":\"Discovery\",\"url\":\"classes/Discovery.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Discovery.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Discovery.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Discovery.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Discovery.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"classes/Discovery.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"broadcastAddress\",\"url\":\"classes/Discovery.html#broadcastAddress\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Discovery.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"peers\",\"url\":\"classes/Discovery.html#peers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Discovery.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"announceTimer\",\"url\":\"classes/Discovery.html#announceTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"hasLooped\",\"url\":\"classes/Discovery.html#hasLooped\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getConnectionInfo\",\"url\":\"classes/Discovery.html#getConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDeviceList\",\"url\":\"classes/Discovery.html#getDeviceList\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/Discovery.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Discovery.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"announce\",\"url\":\"classes/Discovery.html#announce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"unannounce\",\"url\":\"classes/Discovery.html#unannounce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"broadcastMessage\",\"url\":\"classes/Discovery.html#broadcastMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listenForDevices\",\"url\":\"classes/Discovery.html#listenForDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"readConnectionInfo\",\"url\":\"classes/Discovery.html#readConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"createDiscoveryMessage\",\"url\":\"classes/Discovery.html#createDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"writeDiscoveryMessage\",\"url\":\"classes/Discovery.html#writeDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"findBroadcastIPs\",\"url\":\"classes/Discovery.html#findBroadcastIPs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":32,\"name\":\"CHUNK_SIZE\",\"url\":\"variables/CHUNK_SIZE.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"FileTransferData\",\"url\":\"interfaces/FileTransferData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/FileTransferData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/FileTransferData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"txid\",\"url\":\"interfaces/FileTransferData.html#txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/FileTransferData.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"offset\",\"url\":\"interfaces/FileTransferData.html#offset\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"interfaces/FileTransferData.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/FileTransferData.html#data\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":256,\"name\":\"FileTransferProgress\",\"url\":\"interfaces/FileTransferProgress.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"sizeLeft\",\"url\":\"interfaces/FileTransferProgress.html#sizeLeft\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/FileTransferProgress.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"bytesDownloaded\",\"url\":\"interfaces/FileTransferProgress.html#bytesDownloaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"percentComplete\",\"url\":\"interfaces/FileTransferProgress.html#percentComplete\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":128,\"name\":\"FileTransfer\",\"url\":\"classes/FileTransfer.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransfer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/FileTransfer.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransfer.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"receivedFile\",\"url\":\"classes/FileTransfer.html#receivedFile\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#txid\",\"url\":\"classes/FileTransfer.html#_txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#isAvailable\",\"url\":\"classes/FileTransfer.html#_isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":262144,\"name\":\"txid\",\"url\":\"classes/FileTransfer.html#txid\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/FileTransfer.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/FileTransfer.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getFile\",\"url\":\"classes/FileTransfer.html#getFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"updateSources\",\"url\":\"classes/FileTransfer.html#updateSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/FileTransfer.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestStat\",\"url\":\"classes/FileTransfer.html#requestStat\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestSources\",\"url\":\"classes/FileTransfer.html#requestSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestFileTransferId\",\"url\":\"classes/FileTransfer.html#requestFileTransferId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestChunkRange\",\"url\":\"classes/FileTransfer.html#requestChunkRange\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"signalTransferComplete\",\"url\":\"classes/FileTransfer.html#signalTransferComplete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"sendNoSourcesReply\",\"url\":\"classes/FileTransfer.html#sendNoSourcesReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"isAvailable\",\"url\":\"classes/FileTransfer.html#isAvailable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/FileTransfer.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/FileTransfer.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/FileTransfer.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/FileTransfer.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/FileTransfer.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/FileTransfer.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/FileTransfer.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransfer.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/FileTransfer.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/FileTransfer.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/FileTransfer.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/FileTransfer.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/FileTransfer.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/FileTransfer.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/FileTransfer.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/FileTransfer.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/FileTransfer.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":128,\"name\":\"FileTransferHandler\",\"url\":\"classes/FileTransferHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransferHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransferHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/FileTransferHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransferHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/FileTransferHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/FileTransferHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/FileTransferHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/FileTransferHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/FileTransferHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/FileTransferHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/FileTransferHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransferHandler\"},{\"kind\":4194304,\"name\":\"ServiceData\",\"url\":\"types/ServiceData.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/ServiceData.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"ServiceData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"types/ServiceData.html#__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"types/ServiceData.html#__type.socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"types/ServiceData.html#__type.deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"types/ServiceData.html#__type.service\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ServiceData.__type\"},{\"kind\":128,\"name\":\"ServiceHandler\",\"url\":\"classes/ServiceHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ServiceHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/ServiceHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/ServiceHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":1024,\"name\":\"_devices\",\"url\":\"classes/ServiceHandler.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/ServiceHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/ServiceHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/ServiceHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/ServiceHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/ServiceHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/ServiceHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ServiceHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/ServiceHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"ServiceHandler\"},{\"kind\":128,\"name\":\"Service\",\"url\":\"classes/Service.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Service.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Service.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Service.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Service.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Service.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Service.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Service.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Service.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Service.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Service.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Service.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Service.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"messageBuffer\",\"url\":\"classes/Service.html#messageBuffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Service.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Service.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Service.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"subMessageTest\",\"url\":\"classes/Service.html#subMessageTest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"dataHandler\",\"url\":\"classes/Service.html#dataHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Service.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Service.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Service.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Service.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Service.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Service.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":4194304,\"name\":\"Player\",\"url\":\"types/Player.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"PlayerDeck\",\"url\":\"types/PlayerDeck.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"Mixer\",\"url\":\"types/Mixer.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"StateData\",\"url\":\"interfaces/StateData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/StateData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/StateData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/StateData.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"json\",\"url\":\"interfaces/StateData.html#json\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/StateData.html#json.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateData.json\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/StateData.html#json.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"string\",\"url\":\"interfaces/StateData.html#json.__type.string\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/StateData.html#json.__type.value\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"state\",\"url\":\"interfaces/StateData.html#json.__type.state\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"interval\",\"url\":\"interfaces/StateData.html#interval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":128,\"name\":\"StateMapHandler\",\"url\":\"classes/StateMapHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMapHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMapHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"deviceTrackRegister\",\"url\":\"classes/StateMapHandler.html#deviceTrackRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/StateMapHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMapHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMapHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/StateMapHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/StateMapHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/StateMapHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/StateMapHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/StateMapHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/StateMapHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMapHandler\"},{\"kind\":128,\"name\":\"StateMap\",\"url\":\"classes/StateMap.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMap.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMap.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/StateMap.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"hasReceivedState\",\"url\":\"classes/StateMap.html#hasReceivedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribe\",\"url\":\"classes/StateMap.html#subscribe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/StateMap.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/StateMap.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"sendStateResponse\",\"url\":\"classes/StateMap.html#sendStateResponse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribeState\",\"url\":\"classes/StateMap.html#subscribeState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/StateMap.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/StateMap.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/StateMap.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/StateMap.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/StateMap.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/StateMap.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/StateMap.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/StateMap.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/StateMap.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/StateMap.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/StateMap.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/StateMap.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/StateMap.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/StateMap.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/StateMap.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/StateMap.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/StateMap.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":256,\"name\":\"DirectoryData\",\"url\":\"interfaces/DirectoryData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DirectoryData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DirectoryData\"},{\"kind\":128,\"name\":\"DirectoryHandler\",\"url\":\"classes/DirectoryHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DirectoryHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/DirectoryHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/DirectoryHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DirectoryHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/DirectoryHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/DirectoryHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/DirectoryHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/DirectoryHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/DirectoryHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/DirectoryHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/DirectoryHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"DirectoryHandler\"},{\"kind\":128,\"name\":\"Directory\",\"url\":\"classes/Directory.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Directory.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Directory.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Directory.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeAlive\",\"url\":\"classes/Directory.html#timeAlive\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Directory.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Directory.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendServiceAnnouncement\",\"url\":\"classes/Directory.html#sendServiceAnnouncement\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendTimeStampReply\",\"url\":\"classes/Directory.html#sendTimeStampReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Directory.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Directory.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Directory.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Directory.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/Directory.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Directory.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Directory.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/Directory.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Directory.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/Directory.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Directory.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/Directory.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Directory.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Directory.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Directory.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Directory.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":256,\"name\":\"BeatData\",\"url\":\"interfaces/BeatData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/BeatData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/BeatData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"clock\",\"url\":\"interfaces/BeatData.html#clock\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deckCount\",\"url\":\"interfaces/BeatData.html#deckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/BeatData.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":128,\"name\":\"BeatInfoHandler\",\"url\":\"classes/BeatInfoHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfoHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfoHandler.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfoHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"#beatRegister\",\"url\":\"classes/BeatInfoHandler.html#_beatRegister\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfoHandler.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setBeatData\",\"url\":\"classes/BeatInfoHandler.html#setBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/BeatInfoHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfoHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/BeatInfoHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/BeatInfoHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/BeatInfoHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/BeatInfoHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/BeatInfoHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/BeatInfoHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfoHandler\"},{\"kind\":128,\"name\":\"BeatInfo\",\"url\":\"classes/BeatInfo.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfo.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfo.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfo.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"handler\",\"url\":\"classes/BeatInfo.html#handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatCallback\",\"url\":\"classes/BeatInfo.html#_userBeatCallback\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_userBeatOptions\",\"url\":\"classes/BeatInfo.html#_userBeatOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_currentBeatData\",\"url\":\"classes/BeatInfo.html#_currentBeatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/BeatInfo.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfo.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"startBeatInfo\",\"url\":\"classes/BeatInfo.html#startBeatInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"sendBeatInfoRequest\",\"url\":\"classes/BeatInfo.html#sendBeatInfoRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/BeatInfo.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/BeatInfo.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/BeatInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/BeatInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/BeatInfo.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/BeatInfo.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/BeatInfo.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/BeatInfo.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/BeatInfo.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/BeatInfo.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/BeatInfo.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/BeatInfo.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/BeatInfo.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/BeatInfo.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/BeatInfo.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/BeatInfo.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/BeatInfo.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/BeatInfo.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":256,\"name\":\"TimeSyncData\",\"url\":\"interfaces/TimeSyncData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"msgs\",\"url\":\"interfaces/TimeSyncData.html#msgs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/TimeSyncData.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":128,\"name\":\"TimeSynchronizationHandler\",\"url\":\"classes/TimeSynchronizationHandler.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronizationHandler.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronizationHandler.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"setupService\",\"url\":\"classes/TimeSynchronizationHandler.html#setupService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronizationHandler.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/TimeSynchronizationHandler.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/TimeSynchronizationHandler.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/TimeSynchronizationHandler.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronizationHandler\"},{\"kind\":128,\"name\":\"TimeSynchronization\",\"url\":\"classes/TimeSynchronization.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronization.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronization.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/TimeSynchronization.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"localTime\",\"url\":\"classes/TimeSynchronization.html#localTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"remoteTime\",\"url\":\"classes/TimeSynchronization.html#remoteTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"avgTimeArray\",\"url\":\"classes/TimeSynchronization.html#avgTimeArray\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncRequest\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeSyncMsgHelper\",\"url\":\"classes/TimeSynchronization.html#timeSyncMsgHelper\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"getTimeStamp\",\"url\":\"classes/TimeSynchronization.html#getTimeStamp\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncQuery\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncQuery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/TimeSynchronization.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeAvg\",\"url\":\"classes/TimeSynchronization.html#timeAvg\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/TimeSynchronization.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/TimeSynchronization.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/TimeSynchronization.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/TimeSynchronization.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/TimeSynchronization.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverStatus\",\"url\":\"classes/TimeSynchronization.html#serverStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/TimeSynchronization.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/TimeSynchronization.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"_handler\",\"url\":\"classes/TimeSynchronization.html#_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/TimeSynchronization.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"createServer\",\"url\":\"classes/TimeSynchronization.html#createServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/TimeSynchronization.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeServer\",\"url\":\"classes/TimeSynchronization.html#closeServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/TimeSynchronization.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/TimeSynchronization.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/TimeSynchronization.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/TimeSynchronization.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":256,\"name\":\"ServiceHandlers\",\"url\":\"interfaces/ServiceHandlers.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":128,\"name\":\"StageLinq\",\"url\":\"classes/StageLinq.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StageLinq.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/StageLinq.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/StageLinq.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/StageLinq.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/StageLinq.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"discovery\",\"url\":\"classes/StageLinq.html#discovery\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"stateMap\",\"url\":\"classes/StageLinq.html#stateMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"fileTransfer\",\"url\":\"classes/StageLinq.html#fileTransfer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"beatInfo\",\"url\":\"classes/StageLinq.html#beatInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"timeSync\",\"url\":\"classes/StageLinq.html#timeSync\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"databases\",\"url\":\"classes/StageLinq.html#databases\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"classes/StageLinq.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"classes/StageLinq.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"directory\",\"url\":\"classes/StageLinq.html#directory\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"servers\",\"url\":\"classes/StageLinq.html#servers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"addServer\",\"url\":\"classes/StageLinq.html#addServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"deleteServer\",\"url\":\"classes/StageLinq.html#deleteServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"getServers\",\"url\":\"classes/StageLinq.html#getServers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/StageLinq.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"disconnect\",\"url\":\"classes/StageLinq.html#disconnect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":32,\"name\":\"ANNOUNCEMENT_INTERVAL\",\"url\":\"variables/ANNOUNCEMENT_INTERVAL.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_PORT\",\"url\":\"variables/LISTEN_PORT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"LISTEN_TIMEOUT\",\"url\":\"variables/LISTEN_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"MESSAGE_TIMEOUT\",\"url\":\"variables/MESSAGE_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"CONNECT_TIMEOUT\",\"url\":\"variables/CONNECT_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DOWNLOAD_TIMEOUT\",\"url\":\"variables/DOWNLOAD_TIMEOUT.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":32,\"name\":\"DISCOVERY_MESSAGE_MARKER\",\"url\":\"variables/DISCOVERY_MESSAGE_MARKER.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":8,\"name\":\"Action\",\"url\":\"enums/Action.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"Login\",\"url\":\"enums/Action.html#Login\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":16,\"name\":\"Logout\",\"url\":\"enums/Action.html#Logout\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Action\"},{\"kind\":8,\"name\":\"MessageId\",\"url\":\"enums/MessageId.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"ServicesAnnouncement\",\"url\":\"enums/MessageId.html#ServicesAnnouncement\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"TimeStamp\",\"url\":\"enums/MessageId.html#TimeStamp\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":16,\"name\":\"ServicesRequest\",\"url\":\"enums/MessageId.html#ServicesRequest\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"MessageId\"},{\"kind\":32,\"name\":\"StateNames\",\"url\":\"variables/StateNames.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"StateNames\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"variables/StateNames.html#__type.player\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.player.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.player\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDevice\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDevice\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasSDCardConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasSDCardConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayer\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationSyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationSyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkSyncType\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkSyncType\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkMasterStatus\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkMasterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineMasterMasterTempo\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineMasterMasterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeckCount\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"GUIDecksDeckActiveDeck\",\"url\":\"variables/StateNames.html#__type.player.__type-2.GUIDecksDeckActiveDeck\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"mixer\",\"url\":\"variables/StateNames.html#__type.mixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.mixer\"},{\"kind\":1024,\"name\":\"MixerCH1faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH1faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH2faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH2faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH3faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH3faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH4faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH4faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCrossfaderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCrossfaderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment1\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment2\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment3\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment4\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerNumberOfChannels\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerNumberOfChannels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":256,\"name\":\"Track\",\"url\":\"interfaces/Track.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/Track.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playOrder\",\"url\":\"interfaces/Track.html#playOrder\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"length\",\"url\":\"interfaces/Track.html#length\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpm\",\"url\":\"interfaces/Track.html#bpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"year\",\"url\":\"interfaces/Track.html#year\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Track.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"filename\",\"url\":\"interfaces/Track.html#filename\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bitrate\",\"url\":\"interfaces/Track.html#bitrate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"bpmAnalyzed\",\"url\":\"interfaces/Track.html#bpmAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArtId\",\"url\":\"interfaces/Track.html#albumArtId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileBytes\",\"url\":\"interfaces/Track.html#fileBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/Track.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/Track.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"album\",\"url\":\"interfaces/Track.html#album\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"genre\",\"url\":\"interfaces/Track.html#genre\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"comment\",\"url\":\"interfaces/Track.html#comment\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/Track.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"composer\",\"url\":\"interfaces/Track.html#composer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"remixer\",\"url\":\"interfaces/Track.html#remixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/Track.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"rating\",\"url\":\"interfaces/Track.html#rating\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"albumArt\",\"url\":\"interfaces/Track.html#albumArt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"timeLastPlayed\",\"url\":\"interfaces/Track.html#timeLastPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPlayed\",\"url\":\"interfaces/Track.html#isPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"fileType\",\"url\":\"interfaces/Track.html#fileType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAnalyzed\",\"url\":\"interfaces/Track.html#isAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateCreated\",\"url\":\"interfaces/Track.html#dateCreated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"dateAdded\",\"url\":\"interfaces/Track.html#dateAdded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isAvailable\",\"url\":\"interfaces/Track.html#isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isMetadataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isPerfomanceDataOfPackedTrackChanged\",\"url\":\"interfaces/Track.html#isPerfomanceDataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"playedIndicator\",\"url\":\"interfaces/Track.html#playedIndicator\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isMetadataImported\",\"url\":\"interfaces/Track.html#isMetadataImported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"pdbImportKey\",\"url\":\"interfaces/Track.html#pdbImportKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingSource\",\"url\":\"interfaces/Track.html#streamingSource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"uri\",\"url\":\"interfaces/Track.html#uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"isBeatGridLocked\",\"url\":\"interfaces/Track.html#isBeatGridLocked\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originDatabaseUuid\",\"url\":\"interfaces/Track.html#originDatabaseUuid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"originTrackId\",\"url\":\"interfaces/Track.html#originTrackId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"trackData\",\"url\":\"interfaces/Track.html#trackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"overviewWaveFormData\",\"url\":\"interfaces/Track.html#overviewWaveFormData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"beatData\",\"url\":\"interfaces/Track.html#beatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"quickCues\",\"url\":\"interfaces/Track.html#quickCues\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"loops\",\"url\":\"interfaces/Track.html#loops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"thirdPartySourceId\",\"url\":\"interfaces/Track.html#thirdPartySourceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"streamingFlags\",\"url\":\"interfaces/Track.html#streamingFlags\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"explicitLyrics\",\"url\":\"interfaces/Track.html#explicitLyrics\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"activeOnLoadLoops\",\"url\":\"interfaces/Track.html#activeOnLoadLoops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Track\"},{\"kind\":128,\"name\":\"TrackData\",\"url\":\"classes/TrackData.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TrackData.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"#prefix\",\"url\":\"classes/TrackData.html#_prefix\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"#source\",\"url\":\"classes/TrackData.html#_source\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TrackData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/TrackData.html#_source.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"TrackData.#source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TrackData.html#_source.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/TrackData.html#_source.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/TrackData.html#_source.__type.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.#source.__type\"},{\"kind\":1024,\"name\":\"ArtistName\",\"url\":\"classes/TrackData.html#ArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"CurrentBPM\",\"url\":\"classes/TrackData.html#CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SampleRate\",\"url\":\"classes/TrackData.html#SampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongAnalyzed\",\"url\":\"classes/TrackData.html#SongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongLoaded\",\"url\":\"classes/TrackData.html#SongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SongName\",\"url\":\"classes/TrackData.html#SongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"SoundSwitchGUID\",\"url\":\"classes/TrackData.html#SoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackBytes\",\"url\":\"classes/TrackData.html#TrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackLength\",\"url\":\"classes/TrackData.html#TrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackName\",\"url\":\"classes/TrackData.html#TrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackNetworkPath\",\"url\":\"classes/TrackData.html#TrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":1024,\"name\":\"TrackURI\",\"url\":\"classes/TrackData.html#TrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":262144,\"name\":\"prefix\",\"url\":\"classes/TrackData.html#prefix\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":262144,\"name\":\"source\",\"url\":\"classes/TrackData.html#source\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"TrackData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/TrackData.html#source.source-1.__type-1\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"TrackData.source.source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/TrackData.html#source.source-1.__type-1.path-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"TrackData.source.source.__type\"},{\"kind\":256,\"name\":\"Source\",\"url\":\"interfaces/Source.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/Source.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/Source.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/Source.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"database\",\"url\":\"interfaces/Source.html#database\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/Source.html#database.__type.size\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"connection\",\"url\":\"interfaces/Source.html#database.__type.connection\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"remote\",\"url\":\"interfaces/Source.html#database.__type.remote\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.remote\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.device\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"local\",\"url\":\"interfaces/Source.html#database.__type.local\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.local\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":32,\"name\":\"Units\",\"url\":\"variables/Units.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"DiscoveryMessage\",\"url\":\"interfaces/DiscoveryMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessage.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/DiscoveryMessage.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/DiscoveryMessage.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"DiscoveryMessage.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessage.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":256,\"name\":\"ConnectionInfo\",\"url\":\"interfaces/ConnectionInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/ConnectionInfo.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"unit\",\"url\":\"interfaces/ConnectionInfo.html#unit\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.unit\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"decks\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.decks\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"addressPort\",\"url\":\"interfaces/ConnectionInfo.html#addressPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ConnectionInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/ConnectionInfo.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/ConnectionInfo.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/ConnectionInfo.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ConnectionInfo.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":256,\"name\":\"ServiceMessage\",\"url\":\"interfaces/ServiceMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ServiceMessage.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"message\",\"url\":\"interfaces/ServiceMessage.html#message\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":4194304,\"name\":\"IpAddress\",\"url\":\"types/IpAddress.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"IpAddressPort\",\"url\":\"types/IpAddressPort.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"DiscoveryMessageOptions\",\"url\":\"interfaces/DiscoveryMessageOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessageOptions.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessageOptions.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessageOptions.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"token\",\"url\":\"interfaces/DiscoveryMessageOptions.html#token\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessageOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":256,\"name\":\"StageLinqOptions\",\"url\":\"interfaces/StageLinqOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"maxRetries\",\"url\":\"interfaces/StageLinqOptions.html#maxRetries\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"actingAs\",\"url\":\"interfaces/StageLinqOptions.html#actingAs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"downloadDbSources\",\"url\":\"interfaces/StageLinqOptions.html#downloadDbSources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"interfaces/StageLinqOptions.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"connectToMixer\",\"url\":\"interfaces/StageLinqOptions.html#connectToMixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":8,\"name\":\"ServiceList\",\"url\":\"enums/ServiceList.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"StateMap\",\"url\":\"enums/ServiceList.html#StateMap\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"FileTransfer\",\"url\":\"enums/ServiceList.html#FileTransfer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"BeatInfo\",\"url\":\"enums/ServiceList.html#BeatInfo\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"TimeSynchronization\",\"url\":\"enums/ServiceList.html#TimeSynchronization\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"Directory\",\"url\":\"enums/ServiceList.html#Directory\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":32,\"name\":\"ActingAsDevice\",\"url\":\"variables/ActingAsDevice.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/ActingAsDevice.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"ActingAsDevice\"},{\"kind\":128,\"name\":\"Context\",\"url\":\"classes/Context.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Context.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/Context.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/Context.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/Context.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/Context.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/Context.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/Context.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/Context.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/Context.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/Context.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/Context.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":64,\"name\":\"getTempFilePath\",\"url\":\"functions/getTempFilePath.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"ReadContext\",\"url\":\"classes/ReadContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ReadContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"read\",\"url\":\"classes/ReadContext.html#read\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"peek\",\"url\":\"classes/ReadContext.html#peek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemaining\",\"url\":\"classes/ReadContext.html#readRemaining\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewArrayBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewArrayBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewCtx\",\"url\":\"classes/ReadContext.html#readRemainingAsNewCtx\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/ReadContext.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readNetworkStringUTF16\",\"url\":\"classes/ReadContext.html#readNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readFloat64\",\"url\":\"classes/ReadContext.html#readFloat64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt64\",\"url\":\"classes/ReadContext.html#readUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt32\",\"url\":\"classes/ReadContext.html#readUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readInt32\",\"url\":\"classes/ReadContext.html#readInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt16\",\"url\":\"classes/ReadContext.html#readUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt8\",\"url\":\"classes/ReadContext.html#readUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/ReadContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/ReadContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/ReadContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/ReadContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/ReadContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/ReadContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/ReadContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/ReadContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/ReadContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/ReadContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":128,\"name\":\"WriteContext\",\"url\":\"classes/WriteContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WriteContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"autoGrow\",\"url\":\"classes/WriteContext.html#autoGrow\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"getBuffer\",\"url\":\"classes/WriteContext.html#getBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/WriteContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"checkSize\",\"url\":\"classes/WriteContext.html#checkSize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"resize\",\"url\":\"classes/WriteContext.html#resize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/WriteContext.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeFixedSizedString\",\"url\":\"classes/WriteContext.html#writeFixedSizedString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeNetworkStringUTF16\",\"url\":\"classes/WriteContext.html#writeNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt64\",\"url\":\"classes/WriteContext.html#writeUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt32\",\"url\":\"classes/WriteContext.html#writeUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeInt32\",\"url\":\"classes/WriteContext.html#writeInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt16\",\"url\":\"classes/WriteContext.html#writeUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt8\",\"url\":\"classes/WriteContext.html#writeUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/WriteContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/WriteContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/WriteContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/WriteContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/WriteContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/WriteContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/WriteContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/WriteContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/WriteContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":64,\"name\":\"sleep\",\"url\":\"functions/sleep.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"DeviceId\",\"url\":\"classes/DeviceId.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DeviceId.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_str\",\"url\":\"classes/DeviceId.html#m_str\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_array\",\"url\":\"classes/DeviceId.html#m_array\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"string\",\"url\":\"classes/DeviceId.html#string\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"array\",\"url\":\"classes/DeviceId.html#array\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":128,\"name\":\"Devices\",\"url\":\"classes/Devices.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Devices.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":1024,\"name\":\"#devices\",\"url\":\"classes/Devices.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/Devices.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Devices.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"device\",\"url\":\"classes/Devices.html#device\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/Devices.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasNewInfo\",\"url\":\"classes/Devices.html#hasNewInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"updateDeviceInfo\",\"url\":\"classes/Devices.html#updateDeviceInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Devices.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Devices.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Device.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"classes/Device.html#info\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/Device.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deckCount\",\"url\":\"classes/Device.html#deckCount\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Device.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Device.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":128,\"name\":\"Databases\",\"url\":\"classes/Databases.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Databases.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Databases.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Databases.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":2048,\"name\":\"downloadDb\",\"url\":\"classes/Databases.html#downloadDb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Databases\"},{\"kind\":128,\"name\":\"DbConnection\",\"url\":\"classes/DbConnection.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DbConnection.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"db\",\"url\":\"classes/DbConnection.html#db\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"dbPath\",\"url\":\"classes/DbConnection.html#dbPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"querySource\",\"url\":\"classes/DbConnection.html#querySource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"zInflate\",\"url\":\"classes/DbConnection.html#zInflate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"getTrackInfo\",\"url\":\"classes/DbConnection.html#getTrackInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"close\",\"url\":\"classes/DbConnection.html#close\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":128,\"name\":\"Sources\",\"url\":\"classes/Sources.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Sources.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Sources.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"_sources\",\"url\":\"classes/Sources.html#_sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"parent\",\"url\":\"classes/Sources.html#parent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSource\",\"url\":\"classes/Sources.html#hasSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSourceAndDB\",\"url\":\"classes/Sources.html#hasSourceAndDB\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSource\",\"url\":\"classes/Sources.html#getSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/Sources.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"setSource\",\"url\":\"classes/Sources.html#setSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"deleteSource\",\"url\":\"classes/Sources.html#deleteSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadFile\",\"url\":\"classes/Sources.html#downloadFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,58.171]],[\"comment/0\",[]],[\"name/1\",[1,35.764]],[\"comment/1\",[]],[\"name/2\",[2,47.185]],[\"comment/2\",[]],[\"name/3\",[3,39.3]],[\"comment/3\",[]],[\"name/4\",[4,45.933]],[\"comment/4\",[]],[\"name/5\",[5,58.171]],[\"comment/5\",[]],[\"name/6\",[6,63.279]],[\"comment/6\",[]],[\"name/7\",[7,58.171]],[\"comment/7\",[]],[\"name/8\",[8,63.279]],[\"comment/8\",[]],[\"name/9\",[9,38.712]],[\"comment/9\",[]],[\"name/10\",[10,63.279]],[\"comment/10\",[]],[\"name/11\",[11,63.279]],[\"comment/11\",[]],[\"name/12\",[12,63.279]],[\"comment/12\",[]],[\"name/13\",[13,63.279]],[\"comment/13\",[]],[\"name/14\",[14,47.185]],[\"comment/14\",[]],[\"name/15\",[15,47.185]],[\"comment/15\",[]],[\"name/16\",[16,63.279]],[\"comment/16\",[]],[\"name/17\",[17,63.279]],[\"comment/17\",[]],[\"name/18\",[18,63.279]],[\"comment/18\",[]],[\"name/19\",[19,63.279]],[\"comment/19\",[]],[\"name/20\",[20,63.279]],[\"comment/20\",[]],[\"name/21\",[21,63.279]],[\"comment/21\",[]],[\"name/22\",[22,63.279]],[\"comment/22\",[]],[\"name/23\",[23,63.279]],[\"comment/23\",[]],[\"name/24\",[24,63.279]],[\"comment/24\",[]],[\"name/25\",[25,63.279]],[\"comment/25\",[]],[\"name/26\",[26,48.616]],[\"comment/26\",[]],[\"name/27\",[9,38.712]],[\"comment/27\",[]],[\"name/28\",[27,54.806]],[\"comment/28\",[]],[\"name/29\",[28,58.171]],[\"comment/29\",[]],[\"name/30\",[29,63.279]],[\"comment/30\",[]],[\"name/31\",[30,54.806]],[\"comment/31\",[]],[\"name/32\",[31,63.279]],[\"comment/32\",[]],[\"name/33\",[32,63.279]],[\"comment/33\",[]],[\"name/34\",[33,52.293]],[\"comment/34\",[]],[\"name/35\",[34,63.279]],[\"comment/35\",[]],[\"name/36\",[35,63.279]],[\"comment/36\",[]],[\"name/37\",[36,63.279]],[\"comment/37\",[]],[\"name/38\",[37,54.806]],[\"comment/38\",[]],[\"name/39\",[1,35.764]],[\"comment/39\",[]],[\"name/40\",[2,47.185]],[\"comment/40\",[]],[\"name/41\",[38,36.653]],[\"comment/41\",[]],[\"name/42\",[39,63.279]],[\"comment/42\",[]],[\"name/43\",[27,54.806]],[\"comment/43\",[]],[\"name/44\",[40,54.806]],[\"comment/44\",[]],[\"name/45\",[27,54.806]],[\"comment/45\",[]],[\"name/46\",[41,48.616]],[\"comment/46\",[]],[\"name/47\",[42,48.616]],[\"comment/47\",[]],[\"name/48\",[43,63.279]],[\"comment/48\",[]],[\"name/49\",[44,63.279]],[\"comment/49\",[]],[\"name/50\",[45,58.171]],[\"comment/50\",[]],[\"name/51\",[46,63.279]],[\"comment/51\",[]],[\"name/52\",[47,63.279]],[\"comment/52\",[]],[\"name/53\",[48,63.279]],[\"comment/53\",[]],[\"name/54\",[49,63.279]],[\"comment/54\",[]],[\"name/55\",[50,63.279]],[\"comment/55\",[]],[\"name/56\",[51,63.279]],[\"comment/56\",[]],[\"name/57\",[40,54.806]],[\"comment/57\",[]],[\"name/58\",[52,44.821]],[\"comment/58\",[]],[\"name/59\",[9,38.712]],[\"comment/59\",[]],[\"name/60\",[53,48.616]],[\"comment/60\",[]],[\"name/61\",[54,48.616]],[\"comment/61\",[]],[\"name/62\",[55,48.616]],[\"comment/62\",[]],[\"name/63\",[4,45.933]],[\"comment/63\",[]],[\"name/64\",[56,48.616]],[\"comment/64\",[]],[\"name/65\",[3,39.3]],[\"comment/65\",[]],[\"name/66\",[57,48.616]],[\"comment/66\",[]],[\"name/67\",[58,48.616]],[\"comment/67\",[]],[\"name/68\",[59,48.616]],[\"comment/68\",[]],[\"name/69\",[15,47.185]],[\"comment/69\",[]],[\"name/70\",[60,48.616]],[\"comment/70\",[]],[\"name/71\",[61,48.616]],[\"comment/71\",[]],[\"name/72\",[62,47.185]],[\"comment/72\",[]],[\"name/73\",[63,48.616]],[\"comment/73\",[]],[\"name/74\",[64,48.616]],[\"comment/74\",[]],[\"name/75\",[65,63.279]],[\"comment/75\",[]],[\"name/76\",[1,35.764]],[\"comment/76\",[]],[\"name/77\",[38,36.653]],[\"comment/77\",[]],[\"name/78\",[66,48.616]],[\"comment/78\",[]],[\"name/79\",[3,39.3]],[\"comment/79\",[]],[\"name/80\",[67,47.185]],[\"comment/80\",[]],[\"name/81\",[68,47.185]],[\"comment/81\",[]],[\"name/82\",[14,47.185]],[\"comment/82\",[]],[\"name/83\",[69,47.185]],[\"comment/83\",[]],[\"name/84\",[70,48.616]],[\"comment/84\",[]],[\"name/85\",[71,48.616]],[\"comment/85\",[]],[\"name/86\",[72,63.279]],[\"comment/86\",[]],[\"name/87\",[73,40.593]],[\"comment/87\",[]],[\"name/88\",[38,36.653]],[\"comment/88\",[]],[\"name/89\",[4,45.933]],[\"comment/89\",[]],[\"name/90\",[9,38.712]],[\"comment/90\",[]],[\"name/91\",[26,48.616]],[\"comment/91\",[]],[\"name/92\",[74,63.279]],[\"comment/92\",[]],[\"name/93\",[1,35.764]],[\"comment/93\",[]],[\"name/94\",[38,36.653]],[\"comment/94\",[]],[\"name/95\",[3,39.3]],[\"comment/95\",[]],[\"name/96\",[75,63.279]],[\"comment/96\",[]],[\"name/97\",[67,47.185]],[\"comment/97\",[]],[\"name/98\",[68,47.185]],[\"comment/98\",[]],[\"name/99\",[14,47.185]],[\"comment/99\",[]],[\"name/100\",[69,47.185]],[\"comment/100\",[]],[\"name/101\",[70,48.616]],[\"comment/101\",[]],[\"name/102\",[71,48.616]],[\"comment/102\",[]],[\"name/103\",[66,48.616]],[\"comment/103\",[]],[\"name/104\",[26,48.616]],[\"comment/104\",[]],[\"name/105\",[1,35.764]],[\"comment/105\",[]],[\"name/106\",[38,36.653]],[\"comment/106\",[]],[\"name/107\",[52,44.821]],[\"comment/107\",[]],[\"name/108\",[9,38.712]],[\"comment/108\",[]],[\"name/109\",[53,48.616]],[\"comment/109\",[]],[\"name/110\",[54,48.616]],[\"comment/110\",[]],[\"name/111\",[55,48.616]],[\"comment/111\",[]],[\"name/112\",[4,45.933]],[\"comment/112\",[]],[\"name/113\",[56,48.616]],[\"comment/113\",[]],[\"name/114\",[3,39.3]],[\"comment/114\",[]],[\"name/115\",[57,48.616]],[\"comment/115\",[]],[\"name/116\",[58,48.616]],[\"comment/116\",[]],[\"name/117\",[76,63.279]],[\"comment/117\",[]],[\"name/118\",[59,48.616]],[\"comment/118\",[]],[\"name/119\",[15,47.185]],[\"comment/119\",[]],[\"name/120\",[60,48.616]],[\"comment/120\",[]],[\"name/121\",[77,63.279]],[\"comment/121\",[]],[\"name/122\",[78,63.279]],[\"comment/122\",[]],[\"name/123\",[61,48.616]],[\"comment/123\",[]],[\"name/124\",[62,47.185]],[\"comment/124\",[]],[\"name/125\",[63,48.616]],[\"comment/125\",[]],[\"name/126\",[64,48.616]],[\"comment/126\",[]],[\"name/127\",[41,48.616]],[\"comment/127\",[]],[\"name/128\",[42,48.616]],[\"comment/128\",[]],[\"name/129\",[79,58.171]],[\"comment/129\",[]],[\"name/130\",[80,63.279]],[\"comment/130\",[]],[\"name/131\",[81,58.171]],[\"comment/131\",[]],[\"name/132\",[82,63.279]],[\"comment/132\",[]],[\"name/133\",[26,48.616]],[\"comment/133\",[]],[\"name/134\",[9,38.712]],[\"comment/134\",[]],[\"name/135\",[38,36.653]],[\"comment/135\",[]],[\"name/136\",[83,63.279]],[\"comment/136\",[]],[\"name/137\",[73,40.593]],[\"comment/137\",[]],[\"name/138\",[84,58.171]],[\"comment/138\",[]],[\"name/139\",[85,58.171]],[\"comment/139\",[]],[\"name/140\",[86,63.279]],[\"comment/140\",[]],[\"name/141\",[87,63.279]],[\"comment/141\",[]],[\"name/142\",[88,63.279]],[\"comment/142\",[]],[\"name/143\",[89,63.279]],[\"comment/143\",[]],[\"name/144\",[1,35.764]],[\"comment/144\",[]],[\"name/145\",[38,36.653]],[\"comment/145\",[]],[\"name/146\",[90,63.279]],[\"comment/146\",[]],[\"name/147\",[66,48.616]],[\"comment/147\",[]],[\"name/148\",[3,39.3]],[\"comment/148\",[]],[\"name/149\",[67,47.185]],[\"comment/149\",[]],[\"name/150\",[68,47.185]],[\"comment/150\",[]],[\"name/151\",[14,47.185]],[\"comment/151\",[]],[\"name/152\",[69,47.185]],[\"comment/152\",[]],[\"name/153\",[70,48.616]],[\"comment/153\",[]],[\"name/154\",[71,48.616]],[\"comment/154\",[]],[\"name/155\",[91,54.806]],[\"comment/155\",[]],[\"name/156\",[1,35.764]],[\"comment/156\",[]],[\"name/157\",[38,36.653]],[\"comment/157\",[]],[\"name/158\",[92,58.171]],[\"comment/158\",[]],[\"name/159\",[93,63.279]],[\"comment/159\",[]],[\"name/160\",[94,63.279]],[\"comment/160\",[]],[\"name/161\",[41,48.616]],[\"comment/161\",[]],[\"name/162\",[42,48.616]],[\"comment/162\",[]],[\"name/163\",[95,63.279]],[\"comment/163\",[]],[\"name/164\",[96,63.279]],[\"comment/164\",[]],[\"name/165\",[52,44.821]],[\"comment/165\",[]],[\"name/166\",[9,38.712]],[\"comment/166\",[]],[\"name/167\",[53,48.616]],[\"comment/167\",[]],[\"name/168\",[54,48.616]],[\"comment/168\",[]],[\"name/169\",[55,48.616]],[\"comment/169\",[]],[\"name/170\",[4,45.933]],[\"comment/170\",[]],[\"name/171\",[56,48.616]],[\"comment/171\",[]],[\"name/172\",[3,39.3]],[\"comment/172\",[]],[\"name/173\",[57,48.616]],[\"comment/173\",[]],[\"name/174\",[58,48.616]],[\"comment/174\",[]],[\"name/175\",[59,48.616]],[\"comment/175\",[]],[\"name/176\",[15,47.185]],[\"comment/176\",[]],[\"name/177\",[60,48.616]],[\"comment/177\",[]],[\"name/178\",[61,48.616]],[\"comment/178\",[]],[\"name/179\",[62,47.185]],[\"comment/179\",[]],[\"name/180\",[63,48.616]],[\"comment/180\",[]],[\"name/181\",[64,48.616]],[\"comment/181\",[]],[\"name/182\",[97,63.279]],[\"comment/182\",[]],[\"name/183\",[9,38.712]],[\"comment/183\",[]],[\"name/184\",[98,63.279]],[\"comment/184\",[]],[\"name/185\",[1,35.764]],[\"comment/185\",[]],[\"name/186\",[38,36.653]],[\"comment/186\",[]],[\"name/187\",[66,48.616]],[\"comment/187\",[]],[\"name/188\",[3,39.3]],[\"comment/188\",[]],[\"name/189\",[67,47.185]],[\"comment/189\",[]],[\"name/190\",[68,47.185]],[\"comment/190\",[]],[\"name/191\",[14,47.185]],[\"comment/191\",[]],[\"name/192\",[69,47.185]],[\"comment/192\",[]],[\"name/193\",[70,48.616]],[\"comment/193\",[]],[\"name/194\",[71,48.616]],[\"comment/194\",[]],[\"name/195\",[99,54.806]],[\"comment/195\",[]],[\"name/196\",[1,35.764]],[\"comment/196\",[]],[\"name/197\",[38,36.653]],[\"comment/197\",[]],[\"name/198\",[56,48.616]],[\"comment/198\",[]],[\"name/199\",[100,63.279]],[\"comment/199\",[]],[\"name/200\",[41,48.616]],[\"comment/200\",[]],[\"name/201\",[42,48.616]],[\"comment/201\",[]],[\"name/202\",[101,63.279]],[\"comment/202\",[]],[\"name/203\",[102,63.279]],[\"comment/203\",[]],[\"name/204\",[52,44.821]],[\"comment/204\",[]],[\"name/205\",[9,38.712]],[\"comment/205\",[]],[\"name/206\",[53,48.616]],[\"comment/206\",[]],[\"name/207\",[54,48.616]],[\"comment/207\",[]],[\"name/208\",[55,48.616]],[\"comment/208\",[]],[\"name/209\",[4,45.933]],[\"comment/209\",[]],[\"name/210\",[3,39.3]],[\"comment/210\",[]],[\"name/211\",[57,48.616]],[\"comment/211\",[]],[\"name/212\",[58,48.616]],[\"comment/212\",[]],[\"name/213\",[59,48.616]],[\"comment/213\",[]],[\"name/214\",[15,47.185]],[\"comment/214\",[]],[\"name/215\",[60,48.616]],[\"comment/215\",[]],[\"name/216\",[61,48.616]],[\"comment/216\",[]],[\"name/217\",[62,47.185]],[\"comment/217\",[]],[\"name/218\",[63,48.616]],[\"comment/218\",[]],[\"name/219\",[64,48.616]],[\"comment/219\",[]],[\"name/220\",[103,58.171]],[\"comment/220\",[]],[\"name/221\",[26,48.616]],[\"comment/221\",[]],[\"name/222\",[9,38.712]],[\"comment/222\",[]],[\"name/223\",[104,63.279]],[\"comment/223\",[]],[\"name/224\",[105,58.171]],[\"comment/224\",[]],[\"name/225\",[106,63.279]],[\"comment/225\",[]],[\"name/226\",[107,63.279]],[\"comment/226\",[]],[\"name/227\",[1,35.764]],[\"comment/227\",[]],[\"name/228\",[2,47.185]],[\"comment/228\",[]],[\"name/229\",[38,36.653]],[\"comment/229\",[]],[\"name/230\",[108,63.279]],[\"comment/230\",[]],[\"name/231\",[109,58.171]],[\"comment/231\",[]],[\"name/232\",[110,63.279]],[\"comment/232\",[]],[\"name/233\",[66,48.616]],[\"comment/233\",[]],[\"name/234\",[3,39.3]],[\"comment/234\",[]],[\"name/235\",[67,47.185]],[\"comment/235\",[]],[\"name/236\",[68,47.185]],[\"comment/236\",[]],[\"name/237\",[14,47.185]],[\"comment/237\",[]],[\"name/238\",[69,47.185]],[\"comment/238\",[]],[\"name/239\",[70,48.616]],[\"comment/239\",[]],[\"name/240\",[71,48.616]],[\"comment/240\",[]],[\"name/241\",[111,54.806]],[\"comment/241\",[]],[\"name/242\",[1,35.764]],[\"comment/242\",[]],[\"name/243\",[2,47.185]],[\"comment/243\",[]],[\"name/244\",[38,36.653]],[\"comment/244\",[]],[\"name/245\",[92,58.171]],[\"comment/245\",[]],[\"name/246\",[112,63.279]],[\"comment/246\",[]],[\"name/247\",[113,63.279]],[\"comment/247\",[]],[\"name/248\",[114,63.279]],[\"comment/248\",[]],[\"name/249\",[56,48.616]],[\"comment/249\",[]],[\"name/250\",[109,58.171]],[\"comment/250\",[]],[\"name/251\",[115,63.279]],[\"comment/251\",[]],[\"name/252\",[116,63.279]],[\"comment/252\",[]],[\"name/253\",[41,48.616]],[\"comment/253\",[]],[\"name/254\",[42,48.616]],[\"comment/254\",[]],[\"name/255\",[52,44.821]],[\"comment/255\",[]],[\"name/256\",[9,38.712]],[\"comment/256\",[]],[\"name/257\",[53,48.616]],[\"comment/257\",[]],[\"name/258\",[54,48.616]],[\"comment/258\",[]],[\"name/259\",[55,48.616]],[\"comment/259\",[]],[\"name/260\",[4,45.933]],[\"comment/260\",[]],[\"name/261\",[3,39.3]],[\"comment/261\",[]],[\"name/262\",[57,48.616]],[\"comment/262\",[]],[\"name/263\",[58,48.616]],[\"comment/263\",[]],[\"name/264\",[59,48.616]],[\"comment/264\",[]],[\"name/265\",[15,47.185]],[\"comment/265\",[]],[\"name/266\",[60,48.616]],[\"comment/266\",[]],[\"name/267\",[61,48.616]],[\"comment/267\",[]],[\"name/268\",[62,47.185]],[\"comment/268\",[]],[\"name/269\",[63,48.616]],[\"comment/269\",[]],[\"name/270\",[64,48.616]],[\"comment/270\",[]],[\"name/271\",[117,63.279]],[\"comment/271\",[]],[\"name/272\",[118,63.279]],[\"comment/272\",[]],[\"name/273\",[119,58.171]],[\"comment/273\",[]],[\"name/274\",[120,63.279]],[\"comment/274\",[]],[\"name/275\",[1,35.764]],[\"comment/275\",[]],[\"name/276\",[38,36.653]],[\"comment/276\",[]],[\"name/277\",[66,48.616]],[\"comment/277\",[]],[\"name/278\",[3,39.3]],[\"comment/278\",[]],[\"name/279\",[67,47.185]],[\"comment/279\",[]],[\"name/280\",[68,47.185]],[\"comment/280\",[]],[\"name/281\",[14,47.185]],[\"comment/281\",[]],[\"name/282\",[69,47.185]],[\"comment/282\",[]],[\"name/283\",[70,48.616]],[\"comment/283\",[]],[\"name/284\",[71,48.616]],[\"comment/284\",[]],[\"name/285\",[121,58.171]],[\"comment/285\",[]],[\"name/286\",[1,35.764]],[\"comment/286\",[]],[\"name/287\",[38,36.653]],[\"comment/287\",[]],[\"name/288\",[56,48.616]],[\"comment/288\",[]],[\"name/289\",[122,63.279]],[\"comment/289\",[]],[\"name/290\",[123,63.279]],[\"comment/290\",[]],[\"name/291\",[124,63.279]],[\"comment/291\",[]],[\"name/292\",[125,63.279]],[\"comment/292\",[]],[\"name/293\",[126,63.279]],[\"comment/293\",[]],[\"name/294\",[127,63.279]],[\"comment/294\",[]],[\"name/295\",[128,63.279]],[\"comment/295\",[]],[\"name/296\",[41,48.616]],[\"comment/296\",[]],[\"name/297\",[129,63.279]],[\"comment/297\",[]],[\"name/298\",[42,48.616]],[\"comment/298\",[]],[\"name/299\",[52,44.821]],[\"comment/299\",[]],[\"name/300\",[9,38.712]],[\"comment/300\",[]],[\"name/301\",[53,48.616]],[\"comment/301\",[]],[\"name/302\",[54,48.616]],[\"comment/302\",[]],[\"name/303\",[55,48.616]],[\"comment/303\",[]],[\"name/304\",[4,45.933]],[\"comment/304\",[]],[\"name/305\",[3,39.3]],[\"comment/305\",[]],[\"name/306\",[57,48.616]],[\"comment/306\",[]],[\"name/307\",[58,48.616]],[\"comment/307\",[]],[\"name/308\",[59,48.616]],[\"comment/308\",[]],[\"name/309\",[15,47.185]],[\"comment/309\",[]],[\"name/310\",[60,48.616]],[\"comment/310\",[]],[\"name/311\",[61,48.616]],[\"comment/311\",[]],[\"name/312\",[62,47.185]],[\"comment/312\",[]],[\"name/313\",[63,48.616]],[\"comment/313\",[]],[\"name/314\",[64,48.616]],[\"comment/314\",[]],[\"name/315\",[130,63.279]],[\"comment/315\",[]],[\"name/316\",[131,63.279]],[\"comment/316\",[]],[\"name/317\",[1,35.764]],[\"comment/317\",[]],[\"name/318\",[7,58.171]],[\"comment/318\",[]],[\"name/319\",[132,54.806]],[\"comment/319\",[]],[\"name/320\",[133,54.806]],[\"comment/320\",[]],[\"name/321\",[134,63.279]],[\"comment/321\",[]],[\"name/322\",[0,58.171]],[\"comment/322\",[]],[\"name/323\",[91,54.806]],[\"comment/323\",[]],[\"name/324\",[37,54.806]],[\"comment/324\",[]],[\"name/325\",[111,54.806]],[\"comment/325\",[]],[\"name/326\",[135,63.279]],[\"comment/326\",[]],[\"name/327\",[136,58.171]],[\"comment/327\",[]],[\"name/328\",[30,54.806]],[\"comment/328\",[]],[\"name/329\",[137,63.279]],[\"comment/329\",[]],[\"name/330\",[99,54.806]],[\"comment/330\",[]],[\"name/331\",[138,63.279]],[\"comment/331\",[]],[\"name/332\",[139,63.279]],[\"comment/332\",[]],[\"name/333\",[140,63.279]],[\"comment/333\",[]],[\"name/334\",[141,63.279]],[\"comment/334\",[]],[\"name/335\",[142,63.279]],[\"comment/335\",[]],[\"name/336\",[143,63.279]],[\"comment/336\",[]],[\"name/337\",[144,63.279]],[\"comment/337\",[]],[\"name/338\",[145,63.279]],[\"comment/338\",[]],[\"name/339\",[146,63.279]],[\"comment/339\",[]],[\"name/340\",[147,63.279]],[\"comment/340\",[]],[\"name/341\",[148,63.279]],[\"comment/341\",[]],[\"name/342\",[149,63.279]],[\"comment/342\",[]],[\"name/343\",[150,63.279]],[\"comment/343\",[]],[\"name/344\",[151,54.806]],[\"comment/344\",[]],[\"name/345\",[152,63.279]],[\"comment/345\",[]],[\"name/346\",[153,63.279]],[\"comment/346\",[]],[\"name/347\",[154,63.279]],[\"comment/347\",[]],[\"name/348\",[155,63.279]],[\"comment/348\",[]],[\"name/349\",[119,58.171]],[\"comment/349\",[]],[\"name/350\",[156,63.279]],[\"comment/350\",[]],[\"name/351\",[157,63.279]],[\"comment/351\",[]],[\"name/352\",[73,40.593]],[\"comment/352\",[]],[\"name/353\",[79,58.171]],[\"comment/353\",[]],[\"name/354\",[73,40.593]],[\"comment/354\",[]],[\"name/355\",[158,63.279]],[\"comment/355\",[]],[\"name/356\",[159,63.279]],[\"comment/356\",[]],[\"name/357\",[160,63.279]],[\"comment/357\",[]],[\"name/358\",[161,63.279]],[\"comment/358\",[]],[\"name/359\",[162,63.279]],[\"comment/359\",[]],[\"name/360\",[163,63.279]],[\"comment/360\",[]],[\"name/361\",[164,63.279]],[\"comment/361\",[]],[\"name/362\",[165,63.279]],[\"comment/362\",[]],[\"name/363\",[166,63.279]],[\"comment/363\",[]],[\"name/364\",[167,63.279]],[\"comment/364\",[]],[\"name/365\",[168,63.279]],[\"comment/365\",[]],[\"name/366\",[169,63.279]],[\"comment/366\",[]],[\"name/367\",[170,63.279]],[\"comment/367\",[]],[\"name/368\",[171,63.279]],[\"comment/368\",[]],[\"name/369\",[172,63.279]],[\"comment/369\",[]],[\"name/370\",[173,63.279]],[\"comment/370\",[]],[\"name/371\",[174,63.279]],[\"comment/371\",[]],[\"name/372\",[175,63.279]],[\"comment/372\",[]],[\"name/373\",[176,63.279]],[\"comment/373\",[]],[\"name/374\",[177,63.279]],[\"comment/374\",[]],[\"name/375\",[178,63.279]],[\"comment/375\",[]],[\"name/376\",[179,63.279]],[\"comment/376\",[]],[\"name/377\",[180,63.279]],[\"comment/377\",[]],[\"name/378\",[181,63.279]],[\"comment/378\",[]],[\"name/379\",[182,63.279]],[\"comment/379\",[]],[\"name/380\",[183,63.279]],[\"comment/380\",[]],[\"name/381\",[184,63.279]],[\"comment/381\",[]],[\"name/382\",[185,63.279]],[\"comment/382\",[]],[\"name/383\",[186,63.279]],[\"comment/383\",[]],[\"name/384\",[187,63.279]],[\"comment/384\",[]],[\"name/385\",[188,63.279]],[\"comment/385\",[]],[\"name/386\",[189,63.279]],[\"comment/386\",[]],[\"name/387\",[190,63.279]],[\"comment/387\",[]],[\"name/388\",[191,63.279]],[\"comment/388\",[]],[\"name/389\",[192,63.279]],[\"comment/389\",[]],[\"name/390\",[193,63.279]],[\"comment/390\",[]],[\"name/391\",[194,63.279]],[\"comment/391\",[]],[\"name/392\",[195,63.279]],[\"comment/392\",[]],[\"name/393\",[196,63.279]],[\"comment/393\",[]],[\"name/394\",[197,63.279]],[\"comment/394\",[]],[\"name/395\",[198,63.279]],[\"comment/395\",[]],[\"name/396\",[199,63.279]],[\"comment/396\",[]],[\"name/397\",[200,63.279]],[\"comment/397\",[]],[\"name/398\",[201,63.279]],[\"comment/398\",[]],[\"name/399\",[202,63.279]],[\"comment/399\",[]],[\"name/400\",[203,63.279]],[\"comment/400\",[]],[\"name/401\",[204,63.279]],[\"comment/401\",[]],[\"name/402\",[205,63.279]],[\"comment/402\",[]],[\"name/403\",[206,63.279]],[\"comment/403\",[]],[\"name/404\",[207,63.279]],[\"comment/404\",[]],[\"name/405\",[208,63.279]],[\"comment/405\",[]],[\"name/406\",[209,63.279]],[\"comment/406\",[]],[\"name/407\",[210,63.279]],[\"comment/407\",[]],[\"name/408\",[211,63.279]],[\"comment/408\",[]],[\"name/409\",[212,63.279]],[\"comment/409\",[]],[\"name/410\",[213,63.279]],[\"comment/410\",[]],[\"name/411\",[214,63.279]],[\"comment/411\",[]],[\"name/412\",[215,63.279]],[\"comment/412\",[]],[\"name/413\",[216,63.279]],[\"comment/413\",[]],[\"name/414\",[217,63.279]],[\"comment/414\",[]],[\"name/415\",[218,63.279]],[\"comment/415\",[]],[\"name/416\",[219,63.279]],[\"comment/416\",[]],[\"name/417\",[220,63.279]],[\"comment/417\",[]],[\"name/418\",[221,63.279]],[\"comment/418\",[]],[\"name/419\",[222,63.279]],[\"comment/419\",[]],[\"name/420\",[223,63.279]],[\"comment/420\",[]],[\"name/421\",[224,63.279]],[\"comment/421\",[]],[\"name/422\",[225,63.279]],[\"comment/422\",[]],[\"name/423\",[226,63.279]],[\"comment/423\",[]],[\"name/424\",[227,63.279]],[\"comment/424\",[]],[\"name/425\",[228,63.279]],[\"comment/425\",[]],[\"name/426\",[229,63.279]],[\"comment/426\",[]],[\"name/427\",[230,63.279]],[\"comment/427\",[]],[\"name/428\",[231,63.279]],[\"comment/428\",[]],[\"name/429\",[232,63.279]],[\"comment/429\",[]],[\"name/430\",[233,63.279]],[\"comment/430\",[]],[\"name/431\",[234,63.279]],[\"comment/431\",[]],[\"name/432\",[235,63.279]],[\"comment/432\",[]],[\"name/433\",[236,63.279]],[\"comment/433\",[]],[\"name/434\",[237,63.279]],[\"comment/434\",[]],[\"name/435\",[238,63.279]],[\"comment/435\",[]],[\"name/436\",[239,63.279]],[\"comment/436\",[]],[\"name/437\",[240,63.279]],[\"comment/437\",[]],[\"name/438\",[241,63.279]],[\"comment/438\",[]],[\"name/439\",[242,63.279]],[\"comment/439\",[]],[\"name/440\",[243,63.279]],[\"comment/440\",[]],[\"name/441\",[244,63.279]],[\"comment/441\",[]],[\"name/442\",[245,63.279]],[\"comment/442\",[]],[\"name/443\",[246,63.279]],[\"comment/443\",[]],[\"name/444\",[247,63.279]],[\"comment/444\",[]],[\"name/445\",[248,63.279]],[\"comment/445\",[]],[\"name/446\",[249,63.279]],[\"comment/446\",[]],[\"name/447\",[250,63.279]],[\"comment/447\",[]],[\"name/448\",[251,63.279]],[\"comment/448\",[]],[\"name/449\",[252,63.279]],[\"comment/449\",[]],[\"name/450\",[253,63.279]],[\"comment/450\",[]],[\"name/451\",[254,63.279]],[\"comment/451\",[]],[\"name/452\",[255,63.279]],[\"comment/452\",[]],[\"name/453\",[256,63.279]],[\"comment/453\",[]],[\"name/454\",[257,63.279]],[\"comment/454\",[]],[\"name/455\",[258,63.279]],[\"comment/455\",[]],[\"name/456\",[259,63.279]],[\"comment/456\",[]],[\"name/457\",[260,63.279]],[\"comment/457\",[]],[\"name/458\",[261,63.279]],[\"comment/458\",[]],[\"name/459\",[262,63.279]],[\"comment/459\",[]],[\"name/460\",[263,63.279]],[\"comment/460\",[]],[\"name/461\",[264,63.279]],[\"comment/461\",[]],[\"name/462\",[265,63.279]],[\"comment/462\",[]],[\"name/463\",[266,63.279]],[\"comment/463\",[]],[\"name/464\",[267,63.279]],[\"comment/464\",[]],[\"name/465\",[268,63.279]],[\"comment/465\",[]],[\"name/466\",[269,63.279]],[\"comment/466\",[]],[\"name/467\",[270,63.279]],[\"comment/467\",[]],[\"name/468\",[271,63.279]],[\"comment/468\",[]],[\"name/469\",[272,63.279]],[\"comment/469\",[]],[\"name/470\",[273,63.279]],[\"comment/470\",[]],[\"name/471\",[274,63.279]],[\"comment/471\",[]],[\"name/472\",[275,63.279]],[\"comment/472\",[]],[\"name/473\",[276,63.279]],[\"comment/473\",[]],[\"name/474\",[277,63.279]],[\"comment/474\",[]],[\"name/475\",[278,63.279]],[\"comment/475\",[]],[\"name/476\",[279,63.279]],[\"comment/476\",[]],[\"name/477\",[280,63.279]],[\"comment/477\",[]],[\"name/478\",[281,63.279]],[\"comment/478\",[]],[\"name/479\",[282,63.279]],[\"comment/479\",[]],[\"name/480\",[283,63.279]],[\"comment/480\",[]],[\"name/481\",[284,63.279]],[\"comment/481\",[]],[\"name/482\",[285,63.279]],[\"comment/482\",[]],[\"name/483\",[286,63.279]],[\"comment/483\",[]],[\"name/484\",[287,63.279]],[\"comment/484\",[]],[\"name/485\",[288,63.279]],[\"comment/485\",[]],[\"name/486\",[289,63.279]],[\"comment/486\",[]],[\"name/487\",[290,63.279]],[\"comment/487\",[]],[\"name/488\",[291,63.279]],[\"comment/488\",[]],[\"name/489\",[292,63.279]],[\"comment/489\",[]],[\"name/490\",[293,63.279]],[\"comment/490\",[]],[\"name/491\",[294,63.279]],[\"comment/491\",[]],[\"name/492\",[295,63.279]],[\"comment/492\",[]],[\"name/493\",[296,63.279]],[\"comment/493\",[]],[\"name/494\",[297,63.279]],[\"comment/494\",[]],[\"name/495\",[298,63.279]],[\"comment/495\",[]],[\"name/496\",[299,63.279]],[\"comment/496\",[]],[\"name/497\",[300,63.279]],[\"comment/497\",[]],[\"name/498\",[301,63.279]],[\"comment/498\",[]],[\"name/499\",[302,63.279]],[\"comment/499\",[]],[\"name/500\",[303,63.279]],[\"comment/500\",[]],[\"name/501\",[304,63.279]],[\"comment/501\",[]],[\"name/502\",[305,63.279]],[\"comment/502\",[]],[\"name/503\",[306,63.279]],[\"comment/503\",[]],[\"name/504\",[307,63.279]],[\"comment/504\",[]],[\"name/505\",[308,63.279]],[\"comment/505\",[]],[\"name/506\",[309,63.279]],[\"comment/506\",[]],[\"name/507\",[310,63.279]],[\"comment/507\",[]],[\"name/508\",[311,63.279]],[\"comment/508\",[]],[\"name/509\",[312,63.279]],[\"comment/509\",[]],[\"name/510\",[313,63.279]],[\"comment/510\",[]],[\"name/511\",[314,63.279]],[\"comment/511\",[]],[\"name/512\",[315,63.279]],[\"comment/512\",[]],[\"name/513\",[316,63.279]],[\"comment/513\",[]],[\"name/514\",[317,63.279]],[\"comment/514\",[]],[\"name/515\",[318,63.279]],[\"comment/515\",[]],[\"name/516\",[319,63.279]],[\"comment/516\",[]],[\"name/517\",[320,63.279]],[\"comment/517\",[]],[\"name/518\",[321,63.279]],[\"comment/518\",[]],[\"name/519\",[322,63.279]],[\"comment/519\",[]],[\"name/520\",[323,63.279]],[\"comment/520\",[]],[\"name/521\",[324,63.279]],[\"comment/521\",[]],[\"name/522\",[325,63.279]],[\"comment/522\",[]],[\"name/523\",[326,63.279]],[\"comment/523\",[]],[\"name/524\",[327,63.279]],[\"comment/524\",[]],[\"name/525\",[328,63.279]],[\"comment/525\",[]],[\"name/526\",[329,63.279]],[\"comment/526\",[]],[\"name/527\",[330,63.279]],[\"comment/527\",[]],[\"name/528\",[331,63.279]],[\"comment/528\",[]],[\"name/529\",[332,63.279]],[\"comment/529\",[]],[\"name/530\",[333,63.279]],[\"comment/530\",[]],[\"name/531\",[334,63.279]],[\"comment/531\",[]],[\"name/532\",[335,63.279]],[\"comment/532\",[]],[\"name/533\",[336,63.279]],[\"comment/533\",[]],[\"name/534\",[337,63.279]],[\"comment/534\",[]],[\"name/535\",[338,63.279]],[\"comment/535\",[]],[\"name/536\",[339,63.279]],[\"comment/536\",[]],[\"name/537\",[340,63.279]],[\"comment/537\",[]],[\"name/538\",[341,63.279]],[\"comment/538\",[]],[\"name/539\",[342,63.279]],[\"comment/539\",[]],[\"name/540\",[343,63.279]],[\"comment/540\",[]],[\"name/541\",[344,63.279]],[\"comment/541\",[]],[\"name/542\",[345,63.279]],[\"comment/542\",[]],[\"name/543\",[346,63.279]],[\"comment/543\",[]],[\"name/544\",[347,63.279]],[\"comment/544\",[]],[\"name/545\",[348,63.279]],[\"comment/545\",[]],[\"name/546\",[349,63.279]],[\"comment/546\",[]],[\"name/547\",[350,63.279]],[\"comment/547\",[]],[\"name/548\",[351,63.279]],[\"comment/548\",[]],[\"name/549\",[352,63.279]],[\"comment/549\",[]],[\"name/550\",[353,63.279]],[\"comment/550\",[]],[\"name/551\",[354,63.279]],[\"comment/551\",[]],[\"name/552\",[355,63.279]],[\"comment/552\",[]],[\"name/553\",[356,63.279]],[\"comment/553\",[]],[\"name/554\",[357,63.279]],[\"comment/554\",[]],[\"name/555\",[358,63.279]],[\"comment/555\",[]],[\"name/556\",[359,63.279]],[\"comment/556\",[]],[\"name/557\",[360,63.279]],[\"comment/557\",[]],[\"name/558\",[361,63.279]],[\"comment/558\",[]],[\"name/559\",[362,63.279]],[\"comment/559\",[]],[\"name/560\",[363,63.279]],[\"comment/560\",[]],[\"name/561\",[364,63.279]],[\"comment/561\",[]],[\"name/562\",[365,63.279]],[\"comment/562\",[]],[\"name/563\",[366,63.279]],[\"comment/563\",[]],[\"name/564\",[367,63.279]],[\"comment/564\",[]],[\"name/565\",[368,63.279]],[\"comment/565\",[]],[\"name/566\",[369,63.279]],[\"comment/566\",[]],[\"name/567\",[370,63.279]],[\"comment/567\",[]],[\"name/568\",[371,63.279]],[\"comment/568\",[]],[\"name/569\",[372,63.279]],[\"comment/569\",[]],[\"name/570\",[81,58.171]],[\"comment/570\",[]],[\"name/571\",[73,40.593]],[\"comment/571\",[]],[\"name/572\",[373,63.279]],[\"comment/572\",[]],[\"name/573\",[374,63.279]],[\"comment/573\",[]],[\"name/574\",[375,63.279]],[\"comment/574\",[]],[\"name/575\",[376,63.279]],[\"comment/575\",[]],[\"name/576\",[377,63.279]],[\"comment/576\",[]],[\"name/577\",[378,63.279]],[\"comment/577\",[]],[\"name/578\",[379,63.279]],[\"comment/578\",[]],[\"name/579\",[380,63.279]],[\"comment/579\",[]],[\"name/580\",[381,63.279]],[\"comment/580\",[]],[\"name/581\",[382,63.279]],[\"comment/581\",[]],[\"name/582\",[383,63.279]],[\"comment/582\",[]],[\"name/583\",[384,58.171]],[\"comment/583\",[]],[\"name/584\",[385,63.279]],[\"comment/584\",[]],[\"name/585\",[386,63.279]],[\"comment/585\",[]],[\"name/586\",[387,63.279]],[\"comment/586\",[]],[\"name/587\",[388,63.279]],[\"comment/587\",[]],[\"name/588\",[389,52.293]],[\"comment/588\",[]],[\"name/589\",[390,63.279]],[\"comment/589\",[]],[\"name/590\",[391,63.279]],[\"comment/590\",[]],[\"name/591\",[392,63.279]],[\"comment/591\",[]],[\"name/592\",[393,63.279]],[\"comment/592\",[]],[\"name/593\",[394,63.279]],[\"comment/593\",[]],[\"name/594\",[395,63.279]],[\"comment/594\",[]],[\"name/595\",[396,63.279]],[\"comment/595\",[]],[\"name/596\",[397,63.279]],[\"comment/596\",[]],[\"name/597\",[398,63.279]],[\"comment/597\",[]],[\"name/598\",[399,63.279]],[\"comment/598\",[]],[\"name/599\",[400,63.279]],[\"comment/599\",[]],[\"name/600\",[401,63.279]],[\"comment/600\",[]],[\"name/601\",[402,63.279]],[\"comment/601\",[]],[\"name/602\",[403,63.279]],[\"comment/602\",[]],[\"name/603\",[404,63.279]],[\"comment/603\",[]],[\"name/604\",[405,63.279]],[\"comment/604\",[]],[\"name/605\",[406,63.279]],[\"comment/605\",[]],[\"name/606\",[407,63.279]],[\"comment/606\",[]],[\"name/607\",[408,63.279]],[\"comment/607\",[]],[\"name/608\",[409,63.279]],[\"comment/608\",[]],[\"name/609\",[410,63.279]],[\"comment/609\",[]],[\"name/610\",[411,63.279]],[\"comment/610\",[]],[\"name/611\",[40,54.806]],[\"comment/611\",[]],[\"name/612\",[412,63.279]],[\"comment/612\",[]],[\"name/613\",[413,63.279]],[\"comment/613\",[]],[\"name/614\",[414,63.279]],[\"comment/614\",[]],[\"name/615\",[415,63.279]],[\"comment/615\",[]],[\"name/616\",[416,63.279]],[\"comment/616\",[]],[\"name/617\",[417,63.279]],[\"comment/617\",[]],[\"name/618\",[418,63.279]],[\"comment/618\",[]],[\"name/619\",[419,63.279]],[\"comment/619\",[]],[\"name/620\",[420,63.279]],[\"comment/620\",[]],[\"name/621\",[421,63.279]],[\"comment/621\",[]],[\"name/622\",[422,58.171]],[\"comment/622\",[]],[\"name/623\",[423,63.279]],[\"comment/623\",[]],[\"name/624\",[103,58.171]],[\"comment/624\",[]],[\"name/625\",[424,63.279]],[\"comment/625\",[]],[\"name/626\",[425,63.279]],[\"comment/626\",[]],[\"name/627\",[426,63.279]],[\"comment/627\",[]],[\"name/628\",[427,63.279]],[\"comment/628\",[]],[\"name/629\",[428,63.279]],[\"comment/629\",[]],[\"name/630\",[429,63.279]],[\"comment/630\",[]],[\"name/631\",[422,58.171]],[\"comment/631\",[]],[\"name/632\",[1,35.764]],[\"comment/632\",[]],[\"name/633\",[430,58.171]],[\"comment/633\",[]],[\"name/634\",[431,48.616]],[\"comment/634\",[]],[\"name/635\",[73,40.593]],[\"comment/635\",[]],[\"name/636\",[38,36.653]],[\"comment/636\",[]],[\"name/637\",[432,52.293]],[\"comment/637\",[]],[\"name/638\",[389,52.293]],[\"comment/638\",[]],[\"name/639\",[433,63.279]],[\"comment/639\",[]],[\"name/640\",[434,63.279]],[\"comment/640\",[]],[\"name/641\",[435,63.279]],[\"comment/641\",[]],[\"name/642\",[436,63.279]],[\"comment/642\",[]],[\"name/643\",[437,63.279]],[\"comment/643\",[]],[\"name/644\",[438,63.279]],[\"comment/644\",[]],[\"name/645\",[439,63.279]],[\"comment/645\",[]],[\"name/646\",[440,63.279]],[\"comment/646\",[]],[\"name/647\",[441,63.279]],[\"comment/647\",[]],[\"name/648\",[442,63.279]],[\"comment/648\",[]],[\"name/649\",[443,63.279]],[\"comment/649\",[]],[\"name/650\",[444,63.279]],[\"comment/650\",[]],[\"name/651\",[430,58.171]],[\"comment/651\",[]],[\"name/652\",[431,48.616]],[\"comment/652\",[]],[\"name/653\",[73,40.593]],[\"comment/653\",[]],[\"name/654\",[38,36.653]],[\"comment/654\",[]],[\"name/655\",[432,52.293]],[\"comment/655\",[]],[\"name/656\",[389,52.293]],[\"comment/656\",[]],[\"name/657\",[431,48.616]],[\"comment/657\",[]],[\"name/658\",[38,36.653]],[\"comment/658\",[]],[\"name/659\",[9,38.712]],[\"comment/659\",[]],[\"name/660\",[26,48.616]],[\"comment/660\",[]],[\"name/661\",[445,63.279]],[\"comment/661\",[]],[\"name/662\",[73,40.593]],[\"comment/662\",[]],[\"name/663\",[432,52.293]],[\"comment/663\",[]],[\"name/664\",[28,58.171]],[\"comment/664\",[]],[\"name/665\",[446,63.279]],[\"comment/665\",[]],[\"name/666\",[447,63.279]],[\"comment/666\",[]],[\"name/667\",[73,40.593]],[\"comment/667\",[]],[\"name/668\",[432,52.293]],[\"comment/668\",[]],[\"name/669\",[52,44.821]],[\"comment/669\",[]],[\"name/670\",[448,63.279]],[\"comment/670\",[]],[\"name/671\",[73,40.593]],[\"comment/671\",[]],[\"name/672\",[389,52.293]],[\"comment/672\",[]],[\"name/673\",[449,63.279]],[\"comment/673\",[]],[\"name/674\",[450,63.279]],[\"comment/674\",[]],[\"name/675\",[9,38.712]],[\"comment/675\",[]],[\"name/676\",[431,48.616]],[\"comment/676\",[]],[\"name/677\",[151,54.806]],[\"comment/677\",[]],[\"name/678\",[451,58.171]],[\"comment/678\",[]],[\"name/679\",[73,40.593]],[\"comment/679\",[]],[\"name/680\",[38,36.653]],[\"comment/680\",[]],[\"name/681\",[452,54.806]],[\"comment/681\",[]],[\"name/682\",[453,54.806]],[\"comment/682\",[]],[\"name/683\",[454,63.279]],[\"comment/683\",[]],[\"name/684\",[5,58.171]],[\"comment/684\",[]],[\"name/685\",[455,63.279]],[\"comment/685\",[]],[\"name/686\",[73,40.593]],[\"comment/686\",[]],[\"name/687\",[38,36.653]],[\"comment/687\",[]],[\"name/688\",[84,58.171]],[\"comment/688\",[]],[\"name/689\",[456,63.279]],[\"comment/689\",[]],[\"name/690\",[457,63.279]],[\"comment/690\",[]],[\"name/691\",[9,38.712]],[\"comment/691\",[]],[\"name/692\",[431,48.616]],[\"comment/692\",[]],[\"name/693\",[151,54.806]],[\"comment/693\",[]],[\"name/694\",[451,58.171]],[\"comment/694\",[]],[\"name/695\",[73,40.593]],[\"comment/695\",[]],[\"name/696\",[38,36.653]],[\"comment/696\",[]],[\"name/697\",[452,54.806]],[\"comment/697\",[]],[\"name/698\",[453,54.806]],[\"comment/698\",[]],[\"name/699\",[458,63.279]],[\"comment/699\",[]],[\"name/700\",[384,58.171]],[\"comment/700\",[]],[\"name/701\",[459,63.279]],[\"comment/701\",[]],[\"name/702\",[460,63.279]],[\"comment/702\",[]],[\"name/703\",[461,63.279]],[\"comment/703\",[]],[\"name/704\",[462,63.279]],[\"comment/704\",[]],[\"name/705\",[38,36.653]],[\"comment/705\",[]],[\"name/706\",[452,54.806]],[\"comment/706\",[]],[\"name/707\",[431,48.616]],[\"comment/707\",[]],[\"name/708\",[463,63.279]],[\"comment/708\",[]],[\"name/709\",[453,54.806]],[\"comment/709\",[]],[\"name/710\",[464,63.279]],[\"comment/710\",[]],[\"name/711\",[465,63.279]],[\"comment/711\",[]],[\"name/712\",[466,63.279]],[\"comment/712\",[]],[\"name/713\",[467,63.279]],[\"comment/713\",[]],[\"name/714\",[132,54.806]],[\"comment/714\",[]],[\"name/715\",[468,63.279]],[\"comment/715\",[]],[\"name/716\",[469,63.279]],[\"comment/716\",[]],[\"name/717\",[91,54.806]],[\"comment/717\",[]],[\"name/718\",[37,54.806]],[\"comment/718\",[]],[\"name/719\",[111,54.806]],[\"comment/719\",[]],[\"name/720\",[121,58.171]],[\"comment/720\",[]],[\"name/721\",[99,54.806]],[\"comment/721\",[]],[\"name/722\",[470,63.279]],[\"comment/722\",[]],[\"name/723\",[73,40.593]],[\"comment/723\",[]],[\"name/724\",[471,63.279]],[\"comment/724\",[]],[\"name/725\",[1,35.764]],[\"comment/725\",[]],[\"name/726\",[472,54.806]],[\"comment/726\",[]],[\"name/727\",[473,54.806]],[\"comment/727\",[]],[\"name/728\",[474,54.806]],[\"comment/728\",[]],[\"name/729\",[33,52.293]],[\"comment/729\",[]],[\"name/730\",[475,54.806]],[\"comment/730\",[]],[\"name/731\",[476,54.806]],[\"comment/731\",[]],[\"name/732\",[477,54.806]],[\"comment/732\",[]],[\"name/733\",[478,54.806]],[\"comment/733\",[]],[\"name/734\",[479,54.806]],[\"comment/734\",[]],[\"name/735\",[480,54.806]],[\"comment/735\",[]],[\"name/736\",[481,63.279]],[\"comment/736\",[]],[\"name/737\",[482,63.279]],[\"comment/737\",[]],[\"name/738\",[1,35.764]],[\"comment/738\",[]],[\"name/739\",[483,63.279]],[\"comment/739\",[]],[\"name/740\",[484,63.279]],[\"comment/740\",[]],[\"name/741\",[485,63.279]],[\"comment/741\",[]],[\"name/742\",[486,63.279]],[\"comment/742\",[]],[\"name/743\",[487,63.279]],[\"comment/743\",[]],[\"name/744\",[488,63.279]],[\"comment/744\",[]],[\"name/745\",[489,63.279]],[\"comment/745\",[]],[\"name/746\",[490,63.279]],[\"comment/746\",[]],[\"name/747\",[491,63.279]],[\"comment/747\",[]],[\"name/748\",[492,63.279]],[\"comment/748\",[]],[\"name/749\",[493,63.279]],[\"comment/749\",[]],[\"name/750\",[494,63.279]],[\"comment/750\",[]],[\"name/751\",[495,63.279]],[\"comment/751\",[]],[\"name/752\",[496,63.279]],[\"comment/752\",[]],[\"name/753\",[472,54.806]],[\"comment/753\",[]],[\"name/754\",[473,54.806]],[\"comment/754\",[]],[\"name/755\",[474,54.806]],[\"comment/755\",[]],[\"name/756\",[33,52.293]],[\"comment/756\",[]],[\"name/757\",[475,54.806]],[\"comment/757\",[]],[\"name/758\",[476,54.806]],[\"comment/758\",[]],[\"name/759\",[477,54.806]],[\"comment/759\",[]],[\"name/760\",[478,54.806]],[\"comment/760\",[]],[\"name/761\",[479,54.806]],[\"comment/761\",[]],[\"name/762\",[480,54.806]],[\"comment/762\",[]],[\"name/763\",[497,63.279]],[\"comment/763\",[]],[\"name/764\",[1,35.764]],[\"comment/764\",[]],[\"name/765\",[498,63.279]],[\"comment/765\",[]],[\"name/766\",[499,63.279]],[\"comment/766\",[]],[\"name/767\",[33,52.293]],[\"comment/767\",[]],[\"name/768\",[500,63.279]],[\"comment/768\",[]],[\"name/769\",[501,63.279]],[\"comment/769\",[]],[\"name/770\",[62,47.185]],[\"comment/770\",[]],[\"name/771\",[502,63.279]],[\"comment/771\",[]],[\"name/772\",[503,63.279]],[\"comment/772\",[]],[\"name/773\",[504,63.279]],[\"comment/773\",[]],[\"name/774\",[505,63.279]],[\"comment/774\",[]],[\"name/775\",[506,63.279]],[\"comment/775\",[]],[\"name/776\",[507,63.279]],[\"comment/776\",[]],[\"name/777\",[508,63.279]],[\"comment/777\",[]],[\"name/778\",[472,54.806]],[\"comment/778\",[]],[\"name/779\",[473,54.806]],[\"comment/779\",[]],[\"name/780\",[474,54.806]],[\"comment/780\",[]],[\"name/781\",[475,54.806]],[\"comment/781\",[]],[\"name/782\",[476,54.806]],[\"comment/782\",[]],[\"name/783\",[477,54.806]],[\"comment/783\",[]],[\"name/784\",[478,54.806]],[\"comment/784\",[]],[\"name/785\",[479,54.806]],[\"comment/785\",[]],[\"name/786\",[480,54.806]],[\"comment/786\",[]],[\"name/787\",[509,63.279]],[\"comment/787\",[]],[\"name/788\",[9,38.712]],[\"comment/788\",[]],[\"name/789\",[1,35.764]],[\"comment/789\",[]],[\"name/790\",[510,63.279]],[\"comment/790\",[]],[\"name/791\",[511,63.279]],[\"comment/791\",[]],[\"name/792\",[85,58.171]],[\"comment/792\",[]],[\"name/793\",[512,63.279]],[\"comment/793\",[]],[\"name/794\",[133,54.806]],[\"comment/794\",[]],[\"name/795\",[2,47.185]],[\"comment/795\",[]],[\"name/796\",[133,54.806]],[\"comment/796\",[]],[\"name/797\",[69,47.185]],[\"comment/797\",[]],[\"name/798\",[68,47.185]],[\"comment/798\",[]],[\"name/799\",[52,44.821]],[\"comment/799\",[]],[\"name/800\",[67,47.185]],[\"comment/800\",[]],[\"name/801\",[513,63.279]],[\"comment/801\",[]],[\"name/802\",[514,63.279]],[\"comment/802\",[]],[\"name/803\",[515,58.171]],[\"comment/803\",[]],[\"name/804\",[516,58.171]],[\"comment/804\",[]],[\"name/805\",[52,44.821]],[\"comment/805\",[]],[\"name/806\",[1,35.764]],[\"comment/806\",[]],[\"name/807\",[3,39.3]],[\"comment/807\",[]],[\"name/808\",[9,38.712]],[\"comment/808\",[]],[\"name/809\",[517,63.279]],[\"comment/809\",[]],[\"name/810\",[132,54.806]],[\"comment/810\",[]],[\"name/811\",[105,58.171]],[\"comment/811\",[]],[\"name/812\",[515,58.171]],[\"comment/812\",[]],[\"name/813\",[516,58.171]],[\"comment/813\",[]],[\"name/814\",[136,58.171]],[\"comment/814\",[]],[\"name/815\",[1,35.764]],[\"comment/815\",[]],[\"name/816\",[2,47.185]],[\"comment/816\",[]],[\"name/817\",[3,39.3]],[\"comment/817\",[]],[\"name/818\",[518,63.279]],[\"comment/818\",[]],[\"name/819\",[519,63.279]],[\"comment/819\",[]],[\"name/820\",[1,35.764]],[\"comment/820\",[]],[\"name/821\",[520,63.279]],[\"comment/821\",[]],[\"name/822\",[521,63.279]],[\"comment/822\",[]],[\"name/823\",[522,63.279]],[\"comment/823\",[]],[\"name/824\",[523,63.279]],[\"comment/824\",[]],[\"name/825\",[524,63.279]],[\"comment/825\",[]],[\"name/826\",[525,63.279]],[\"comment/826\",[]],[\"name/827\",[30,54.806]],[\"comment/827\",[]],[\"name/828\",[1,35.764]],[\"comment/828\",[]],[\"name/829\",[2,47.185]],[\"comment/829\",[]],[\"name/830\",[526,63.279]],[\"comment/830\",[]],[\"name/831\",[3,39.3]],[\"comment/831\",[]],[\"name/832\",[527,63.279]],[\"comment/832\",[]],[\"name/833\",[528,63.279]],[\"comment/833\",[]],[\"name/834\",[529,63.279]],[\"comment/834\",[]],[\"name/835\",[45,58.171]],[\"comment/835\",[]],[\"name/836\",[530,63.279]],[\"comment/836\",[]],[\"name/837\",[531,63.279]],[\"comment/837\",[]],[\"name/838\",[532,63.279]],[\"comment/838\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":73,\"name\":{\"87\":{},\"137\":{},\"352\":{},\"354\":{},\"571\":{},\"635\":{},\"653\":{},\"662\":{},\"667\":{},\"671\":{},\"679\":{},\"686\":{},\"695\":{},\"723\":{}},\"comment\":{}}],[\"_currentbeatdata\",{\"_index\":114,\"name\":{\"248\":{}},\"comment\":{}}],[\"_devices\",{\"_index\":75,\"name\":{\"96\":{}},\"comment\":{}}],[\"_handler\",{\"_index\":57,\"name\":{\"66\":{},\"115\":{},\"173\":{},\"211\":{},\"262\":{},\"306\":{}},\"comment\":{}}],[\"_sources\",{\"_index\":526,\"name\":{\"830\":{}},\"comment\":{}}],[\"_userbeatcallback\",{\"_index\":112,\"name\":{\"246\":{}},\"comment\":{}}],[\"_userbeatoptions\",{\"_index\":113,\"name\":{\"247\":{}},\"comment\":{}}],[\"actingas\",{\"_index\":466,\"name\":{\"712\":{}},\"comment\":{}}],[\"actingasdevice\",{\"_index\":470,\"name\":{\"722\":{}},\"comment\":{}}],[\"action\",{\"_index\":151,\"name\":{\"344\":{},\"677\":{},\"693\":{}},\"comment\":{}}],[\"activeonloadloops\",{\"_index\":429,\"name\":{\"630\":{}},\"comment\":{}}],[\"adddevice\",{\"_index\":69,\"name\":{\"83\":{},\"100\":{},\"152\":{},\"192\":{},\"238\":{},\"282\":{},\"797\":{}},\"comment\":{}}],[\"address\",{\"_index\":5,\"name\":{\"5\":{},\"684\":{}},\"comment\":{}}],[\"addressport\",{\"_index\":457,\"name\":{\"690\":{}},\"comment\":{}}],[\"addserver\",{\"_index\":139,\"name\":{\"332\":{}},\"comment\":{}}],[\"addservice\",{\"_index\":515,\"name\":{\"803\":{},\"812\":{}},\"comment\":{}}],[\"album\",{\"_index\":397,\"name\":{\"596\":{}},\"comment\":{}}],[\"albumart\",{\"_index\":405,\"name\":{\"604\":{}},\"comment\":{}}],[\"albumartid\",{\"_index\":393,\"name\":{\"592\":{}},\"comment\":{}}],[\"announce\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"announcement_interval\",{\"_index\":144,\"name\":{\"337\":{}},\"comment\":{}}],[\"announcetimer\",{\"_index\":10,\"name\":{\"10\":{}},\"comment\":{}}],[\"array\",{\"_index\":512,\"name\":{\"793\":{}},\"comment\":{}}],[\"artist\",{\"_index\":396,\"name\":{\"595\":{}},\"comment\":{}}],[\"artistname\",{\"_index\":433,\"name\":{\"639\":{}},\"comment\":{}}],[\"autogrow\",{\"_index\":498,\"name\":{\"765\":{}},\"comment\":{}}],[\"avgtimearray\",{\"_index\":124,\"name\":{\"291\":{}},\"comment\":{}}],[\"beatdata\",{\"_index\":103,\"name\":{\"220\":{},\"624\":{}},\"comment\":{}}],[\"beatinfo\",{\"_index\":111,\"name\":{\"241\":{},\"325\":{},\"719\":{}},\"comment\":{}}],[\"beatinfohandler\",{\"_index\":107,\"name\":{\"226\":{}},\"comment\":{}}],[\"beatregister\",{\"_index\":108,\"name\":{\"230\":{}},\"comment\":{}}],[\"bitrate\",{\"_index\":391,\"name\":{\"590\":{}},\"comment\":{}}],[\"bpm\",{\"_index\":387,\"name\":{\"586\":{}},\"comment\":{}}],[\"bpmanalyzed\",{\"_index\":392,\"name\":{\"591\":{}},\"comment\":{}}],[\"broadcastaddress\",{\"_index\":6,\"name\":{\"6\":{}},\"comment\":{}}],[\"broadcastmessage\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"buffer\",{\"_index\":472,\"name\":{\"726\":{},\"753\":{},\"778\":{}},\"comment\":{}}],[\"bytesdownloaded\",{\"_index\":35,\"name\":{\"36\":{}},\"comment\":{}}],[\"checksize\",{\"_index\":500,\"name\":{\"768\":{}},\"comment\":{}}],[\"chunk_size\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevice\",{\"_index\":158,\"name\":{\"355\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevicenetworkpath\",{\"_index\":159,\"name\":{\"356\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhassdcardconnected\",{\"_index\":160,\"name\":{\"357\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhasusbdeviceconnected\",{\"_index\":161,\"name\":{\"358\":{}},\"comment\":{}}],[\"clientpreferenceslayera\",{\"_index\":162,\"name\":{\"359\":{}},\"comment\":{}}],[\"clientpreferenceslayerb\",{\"_index\":163,\"name\":{\"360\":{}},\"comment\":{}}],[\"clientpreferencesplayer\",{\"_index\":164,\"name\":{\"361\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolora\",{\"_index\":165,\"name\":{\"362\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolorb\",{\"_index\":166,\"name\":{\"363\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1\",{\"_index\":167,\"name\":{\"364\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1a\",{\"_index\":168,\"name\":{\"365\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1b\",{\"_index\":169,\"name\":{\"366\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2\",{\"_index\":170,\"name\":{\"367\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2a\",{\"_index\":171,\"name\":{\"368\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2b\",{\"_index\":172,\"name\":{\"369\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3\",{\"_index\":173,\"name\":{\"370\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3a\",{\"_index\":174,\"name\":{\"371\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3b\",{\"_index\":175,\"name\":{\"372\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4\",{\"_index\":176,\"name\":{\"373\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4a\",{\"_index\":177,\"name\":{\"374\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4b\",{\"_index\":178,\"name\":{\"375\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationsyncmode\",{\"_index\":179,\"name\":{\"376\":{}},\"comment\":{}}],[\"clock\",{\"_index\":104,\"name\":{\"223\":{}},\"comment\":{}}],[\"close\",{\"_index\":525,\"name\":{\"826\":{}},\"comment\":{}}],[\"closeserver\",{\"_index\":60,\"name\":{\"70\":{},\"120\":{},\"177\":{},\"215\":{},\"266\":{},\"310\":{}},\"comment\":{}}],[\"closeservice\",{\"_index\":64,\"name\":{\"74\":{},\"126\":{},\"181\":{},\"219\":{},\"270\":{},\"314\":{}},\"comment\":{}}],[\"comment\",{\"_index\":399,\"name\":{\"598\":{}},\"comment\":{}}],[\"composer\",{\"_index\":401,\"name\":{\"600\":{}},\"comment\":{}}],[\"connect\",{\"_index\":142,\"name\":{\"335\":{}},\"comment\":{}}],[\"connect_timeout\",{\"_index\":148,\"name\":{\"341\":{}},\"comment\":{}}],[\"connection\",{\"_index\":446,\"name\":{\"665\":{}},\"comment\":{}}],[\"connectioninfo\",{\"_index\":454,\"name\":{\"683\":{}},\"comment\":{}}],[\"connecttomixer\",{\"_index\":468,\"name\":{\"715\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"39\":{},\"76\":{},\"93\":{},\"105\":{},\"144\":{},\"156\":{},\"185\":{},\"196\":{},\"227\":{},\"242\":{},\"275\":{},\"286\":{},\"317\":{},\"632\":{},\"725\":{},\"738\":{},\"764\":{},\"789\":{},\"806\":{},\"815\":{},\"820\":{},\"828\":{}},\"comment\":{}}],[\"context\",{\"_index\":471,\"name\":{\"724\":{}},\"comment\":{}}],[\"creatediscoverymessage\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"createserver\",{\"_index\":59,\"name\":{\"68\":{},\"118\":{},\"175\":{},\"213\":{},\"264\":{},\"308\":{}},\"comment\":{}}],[\"currentbpm\",{\"_index\":434,\"name\":{\"640\":{}},\"comment\":{}}],[\"data\",{\"_index\":31,\"name\":{\"32\":{}},\"comment\":{}}],[\"database\",{\"_index\":445,\"name\":{\"661\":{}},\"comment\":{}}],[\"databases\",{\"_index\":136,\"name\":{\"327\":{},\"814\":{}},\"comment\":{}}],[\"datahandler\",{\"_index\":78,\"name\":{\"122\":{}},\"comment\":{}}],[\"dateadded\",{\"_index\":411,\"name\":{\"610\":{}},\"comment\":{}}],[\"datecreated\",{\"_index\":410,\"name\":{\"609\":{}},\"comment\":{}}],[\"db\",{\"_index\":520,\"name\":{\"821\":{}},\"comment\":{}}],[\"dbconnection\",{\"_index\":519,\"name\":{\"819\":{}},\"comment\":{}}],[\"dbpath\",{\"_index\":521,\"name\":{\"822\":{}},\"comment\":{}}],[\"deck\",{\"_index\":106,\"name\":{\"225\":{}},\"comment\":{}}],[\"deckcount\",{\"_index\":105,\"name\":{\"224\":{},\"811\":{}},\"comment\":{}}],[\"decks\",{\"_index\":456,\"name\":{\"689\":{}},\"comment\":{}}],[\"deletedevice\",{\"_index\":70,\"name\":{\"84\":{},\"101\":{},\"153\":{},\"193\":{},\"239\":{},\"283\":{}},\"comment\":{}}],[\"deleteserver\",{\"_index\":140,\"name\":{\"333\":{}},\"comment\":{}}],[\"deleteservice\",{\"_index\":516,\"name\":{\"804\":{},\"813\":{}},\"comment\":{}}],[\"deletesource\",{\"_index\":531,\"name\":{\"837\":{}},\"comment\":{}}],[\"device\",{\"_index\":52,\"name\":{\"58\":{},\"107\":{},\"165\":{},\"204\":{},\"255\":{},\"299\":{},\"669\":{},\"799\":{},\"805\":{}},\"comment\":{}}],[\"deviceid\",{\"_index\":9,\"name\":{\"9\":{},\"27\":{},\"59\":{},\"90\":{},\"108\":{},\"134\":{},\"166\":{},\"183\":{},\"205\":{},\"222\":{},\"256\":{},\"300\":{},\"659\":{},\"675\":{},\"691\":{},\"788\":{},\"808\":{}},\"comment\":{}}],[\"devices\",{\"_index\":133,\"name\":{\"320\":{},\"794\":{},\"796\":{}},\"comment\":{}}],[\"devicetrackregister\",{\"_index\":90,\"name\":{\"146\":{}},\"comment\":{}}],[\"directory\",{\"_index\":99,\"name\":{\"195\":{},\"330\":{},\"721\":{}},\"comment\":{}}],[\"directorydata\",{\"_index\":97,\"name\":{\"182\":{}},\"comment\":{}}],[\"directoryhandler\",{\"_index\":98,\"name\":{\"184\":{}},\"comment\":{}}],[\"disconnect\",{\"_index\":143,\"name\":{\"336\":{}},\"comment\":{}}],[\"discovery\",{\"_index\":0,\"name\":{\"0\":{},\"322\":{}},\"comment\":{}}],[\"discovery_message_marker\",{\"_index\":150,\"name\":{\"343\":{}},\"comment\":{}}],[\"discoverymessage\",{\"_index\":450,\"name\":{\"674\":{}},\"comment\":{}}],[\"discoverymessageoptions\",{\"_index\":462,\"name\":{\"704\":{}},\"comment\":{}}],[\"download_timeout\",{\"_index\":149,\"name\":{\"342\":{}},\"comment\":{}}],[\"downloaddb\",{\"_index\":518,\"name\":{\"818\":{}},\"comment\":{}}],[\"downloaddbsources\",{\"_index\":467,\"name\":{\"713\":{}},\"comment\":{}}],[\"downloadfile\",{\"_index\":532,\"name\":{\"838\":{}},\"comment\":{}}],[\"enginedeck1currentbpm\",{\"_index\":192,\"name\":{\"389\":{}},\"comment\":{}}],[\"enginedeck1deckismaster\",{\"_index\":184,\"name\":{\"381\":{}},\"comment\":{}}],[\"enginedeck1externalmixervolume\",{\"_index\":193,\"name\":{\"390\":{}},\"comment\":{}}],[\"enginedeck1externalscratchwheeltouch\",{\"_index\":194,\"name\":{\"391\":{}},\"comment\":{}}],[\"enginedeck1padsview\",{\"_index\":195,\"name\":{\"392\":{}},\"comment\":{}}],[\"enginedeck1play\",{\"_index\":196,\"name\":{\"393\":{}},\"comment\":{}}],[\"enginedeck1playstate\",{\"_index\":197,\"name\":{\"394\":{}},\"comment\":{}}],[\"enginedeck1playstatepath\",{\"_index\":198,\"name\":{\"395\":{}},\"comment\":{}}],[\"enginedeck1speed\",{\"_index\":199,\"name\":{\"396\":{}},\"comment\":{}}],[\"enginedeck1speedneutral\",{\"_index\":200,\"name\":{\"397\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetdown\",{\"_index\":201,\"name\":{\"398\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetup\",{\"_index\":202,\"name\":{\"399\":{}},\"comment\":{}}],[\"enginedeck1speedrange\",{\"_index\":203,\"name\":{\"400\":{}},\"comment\":{}}],[\"enginedeck1speedstate\",{\"_index\":204,\"name\":{\"401\":{}},\"comment\":{}}],[\"enginedeck1syncmode\",{\"_index\":205,\"name\":{\"402\":{}},\"comment\":{}}],[\"enginedeck1syncplaystate\",{\"_index\":180,\"name\":{\"377\":{}},\"comment\":{}}],[\"enginedeck1trackartistname\",{\"_index\":206,\"name\":{\"403\":{}},\"comment\":{}}],[\"enginedeck1trackbleep\",{\"_index\":207,\"name\":{\"404\":{}},\"comment\":{}}],[\"enginedeck1trackcueposition\",{\"_index\":208,\"name\":{\"405\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentbpm\",{\"_index\":209,\"name\":{\"406\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentkeyindex\",{\"_index\":210,\"name\":{\"407\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopinposition\",{\"_index\":211,\"name\":{\"408\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopoutposition\",{\"_index\":212,\"name\":{\"409\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopsizeinbeats\",{\"_index\":213,\"name\":{\"410\":{}},\"comment\":{}}],[\"enginedeck1trackkeylock\",{\"_index\":214,\"name\":{\"411\":{}},\"comment\":{}}],[\"enginedeck1trackloopenablestate\",{\"_index\":215,\"name\":{\"412\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop1\",{\"_index\":216,\"name\":{\"413\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop2\",{\"_index\":217,\"name\":{\"414\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop3\",{\"_index\":218,\"name\":{\"415\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop4\",{\"_index\":219,\"name\":{\"416\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop5\",{\"_index\":220,\"name\":{\"417\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop6\",{\"_index\":221,\"name\":{\"418\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop7\",{\"_index\":222,\"name\":{\"419\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop8\",{\"_index\":223,\"name\":{\"420\":{}},\"comment\":{}}],[\"enginedeck1trackplaypauseledstate\",{\"_index\":224,\"name\":{\"421\":{}},\"comment\":{}}],[\"enginedeck1tracksamplerate\",{\"_index\":225,\"name\":{\"422\":{}},\"comment\":{}}],[\"enginedeck1tracksonganalyzed\",{\"_index\":226,\"name\":{\"423\":{}},\"comment\":{}}],[\"enginedeck1tracksongloaded\",{\"_index\":227,\"name\":{\"424\":{}},\"comment\":{}}],[\"enginedeck1tracksongname\",{\"_index\":228,\"name\":{\"425\":{}},\"comment\":{}}],[\"enginedeck1tracksoundswitchguid\",{\"_index\":229,\"name\":{\"426\":{}},\"comment\":{}}],[\"enginedeck1tracktrackbytes\",{\"_index\":230,\"name\":{\"427\":{}},\"comment\":{}}],[\"enginedeck1tracktrackdata\",{\"_index\":231,\"name\":{\"428\":{}},\"comment\":{}}],[\"enginedeck1tracktracklength\",{\"_index\":232,\"name\":{\"429\":{}},\"comment\":{}}],[\"enginedeck1tracktrackname\",{\"_index\":233,\"name\":{\"430\":{}},\"comment\":{}}],[\"enginedeck1tracktracknetworkpath\",{\"_index\":234,\"name\":{\"431\":{}},\"comment\":{}}],[\"enginedeck1tracktrackuri\",{\"_index\":235,\"name\":{\"432\":{}},\"comment\":{}}],[\"enginedeck1tracktrackwasplayed\",{\"_index\":236,\"name\":{\"433\":{}},\"comment\":{}}],[\"enginedeck2currentbpm\",{\"_index\":237,\"name\":{\"434\":{}},\"comment\":{}}],[\"enginedeck2deckismaster\",{\"_index\":185,\"name\":{\"382\":{}},\"comment\":{}}],[\"enginedeck2externalmixervolume\",{\"_index\":238,\"name\":{\"435\":{}},\"comment\":{}}],[\"enginedeck2externalscratchwheeltouch\",{\"_index\":239,\"name\":{\"436\":{}},\"comment\":{}}],[\"enginedeck2padsview\",{\"_index\":240,\"name\":{\"437\":{}},\"comment\":{}}],[\"enginedeck2play\",{\"_index\":241,\"name\":{\"438\":{}},\"comment\":{}}],[\"enginedeck2playstate\",{\"_index\":242,\"name\":{\"439\":{}},\"comment\":{}}],[\"enginedeck2playstatepath\",{\"_index\":243,\"name\":{\"440\":{}},\"comment\":{}}],[\"enginedeck2speed\",{\"_index\":244,\"name\":{\"441\":{}},\"comment\":{}}],[\"enginedeck2speedneutral\",{\"_index\":245,\"name\":{\"442\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetdown\",{\"_index\":246,\"name\":{\"443\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetup\",{\"_index\":247,\"name\":{\"444\":{}},\"comment\":{}}],[\"enginedeck2speedrange\",{\"_index\":248,\"name\":{\"445\":{}},\"comment\":{}}],[\"enginedeck2speedstate\",{\"_index\":249,\"name\":{\"446\":{}},\"comment\":{}}],[\"enginedeck2syncmode\",{\"_index\":250,\"name\":{\"447\":{}},\"comment\":{}}],[\"enginedeck2syncplaystate\",{\"_index\":181,\"name\":{\"378\":{}},\"comment\":{}}],[\"enginedeck2trackartistname\",{\"_index\":251,\"name\":{\"448\":{}},\"comment\":{}}],[\"enginedeck2trackbleep\",{\"_index\":252,\"name\":{\"449\":{}},\"comment\":{}}],[\"enginedeck2trackcueposition\",{\"_index\":253,\"name\":{\"450\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentbpm\",{\"_index\":254,\"name\":{\"451\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentkeyindex\",{\"_index\":255,\"name\":{\"452\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopinposition\",{\"_index\":256,\"name\":{\"453\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopoutposition\",{\"_index\":257,\"name\":{\"454\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopsizeinbeats\",{\"_index\":258,\"name\":{\"455\":{}},\"comment\":{}}],[\"enginedeck2trackkeylock\",{\"_index\":259,\"name\":{\"456\":{}},\"comment\":{}}],[\"enginedeck2trackloopenablestate\",{\"_index\":260,\"name\":{\"457\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop1\",{\"_index\":261,\"name\":{\"458\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop2\",{\"_index\":262,\"name\":{\"459\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop3\",{\"_index\":263,\"name\":{\"460\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop4\",{\"_index\":264,\"name\":{\"461\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop5\",{\"_index\":265,\"name\":{\"462\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop6\",{\"_index\":266,\"name\":{\"463\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop7\",{\"_index\":267,\"name\":{\"464\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop8\",{\"_index\":268,\"name\":{\"465\":{}},\"comment\":{}}],[\"enginedeck2trackplaypauseledstate\",{\"_index\":269,\"name\":{\"466\":{}},\"comment\":{}}],[\"enginedeck2tracksamplerate\",{\"_index\":270,\"name\":{\"467\":{}},\"comment\":{}}],[\"enginedeck2tracksonganalyzed\",{\"_index\":271,\"name\":{\"468\":{}},\"comment\":{}}],[\"enginedeck2tracksongloaded\",{\"_index\":272,\"name\":{\"469\":{}},\"comment\":{}}],[\"enginedeck2tracksongname\",{\"_index\":273,\"name\":{\"470\":{}},\"comment\":{}}],[\"enginedeck2tracksoundswitchguid\",{\"_index\":274,\"name\":{\"471\":{}},\"comment\":{}}],[\"enginedeck2tracktrackbytes\",{\"_index\":275,\"name\":{\"472\":{}},\"comment\":{}}],[\"enginedeck2tracktrackdata\",{\"_index\":276,\"name\":{\"473\":{}},\"comment\":{}}],[\"enginedeck2tracktracklength\",{\"_index\":277,\"name\":{\"474\":{}},\"comment\":{}}],[\"enginedeck2tracktrackname\",{\"_index\":278,\"name\":{\"475\":{}},\"comment\":{}}],[\"enginedeck2tracktracknetworkpath\",{\"_index\":279,\"name\":{\"476\":{}},\"comment\":{}}],[\"enginedeck2tracktrackuri\",{\"_index\":280,\"name\":{\"477\":{}},\"comment\":{}}],[\"enginedeck2tracktrackwasplayed\",{\"_index\":281,\"name\":{\"478\":{}},\"comment\":{}}],[\"enginedeck3currentbpm\",{\"_index\":282,\"name\":{\"479\":{}},\"comment\":{}}],[\"enginedeck3deckismaster\",{\"_index\":186,\"name\":{\"383\":{}},\"comment\":{}}],[\"enginedeck3externalmixervolume\",{\"_index\":283,\"name\":{\"480\":{}},\"comment\":{}}],[\"enginedeck3externalscratchwheeltouch\",{\"_index\":284,\"name\":{\"481\":{}},\"comment\":{}}],[\"enginedeck3padsview\",{\"_index\":285,\"name\":{\"482\":{}},\"comment\":{}}],[\"enginedeck3play\",{\"_index\":286,\"name\":{\"483\":{}},\"comment\":{}}],[\"enginedeck3playstate\",{\"_index\":287,\"name\":{\"484\":{}},\"comment\":{}}],[\"enginedeck3playstatepath\",{\"_index\":288,\"name\":{\"485\":{}},\"comment\":{}}],[\"enginedeck3speed\",{\"_index\":289,\"name\":{\"486\":{}},\"comment\":{}}],[\"enginedeck3speedneutral\",{\"_index\":290,\"name\":{\"487\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetdown\",{\"_index\":291,\"name\":{\"488\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetup\",{\"_index\":292,\"name\":{\"489\":{}},\"comment\":{}}],[\"enginedeck3speedrange\",{\"_index\":293,\"name\":{\"490\":{}},\"comment\":{}}],[\"enginedeck3speedstate\",{\"_index\":294,\"name\":{\"491\":{}},\"comment\":{}}],[\"enginedeck3syncmode\",{\"_index\":295,\"name\":{\"492\":{}},\"comment\":{}}],[\"enginedeck3syncplaystate\",{\"_index\":182,\"name\":{\"379\":{}},\"comment\":{}}],[\"enginedeck3trackartistname\",{\"_index\":296,\"name\":{\"493\":{}},\"comment\":{}}],[\"enginedeck3trackbleep\",{\"_index\":297,\"name\":{\"494\":{}},\"comment\":{}}],[\"enginedeck3trackcueposition\",{\"_index\":298,\"name\":{\"495\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentbpm\",{\"_index\":299,\"name\":{\"496\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentkeyindex\",{\"_index\":300,\"name\":{\"497\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopinposition\",{\"_index\":301,\"name\":{\"498\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopoutposition\",{\"_index\":302,\"name\":{\"499\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopsizeinbeats\",{\"_index\":303,\"name\":{\"500\":{}},\"comment\":{}}],[\"enginedeck3trackkeylock\",{\"_index\":304,\"name\":{\"501\":{}},\"comment\":{}}],[\"enginedeck3trackloopenablestate\",{\"_index\":305,\"name\":{\"502\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop1\",{\"_index\":306,\"name\":{\"503\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop2\",{\"_index\":307,\"name\":{\"504\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop3\",{\"_index\":308,\"name\":{\"505\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop4\",{\"_index\":309,\"name\":{\"506\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop5\",{\"_index\":310,\"name\":{\"507\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop6\",{\"_index\":311,\"name\":{\"508\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop7\",{\"_index\":312,\"name\":{\"509\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop8\",{\"_index\":313,\"name\":{\"510\":{}},\"comment\":{}}],[\"enginedeck3trackplaypauseledstate\",{\"_index\":314,\"name\":{\"511\":{}},\"comment\":{}}],[\"enginedeck3tracksamplerate\",{\"_index\":315,\"name\":{\"512\":{}},\"comment\":{}}],[\"enginedeck3tracksonganalyzed\",{\"_index\":316,\"name\":{\"513\":{}},\"comment\":{}}],[\"enginedeck3tracksongloaded\",{\"_index\":317,\"name\":{\"514\":{}},\"comment\":{}}],[\"enginedeck3tracksongname\",{\"_index\":318,\"name\":{\"515\":{}},\"comment\":{}}],[\"enginedeck3tracksoundswitchguid\",{\"_index\":319,\"name\":{\"516\":{}},\"comment\":{}}],[\"enginedeck3tracktrackbytes\",{\"_index\":320,\"name\":{\"517\":{}},\"comment\":{}}],[\"enginedeck3tracktrackdata\",{\"_index\":321,\"name\":{\"518\":{}},\"comment\":{}}],[\"enginedeck3tracktracklength\",{\"_index\":322,\"name\":{\"519\":{}},\"comment\":{}}],[\"enginedeck3tracktrackname\",{\"_index\":323,\"name\":{\"520\":{}},\"comment\":{}}],[\"enginedeck3tracktracknetworkpath\",{\"_index\":324,\"name\":{\"521\":{}},\"comment\":{}}],[\"enginedeck3tracktrackuri\",{\"_index\":325,\"name\":{\"522\":{}},\"comment\":{}}],[\"enginedeck3tracktrackwasplayed\",{\"_index\":326,\"name\":{\"523\":{}},\"comment\":{}}],[\"enginedeck4currentbpm\",{\"_index\":327,\"name\":{\"524\":{}},\"comment\":{}}],[\"enginedeck4deckismaster\",{\"_index\":187,\"name\":{\"384\":{}},\"comment\":{}}],[\"enginedeck4externalmixervolume\",{\"_index\":328,\"name\":{\"525\":{}},\"comment\":{}}],[\"enginedeck4externalscratchwheeltouch\",{\"_index\":329,\"name\":{\"526\":{}},\"comment\":{}}],[\"enginedeck4padsview\",{\"_index\":330,\"name\":{\"527\":{}},\"comment\":{}}],[\"enginedeck4play\",{\"_index\":331,\"name\":{\"528\":{}},\"comment\":{}}],[\"enginedeck4playstate\",{\"_index\":332,\"name\":{\"529\":{}},\"comment\":{}}],[\"enginedeck4playstatepath\",{\"_index\":333,\"name\":{\"530\":{}},\"comment\":{}}],[\"enginedeck4speed\",{\"_index\":334,\"name\":{\"531\":{}},\"comment\":{}}],[\"enginedeck4speedneutral\",{\"_index\":335,\"name\":{\"532\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetdown\",{\"_index\":336,\"name\":{\"533\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetup\",{\"_index\":337,\"name\":{\"534\":{}},\"comment\":{}}],[\"enginedeck4speedrange\",{\"_index\":338,\"name\":{\"535\":{}},\"comment\":{}}],[\"enginedeck4speedstate\",{\"_index\":339,\"name\":{\"536\":{}},\"comment\":{}}],[\"enginedeck4syncmode\",{\"_index\":340,\"name\":{\"537\":{}},\"comment\":{}}],[\"enginedeck4syncplaystate\",{\"_index\":183,\"name\":{\"380\":{}},\"comment\":{}}],[\"enginedeck4trackartistname\",{\"_index\":341,\"name\":{\"538\":{}},\"comment\":{}}],[\"enginedeck4trackbleep\",{\"_index\":342,\"name\":{\"539\":{}},\"comment\":{}}],[\"enginedeck4trackcueposition\",{\"_index\":343,\"name\":{\"540\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentbpm\",{\"_index\":344,\"name\":{\"541\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentkeyindex\",{\"_index\":345,\"name\":{\"542\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopinposition\",{\"_index\":346,\"name\":{\"543\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopoutposition\",{\"_index\":347,\"name\":{\"544\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopsizeinbeats\",{\"_index\":348,\"name\":{\"545\":{}},\"comment\":{}}],[\"enginedeck4trackkeylock\",{\"_index\":349,\"name\":{\"546\":{}},\"comment\":{}}],[\"enginedeck4trackloopenablestate\",{\"_index\":350,\"name\":{\"547\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop1\",{\"_index\":351,\"name\":{\"548\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop2\",{\"_index\":352,\"name\":{\"549\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop3\",{\"_index\":353,\"name\":{\"550\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop4\",{\"_index\":354,\"name\":{\"551\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop5\",{\"_index\":355,\"name\":{\"552\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop6\",{\"_index\":356,\"name\":{\"553\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop7\",{\"_index\":357,\"name\":{\"554\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop8\",{\"_index\":358,\"name\":{\"555\":{}},\"comment\":{}}],[\"enginedeck4trackplaypauseledstate\",{\"_index\":359,\"name\":{\"556\":{}},\"comment\":{}}],[\"enginedeck4tracksamplerate\",{\"_index\":360,\"name\":{\"557\":{}},\"comment\":{}}],[\"enginedeck4tracksonganalyzed\",{\"_index\":361,\"name\":{\"558\":{}},\"comment\":{}}],[\"enginedeck4tracksongloaded\",{\"_index\":362,\"name\":{\"559\":{}},\"comment\":{}}],[\"enginedeck4tracksongname\",{\"_index\":363,\"name\":{\"560\":{}},\"comment\":{}}],[\"enginedeck4tracksoundswitchguid\",{\"_index\":364,\"name\":{\"561\":{}},\"comment\":{}}],[\"enginedeck4tracktrackbytes\",{\"_index\":365,\"name\":{\"562\":{}},\"comment\":{}}],[\"enginedeck4tracktrackdata\",{\"_index\":366,\"name\":{\"563\":{}},\"comment\":{}}],[\"enginedeck4tracktracklength\",{\"_index\":367,\"name\":{\"564\":{}},\"comment\":{}}],[\"enginedeck4tracktrackname\",{\"_index\":368,\"name\":{\"565\":{}},\"comment\":{}}],[\"enginedeck4tracktracknetworkpath\",{\"_index\":369,\"name\":{\"566\":{}},\"comment\":{}}],[\"enginedeck4tracktrackuri\",{\"_index\":370,\"name\":{\"567\":{}},\"comment\":{}}],[\"enginedeck4tracktrackwasplayed\",{\"_index\":371,\"name\":{\"568\":{}},\"comment\":{}}],[\"enginedeckcount\",{\"_index\":191,\"name\":{\"388\":{}},\"comment\":{}}],[\"enginemastermastertempo\",{\"_index\":190,\"name\":{\"387\":{}},\"comment\":{}}],[\"enginesyncnetworkmasterstatus\",{\"_index\":189,\"name\":{\"386\":{}},\"comment\":{}}],[\"enginesyncnetworksynctype\",{\"_index\":188,\"name\":{\"385\":{}},\"comment\":{}}],[\"explicitlyrics\",{\"_index\":428,\"name\":{\"629\":{}},\"comment\":{}}],[\"filebytes\",{\"_index\":394,\"name\":{\"593\":{}},\"comment\":{}}],[\"filename\",{\"_index\":390,\"name\":{\"589\":{}},\"comment\":{}}],[\"filetransfer\",{\"_index\":37,\"name\":{\"38\":{},\"324\":{},\"718\":{}},\"comment\":{}}],[\"filetransferdata\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"filetransferhandler\",{\"_index\":65,\"name\":{\"75\":{}},\"comment\":{}}],[\"filetransferprogress\",{\"_index\":32,\"name\":{\"33\":{}},\"comment\":{}}],[\"filetype\",{\"_index\":408,\"name\":{\"607\":{}},\"comment\":{}}],[\"findbroadcastips\",{\"_index\":23,\"name\":{\"23\":{}},\"comment\":{}}],[\"genre\",{\"_index\":398,\"name\":{\"597\":{}},\"comment\":{}}],[\"getbeatdata\",{\"_index\":109,\"name\":{\"231\":{},\"250\":{}},\"comment\":{}}],[\"getbuffer\",{\"_index\":499,\"name\":{\"766\":{}},\"comment\":{}}],[\"getconnectioninfo\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"getdevice\",{\"_index\":68,\"name\":{\"81\":{},\"98\":{},\"150\":{},\"190\":{},\"236\":{},\"280\":{},\"798\":{}},\"comment\":{}}],[\"getdevicelist\",{\"_index\":13,\"name\":{\"13\":{}},\"comment\":{}}],[\"getdevices\",{\"_index\":14,\"name\":{\"14\":{},\"82\":{},\"99\":{},\"151\":{},\"191\":{},\"237\":{},\"281\":{}},\"comment\":{}}],[\"getfile\",{\"_index\":43,\"name\":{\"48\":{}},\"comment\":{}}],[\"getservers\",{\"_index\":141,\"name\":{\"334\":{}},\"comment\":{}}],[\"getsource\",{\"_index\":529,\"name\":{\"834\":{}},\"comment\":{}}],[\"getsources\",{\"_index\":45,\"name\":{\"50\":{},\"835\":{}},\"comment\":{}}],[\"getstring\",{\"_index\":489,\"name\":{\"745\":{}},\"comment\":{}}],[\"gettempfilepath\",{\"_index\":481,\"name\":{\"736\":{}},\"comment\":{}}],[\"gettimestamp\",{\"_index\":127,\"name\":{\"294\":{}},\"comment\":{}}],[\"gettrackinfo\",{\"_index\":524,\"name\":{\"825\":{}},\"comment\":{}}],[\"guidecksdeckactivedeck\",{\"_index\":372,\"name\":{\"569\":{}},\"comment\":{}}],[\"handler\",{\"_index\":92,\"name\":{\"158\":{},\"245\":{}},\"comment\":{}}],[\"hasdevice\",{\"_index\":67,\"name\":{\"80\":{},\"97\":{},\"149\":{},\"189\":{},\"235\":{},\"279\":{},\"800\":{}},\"comment\":{}}],[\"haslooped\",{\"_index\":11,\"name\":{\"11\":{}},\"comment\":{}}],[\"hasnewinfo\",{\"_index\":513,\"name\":{\"801\":{}},\"comment\":{}}],[\"hasreceivedstate\",{\"_index\":93,\"name\":{\"159\":{}},\"comment\":{}}],[\"hassource\",{\"_index\":527,\"name\":{\"832\":{}},\"comment\":{}}],[\"hassourceanddb\",{\"_index\":528,\"name\":{\"833\":{}},\"comment\":{}}],[\"id\",{\"_index\":384,\"name\":{\"583\":{},\"700\":{}},\"comment\":{}}],[\"info\",{\"_index\":517,\"name\":{\"809\":{}},\"comment\":{}}],[\"interval\",{\"_index\":88,\"name\":{\"142\":{}},\"comment\":{}}],[\"ipaddress\",{\"_index\":460,\"name\":{\"702\":{}},\"comment\":{}}],[\"ipaddressport\",{\"_index\":461,\"name\":{\"703\":{}},\"comment\":{}}],[\"isanalyzed\",{\"_index\":409,\"name\":{\"608\":{}},\"comment\":{}}],[\"isavailable\",{\"_index\":40,\"name\":{\"44\":{},\"57\":{},\"611\":{}},\"comment\":{}}],[\"isbeatgridlocked\",{\"_index\":419,\"name\":{\"619\":{}},\"comment\":{}}],[\"isbufferedservice\",{\"_index\":56,\"name\":{\"64\":{},\"113\":{},\"171\":{},\"198\":{},\"249\":{},\"288\":{}},\"comment\":{}}],[\"iseof\",{\"_index\":478,\"name\":{\"733\":{},\"760\":{},\"784\":{}},\"comment\":{}}],[\"islittleendian\",{\"_index\":479,\"name\":{\"734\":{},\"761\":{},\"785\":{}},\"comment\":{}}],[\"ismetadataimported\",{\"_index\":415,\"name\":{\"615\":{}},\"comment\":{}}],[\"ismetadataofpackedtrackchanged\",{\"_index\":412,\"name\":{\"612\":{}},\"comment\":{}}],[\"isperfomancedataofpackedtrackchanged\",{\"_index\":413,\"name\":{\"613\":{}},\"comment\":{}}],[\"isplayed\",{\"_index\":407,\"name\":{\"606\":{}},\"comment\":{}}],[\"json\",{\"_index\":83,\"name\":{\"136\":{}},\"comment\":{}}],[\"key\",{\"_index\":403,\"name\":{\"602\":{}},\"comment\":{}}],[\"label\",{\"_index\":400,\"name\":{\"599\":{}},\"comment\":{}}],[\"length\",{\"_index\":386,\"name\":{\"585\":{}},\"comment\":{}}],[\"listen\",{\"_index\":15,\"name\":{\"15\":{},\"69\":{},\"119\":{},\"176\":{},\"214\":{},\"265\":{},\"309\":{}},\"comment\":{}}],[\"listen_port\",{\"_index\":145,\"name\":{\"338\":{}},\"comment\":{}}],[\"listen_timeout\",{\"_index\":146,\"name\":{\"339\":{}},\"comment\":{}}],[\"listenfordevices\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"littleendian\",{\"_index\":474,\"name\":{\"728\":{},\"755\":{},\"780\":{}},\"comment\":{}}],[\"local\",{\"_index\":448,\"name\":{\"670\":{}},\"comment\":{}}],[\"localtime\",{\"_index\":122,\"name\":{\"289\":{}},\"comment\":{}}],[\"location\",{\"_index\":432,\"name\":{\"637\":{},\"655\":{},\"663\":{},\"668\":{}},\"comment\":{}}],[\"logger\",{\"_index\":134,\"name\":{\"321\":{}},\"comment\":{}}],[\"login\",{\"_index\":152,\"name\":{\"345\":{}},\"comment\":{}}],[\"logout\",{\"_index\":153,\"name\":{\"346\":{}},\"comment\":{}}],[\"loops\",{\"_index\":425,\"name\":{\"626\":{}},\"comment\":{}}],[\"m_array\",{\"_index\":511,\"name\":{\"791\":{}},\"comment\":{}}],[\"m_str\",{\"_index\":510,\"name\":{\"790\":{}},\"comment\":{}}],[\"maxretries\",{\"_index\":465,\"name\":{\"711\":{}},\"comment\":{}}],[\"message\",{\"_index\":459,\"name\":{\"701\":{}},\"comment\":{}}],[\"message_timeout\",{\"_index\":147,\"name\":{\"340\":{}},\"comment\":{}}],[\"messagebuffer\",{\"_index\":76,\"name\":{\"117\":{}},\"comment\":{}}],[\"messagehandler\",{\"_index\":42,\"name\":{\"47\":{},\"128\":{},\"162\":{},\"201\":{},\"254\":{},\"298\":{}},\"comment\":{}}],[\"messageid\",{\"_index\":154,\"name\":{\"347\":{}},\"comment\":{}}],[\"mixer\",{\"_index\":81,\"name\":{\"131\":{},\"570\":{}},\"comment\":{}}],[\"mixerch1faderposition\",{\"_index\":373,\"name\":{\"572\":{}},\"comment\":{}}],[\"mixerch2faderposition\",{\"_index\":374,\"name\":{\"573\":{}},\"comment\":{}}],[\"mixerch3faderposition\",{\"_index\":375,\"name\":{\"574\":{}},\"comment\":{}}],[\"mixerch4faderposition\",{\"_index\":376,\"name\":{\"575\":{}},\"comment\":{}}],[\"mixerchannelassignment1\",{\"_index\":378,\"name\":{\"577\":{}},\"comment\":{}}],[\"mixerchannelassignment2\",{\"_index\":379,\"name\":{\"578\":{}},\"comment\":{}}],[\"mixerchannelassignment3\",{\"_index\":380,\"name\":{\"579\":{}},\"comment\":{}}],[\"mixerchannelassignment4\",{\"_index\":381,\"name\":{\"580\":{}},\"comment\":{}}],[\"mixercrossfaderposition\",{\"_index\":377,\"name\":{\"576\":{}},\"comment\":{}}],[\"mixernumberofchannels\",{\"_index\":382,\"name\":{\"581\":{}},\"comment\":{}}],[\"msgs\",{\"_index\":118,\"name\":{\"272\":{}},\"comment\":{}}],[\"name\",{\"_index\":38,\"name\":{\"41\":{},\"77\":{},\"88\":{},\"94\":{},\"106\":{},\"135\":{},\"145\":{},\"157\":{},\"186\":{},\"197\":{},\"229\":{},\"244\":{},\"276\":{},\"287\":{},\"636\":{},\"654\":{},\"658\":{},\"680\":{},\"687\":{},\"696\":{},\"705\":{}},\"comment\":{}}],[\"offset\",{\"_index\":29,\"name\":{\"30\":{}},\"comment\":{}}],[\"on\",{\"_index\":2,\"name\":{\"2\":{},\"40\":{},\"228\":{},\"243\":{},\"795\":{},\"816\":{},\"829\":{}},\"comment\":{}}],[\"options\",{\"_index\":7,\"name\":{\"7\":{},\"318\":{}},\"comment\":{}}],[\"origindatabaseuuid\",{\"_index\":420,\"name\":{\"620\":{}},\"comment\":{}}],[\"origintrackid\",{\"_index\":421,\"name\":{\"621\":{}},\"comment\":{}}],[\"overviewwaveformdata\",{\"_index\":423,\"name\":{\"623\":{}},\"comment\":{}}],[\"parent\",{\"_index\":3,\"name\":{\"3\":{},\"65\":{},\"79\":{},\"95\":{},\"114\":{},\"148\":{},\"172\":{},\"188\":{},\"210\":{},\"234\":{},\"261\":{},\"278\":{},\"305\":{},\"807\":{},\"817\":{},\"831\":{}},\"comment\":{}}],[\"parsedata\",{\"_index\":41,\"name\":{\"46\":{},\"127\":{},\"161\":{},\"200\":{},\"253\":{},\"296\":{}},\"comment\":{}}],[\"path\",{\"_index\":389,\"name\":{\"588\":{},\"638\":{},\"656\":{},\"672\":{}},\"comment\":{}}],[\"pdbimportkey\",{\"_index\":416,\"name\":{\"616\":{}},\"comment\":{}}],[\"peek\",{\"_index\":484,\"name\":{\"740\":{}},\"comment\":{}}],[\"peers\",{\"_index\":8,\"name\":{\"8\":{}},\"comment\":{}}],[\"percentcomplete\",{\"_index\":36,\"name\":{\"37\":{}},\"comment\":{}}],[\"playedindicator\",{\"_index\":414,\"name\":{\"614\":{}},\"comment\":{}}],[\"player\",{\"_index\":79,\"name\":{\"129\":{},\"353\":{}},\"comment\":{}}],[\"playerdeck\",{\"_index\":80,\"name\":{\"130\":{}},\"comment\":{}}],[\"playorder\",{\"_index\":385,\"name\":{\"584\":{}},\"comment\":{}}],[\"port\",{\"_index\":453,\"name\":{\"682\":{},\"698\":{},\"709\":{}},\"comment\":{}}],[\"pos\",{\"_index\":473,\"name\":{\"727\":{},\"754\":{},\"779\":{}},\"comment\":{}}],[\"prefix\",{\"_index\":430,\"name\":{\"633\":{},\"651\":{}},\"comment\":{}}],[\"querysource\",{\"_index\":522,\"name\":{\"823\":{}},\"comment\":{}}],[\"quickcues\",{\"_index\":424,\"name\":{\"625\":{}},\"comment\":{}}],[\"rating\",{\"_index\":404,\"name\":{\"603\":{}},\"comment\":{}}],[\"read\",{\"_index\":483,\"name\":{\"739\":{}},\"comment\":{}}],[\"readconnectioninfo\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"readcontext\",{\"_index\":482,\"name\":{\"737\":{}},\"comment\":{}}],[\"readfloat64\",{\"_index\":491,\"name\":{\"747\":{}},\"comment\":{}}],[\"readint32\",{\"_index\":494,\"name\":{\"750\":{}},\"comment\":{}}],[\"readnetworkstringutf16\",{\"_index\":490,\"name\":{\"746\":{}},\"comment\":{}}],[\"readremaining\",{\"_index\":485,\"name\":{\"741\":{}},\"comment\":{}}],[\"readremainingasnewarraybuffer\",{\"_index\":487,\"name\":{\"743\":{}},\"comment\":{}}],[\"readremainingasnewbuffer\",{\"_index\":486,\"name\":{\"742\":{}},\"comment\":{}}],[\"readremainingasnewctx\",{\"_index\":488,\"name\":{\"744\":{}},\"comment\":{}}],[\"readuint16\",{\"_index\":495,\"name\":{\"751\":{}},\"comment\":{}}],[\"readuint32\",{\"_index\":493,\"name\":{\"749\":{}},\"comment\":{}}],[\"readuint64\",{\"_index\":492,\"name\":{\"748\":{}},\"comment\":{}}],[\"readuint8\",{\"_index\":496,\"name\":{\"752\":{}},\"comment\":{}}],[\"receivedfile\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"remixer\",{\"_index\":402,\"name\":{\"601\":{}},\"comment\":{}}],[\"remote\",{\"_index\":447,\"name\":{\"666\":{}},\"comment\":{}}],[\"remotetime\",{\"_index\":123,\"name\":{\"290\":{}},\"comment\":{}}],[\"requestchunkrange\",{\"_index\":49,\"name\":{\"54\":{}},\"comment\":{}}],[\"requestfiletransferid\",{\"_index\":48,\"name\":{\"53\":{}},\"comment\":{}}],[\"requestsources\",{\"_index\":47,\"name\":{\"52\":{}},\"comment\":{}}],[\"requeststat\",{\"_index\":46,\"name\":{\"51\":{}},\"comment\":{}}],[\"resize\",{\"_index\":501,\"name\":{\"769\":{}},\"comment\":{}}],[\"rewind\",{\"_index\":480,\"name\":{\"735\":{},\"762\":{},\"786\":{}},\"comment\":{}}],[\"samplerate\",{\"_index\":435,\"name\":{\"641\":{}},\"comment\":{}}],[\"seek\",{\"_index\":476,\"name\":{\"731\":{},\"758\":{},\"782\":{}},\"comment\":{}}],[\"sendbeatinforequest\",{\"_index\":116,\"name\":{\"252\":{}},\"comment\":{}}],[\"sendnosourcesreply\",{\"_index\":51,\"name\":{\"56\":{}},\"comment\":{}}],[\"sendserviceannouncement\",{\"_index\":101,\"name\":{\"202\":{}},\"comment\":{}}],[\"sendstateresponse\",{\"_index\":95,\"name\":{\"163\":{}},\"comment\":{}}],[\"sendtimestampreply\",{\"_index\":102,\"name\":{\"203\":{}},\"comment\":{}}],[\"sendtimesyncquery\",{\"_index\":128,\"name\":{\"295\":{}},\"comment\":{}}],[\"sendtimesyncrequest\",{\"_index\":125,\"name\":{\"292\":{}},\"comment\":{}}],[\"server\",{\"_index\":53,\"name\":{\"60\":{},\"109\":{},\"167\":{},\"206\":{},\"257\":{},\"301\":{}},\"comment\":{}}],[\"serverinfo\",{\"_index\":54,\"name\":{\"61\":{},\"110\":{},\"168\":{},\"207\":{},\"258\":{},\"302\":{}},\"comment\":{}}],[\"servers\",{\"_index\":138,\"name\":{\"331\":{}},\"comment\":{}}],[\"serverstatus\",{\"_index\":55,\"name\":{\"62\":{},\"111\":{},\"169\":{},\"208\":{},\"259\":{},\"303\":{}},\"comment\":{}}],[\"service\",{\"_index\":26,\"name\":{\"26\":{},\"91\":{},\"104\":{},\"133\":{},\"221\":{},\"660\":{}},\"comment\":{}}],[\"servicedata\",{\"_index\":72,\"name\":{\"86\":{}},\"comment\":{}}],[\"servicehandler\",{\"_index\":74,\"name\":{\"92\":{}},\"comment\":{}}],[\"servicehandlers\",{\"_index\":130,\"name\":{\"315\":{}},\"comment\":{}}],[\"servicelist\",{\"_index\":469,\"name\":{\"716\":{}},\"comment\":{}}],[\"servicemessage\",{\"_index\":458,\"name\":{\"699\":{}},\"comment\":{}}],[\"services\",{\"_index\":132,\"name\":{\"319\":{},\"714\":{},\"810\":{}},\"comment\":{}}],[\"servicesannouncement\",{\"_index\":155,\"name\":{\"348\":{}},\"comment\":{}}],[\"servicesrequest\",{\"_index\":156,\"name\":{\"350\":{}},\"comment\":{}}],[\"set\",{\"_index\":477,\"name\":{\"732\":{},\"759\":{},\"783\":{}},\"comment\":{}}],[\"setbeatdata\",{\"_index\":110,\"name\":{\"232\":{}},\"comment\":{}}],[\"setsource\",{\"_index\":530,\"name\":{\"836\":{}},\"comment\":{}}],[\"setupservice\",{\"_index\":66,\"name\":{\"78\":{},\"103\":{},\"147\":{},\"187\":{},\"233\":{},\"277\":{}},\"comment\":{}}],[\"signaltransfercomplete\",{\"_index\":50,\"name\":{\"55\":{}},\"comment\":{}}],[\"size\",{\"_index\":28,\"name\":{\"29\":{},\"664\":{}},\"comment\":{}}],[\"sizeleft\",{\"_index\":33,\"name\":{\"34\":{},\"729\":{},\"756\":{},\"767\":{}},\"comment\":{}}],[\"sleep\",{\"_index\":509,\"name\":{\"787\":{}},\"comment\":{}}],[\"socket\",{\"_index\":4,\"name\":{\"4\":{},\"63\":{},\"89\":{},\"112\":{},\"170\":{},\"209\":{},\"260\":{},\"304\":{}},\"comment\":{}}],[\"software\",{\"_index\":451,\"name\":{\"678\":{},\"694\":{}},\"comment\":{}}],[\"songanalyzed\",{\"_index\":436,\"name\":{\"642\":{}},\"comment\":{}}],[\"songloaded\",{\"_index\":437,\"name\":{\"643\":{}},\"comment\":{}}],[\"songname\",{\"_index\":438,\"name\":{\"644\":{}},\"comment\":{}}],[\"soundswitchguid\",{\"_index\":439,\"name\":{\"645\":{}},\"comment\":{}}],[\"source\",{\"_index\":431,\"name\":{\"634\":{},\"652\":{},\"657\":{},\"676\":{},\"692\":{},\"707\":{}},\"comment\":{}}],[\"sources\",{\"_index\":30,\"name\":{\"31\":{},\"328\":{},\"827\":{}},\"comment\":{}}],[\"stagelinq\",{\"_index\":131,\"name\":{\"316\":{}},\"comment\":{}}],[\"stagelinqoptions\",{\"_index\":464,\"name\":{\"710\":{}},\"comment\":{}}],[\"startbeatinfo\",{\"_index\":115,\"name\":{\"251\":{}},\"comment\":{}}],[\"startservicelistener\",{\"_index\":71,\"name\":{\"85\":{},\"102\":{},\"154\":{},\"194\":{},\"240\":{},\"284\":{}},\"comment\":{}}],[\"state\",{\"_index\":87,\"name\":{\"141\":{}},\"comment\":{}}],[\"statedata\",{\"_index\":82,\"name\":{\"132\":{}},\"comment\":{}}],[\"statemap\",{\"_index\":91,\"name\":{\"155\":{},\"323\":{},\"717\":{}},\"comment\":{}}],[\"statemaphandler\",{\"_index\":89,\"name\":{\"143\":{}},\"comment\":{}}],[\"statenames\",{\"_index\":157,\"name\":{\"351\":{}},\"comment\":{}}],[\"status\",{\"_index\":137,\"name\":{\"329\":{}},\"comment\":{}}],[\"streamingflags\",{\"_index\":427,\"name\":{\"628\":{}},\"comment\":{}}],[\"streamingsource\",{\"_index\":417,\"name\":{\"617\":{}},\"comment\":{}}],[\"string\",{\"_index\":85,\"name\":{\"139\":{},\"792\":{}},\"comment\":{}}],[\"submessagetest\",{\"_index\":77,\"name\":{\"121\":{}},\"comment\":{}}],[\"subscribe\",{\"_index\":94,\"name\":{\"160\":{}},\"comment\":{}}],[\"subscribestate\",{\"_index\":96,\"name\":{\"164\":{}},\"comment\":{}}],[\"tell\",{\"_index\":475,\"name\":{\"730\":{},\"757\":{},\"781\":{}},\"comment\":{}}],[\"thirdpartysourceid\",{\"_index\":426,\"name\":{\"627\":{}},\"comment\":{}}],[\"timealive\",{\"_index\":100,\"name\":{\"199\":{}},\"comment\":{}}],[\"timeavg\",{\"_index\":129,\"name\":{\"297\":{}},\"comment\":{}}],[\"timelastplayed\",{\"_index\":406,\"name\":{\"605\":{}},\"comment\":{}}],[\"timeout\",{\"_index\":58,\"name\":{\"67\":{},\"116\":{},\"174\":{},\"212\":{},\"263\":{},\"307\":{}},\"comment\":{}}],[\"timestamp\",{\"_index\":119,\"name\":{\"273\":{},\"349\":{}},\"comment\":{}}],[\"timesync\",{\"_index\":135,\"name\":{\"326\":{}},\"comment\":{}}],[\"timesyncdata\",{\"_index\":117,\"name\":{\"271\":{}},\"comment\":{}}],[\"timesynchronization\",{\"_index\":121,\"name\":{\"285\":{},\"720\":{}},\"comment\":{}}],[\"timesynchronizationhandler\",{\"_index\":120,\"name\":{\"274\":{}},\"comment\":{}}],[\"timesyncmsghelper\",{\"_index\":126,\"name\":{\"293\":{}},\"comment\":{}}],[\"title\",{\"_index\":395,\"name\":{\"594\":{}},\"comment\":{}}],[\"token\",{\"_index\":463,\"name\":{\"708\":{}},\"comment\":{}}],[\"total\",{\"_index\":34,\"name\":{\"35\":{}},\"comment\":{}}],[\"track\",{\"_index\":383,\"name\":{\"582\":{}},\"comment\":{}}],[\"trackbytes\",{\"_index\":440,\"name\":{\"646\":{}},\"comment\":{}}],[\"trackdata\",{\"_index\":422,\"name\":{\"622\":{},\"631\":{}},\"comment\":{}}],[\"tracklength\",{\"_index\":441,\"name\":{\"647\":{}},\"comment\":{}}],[\"trackname\",{\"_index\":442,\"name\":{\"648\":{}},\"comment\":{}}],[\"tracknetworkpath\",{\"_index\":443,\"name\":{\"649\":{}},\"comment\":{}}],[\"trackuri\",{\"_index\":444,\"name\":{\"650\":{}},\"comment\":{}}],[\"txid\",{\"_index\":27,\"name\":{\"28\":{},\"43\":{},\"45\":{}},\"comment\":{}}],[\"type\",{\"_index\":84,\"name\":{\"138\":{},\"688\":{}},\"comment\":{}}],[\"unannounce\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"unit\",{\"_index\":455,\"name\":{\"685\":{}},\"comment\":{}}],[\"units\",{\"_index\":449,\"name\":{\"673\":{}},\"comment\":{}}],[\"updatedeviceinfo\",{\"_index\":514,\"name\":{\"802\":{}},\"comment\":{}}],[\"updatesources\",{\"_index\":44,\"name\":{\"49\":{}},\"comment\":{}}],[\"uri\",{\"_index\":418,\"name\":{\"618\":{}},\"comment\":{}}],[\"value\",{\"_index\":86,\"name\":{\"140\":{}},\"comment\":{}}],[\"version\",{\"_index\":452,\"name\":{\"681\":{},\"697\":{},\"706\":{}},\"comment\":{}}],[\"waitformessage\",{\"_index\":61,\"name\":{\"71\":{},\"123\":{},\"178\":{},\"216\":{},\"267\":{},\"311\":{}},\"comment\":{}}],[\"write\",{\"_index\":62,\"name\":{\"72\":{},\"124\":{},\"179\":{},\"217\":{},\"268\":{},\"312\":{},\"770\":{}},\"comment\":{}}],[\"writecontext\",{\"_index\":497,\"name\":{\"763\":{}},\"comment\":{}}],[\"writediscoverymessage\",{\"_index\":22,\"name\":{\"22\":{}},\"comment\":{}}],[\"writefixedsizedstring\",{\"_index\":502,\"name\":{\"771\":{}},\"comment\":{}}],[\"writeint32\",{\"_index\":506,\"name\":{\"775\":{}},\"comment\":{}}],[\"writenetworkstringutf16\",{\"_index\":503,\"name\":{\"772\":{}},\"comment\":{}}],[\"writeuint16\",{\"_index\":507,\"name\":{\"776\":{}},\"comment\":{}}],[\"writeuint32\",{\"_index\":505,\"name\":{\"774\":{}},\"comment\":{}}],[\"writeuint64\",{\"_index\":504,\"name\":{\"773\":{}},\"comment\":{}}],[\"writeuint8\",{\"_index\":508,\"name\":{\"777\":{}},\"comment\":{}}],[\"writewithlength\",{\"_index\":63,\"name\":{\"73\":{},\"125\":{},\"180\":{},\"218\":{},\"269\":{},\"313\":{}},\"comment\":{}}],[\"year\",{\"_index\":388,\"name\":{\"587\":{}},\"comment\":{}}],[\"zinflate\",{\"_index\":523,\"name\":{\"824\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = JSON.parse("{\"kinds\":{\"8\":\"Enumeration\",\"16\":\"Enumeration Member\",\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":128,\"name\":\"Discovery\",\"url\":\"classes/Discovery.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Discovery.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Discovery.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Discovery.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"classes/Discovery.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"broadcastAddress\",\"url\":\"classes/Discovery.html#broadcastAddress\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Discovery.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"peers\",\"url\":\"classes/Discovery.html#peers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Discovery.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"announceTimer\",\"url\":\"classes/Discovery.html#announceTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":1024,\"name\":\"hasLooped\",\"url\":\"classes/Discovery.html#hasLooped\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getConnectionInfo\",\"url\":\"classes/Discovery.html#getConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDeviceList\",\"url\":\"classes/Discovery.html#getDeviceList\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"getDevices\",\"url\":\"classes/Discovery.html#getDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listen\",\"url\":\"classes/Discovery.html#listen\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"announce\",\"url\":\"classes/Discovery.html#announce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"unannounce\",\"url\":\"classes/Discovery.html#unannounce\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"broadcastMessage\",\"url\":\"classes/Discovery.html#broadcastMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"listenForDevices\",\"url\":\"classes/Discovery.html#listenForDevices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"readConnectionInfo\",\"url\":\"classes/Discovery.html#readConnectionInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"createDiscoveryMessage\",\"url\":\"classes/Discovery.html#createDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"writeDiscoveryMessage\",\"url\":\"classes/Discovery.html#writeDiscoveryMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":2048,\"name\":\"findBroadcastIPs\",\"url\":\"classes/Discovery.html#findBroadcastIPs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Discovery\"},{\"kind\":256,\"name\":\"FileTransferData\",\"url\":\"interfaces/FileTransferData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/FileTransferData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/FileTransferData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"txid\",\"url\":\"interfaces/FileTransferData.html#txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/FileTransferData.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"offset\",\"url\":\"interfaces/FileTransferData.html#offset\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"interfaces/FileTransferData.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":1024,\"name\":\"data\",\"url\":\"interfaces/FileTransferData.html#data\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferData\"},{\"kind\":256,\"name\":\"FileTransferProgress\",\"url\":\"interfaces/FileTransferProgress.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"sizeLeft\",\"url\":\"interfaces/FileTransferProgress.html#sizeLeft\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"total\",\"url\":\"interfaces/FileTransferProgress.html#total\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"bytesDownloaded\",\"url\":\"interfaces/FileTransferProgress.html#bytesDownloaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":1024,\"name\":\"percentComplete\",\"url\":\"interfaces/FileTransferProgress.html#percentComplete\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FileTransferProgress\"},{\"kind\":128,\"name\":\"FileTransfer\",\"url\":\"classes/FileTransfer.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"#instances\",\"url\":\"classes/FileTransfer.html#_instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"emitter\",\"url\":\"classes/FileTransfer.html#emitter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"fileTransferListener\",\"url\":\"classes/FileTransfer.html#fileTransferListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getInstance\",\"url\":\"classes/FileTransfer.html#getInstance\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getInstances\",\"url\":\"classes/FileTransfer.html#getInstances\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/FileTransfer.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FileTransfer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/FileTransfer.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/FileTransfer.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"receivedFile\",\"url\":\"classes/FileTransfer.html#receivedFile\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#txid\",\"url\":\"classes/FileTransfer.html#_txid\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"#isAvailable\",\"url\":\"classes/FileTransfer.html#_isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":262144,\"name\":\"txid\",\"url\":\"classes/FileTransfer.html#txid\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/FileTransfer.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/FileTransfer.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getFile\",\"url\":\"classes/FileTransfer.html#getFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"updateSources\",\"url\":\"classes/FileTransfer.html#updateSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/FileTransfer.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestStat\",\"url\":\"classes/FileTransfer.html#requestStat\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestSources\",\"url\":\"classes/FileTransfer.html#requestSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestFileTransferId\",\"url\":\"classes/FileTransfer.html#requestFileTransferId\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"requestChunkRange\",\"url\":\"classes/FileTransfer.html#requestChunkRange\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"signalTransferComplete\",\"url\":\"classes/FileTransfer.html#signalTransferComplete\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"sendNoSourcesReply\",\"url\":\"classes/FileTransfer.html#sendNoSourcesReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"isAvailable\",\"url\":\"classes/FileTransfer.html#isAvailable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/FileTransfer.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/FileTransfer.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/FileTransfer.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/FileTransfer.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/FileTransfer.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/FileTransfer.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/FileTransfer.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/FileTransfer.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/FileTransfer.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/FileTransfer.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/FileTransfer.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/FileTransfer.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/FileTransfer.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"FileTransfer\"},{\"kind\":128,\"name\":\"Service\",\"url\":\"classes/Service.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/Service.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Service.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Service.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Service.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Service.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Service.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Service.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Service.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Service.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Service.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":1024,\"name\":\"messageBuffer\",\"url\":\"classes/Service.html#messageBuffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"startServer\",\"url\":\"classes/Service.html#startServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/Service.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/Service.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"subMessageTest\",\"url\":\"classes/Service.html#subMessageTest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"dataHandler\",\"url\":\"classes/Service.html#dataHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Service.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Service.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Service.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Service.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Service.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Service.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Service\"},{\"kind\":256,\"name\":\"StateData\",\"url\":\"interfaces/StateData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/StateData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/StateData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/StateData.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":1024,\"name\":\"json\",\"url\":\"interfaces/StateData.html#json\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/StateData.html#json.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateData.json\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/StateData.html#json.__type.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"string\",\"url\":\"interfaces/StateData.html#json.__type.string\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"value\",\"url\":\"interfaces/StateData.html#json.__type.value\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"state\",\"url\":\"interfaces/StateData.html#json.__type.state\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateData.json.__type\"},{\"kind\":1024,\"name\":\"interval\",\"url\":\"interfaces/StateData.html#interval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StateData\"},{\"kind\":128,\"name\":\"StateMap\",\"url\":\"classes/StateMap.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"emitter\",\"url\":\"classes/StateMap.html#emitter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"#instances\",\"url\":\"classes/StateMap.html#_instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"instanceListener\",\"url\":\"classes/StateMap.html#instanceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/StateMap.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StateMap.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/StateMap.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribe\",\"url\":\"classes/StateMap.html#subscribe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/StateMap.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/StateMap.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"sendStateResponse\",\"url\":\"classes/StateMap.html#sendStateResponse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"subscribeState\",\"url\":\"classes/StateMap.html#subscribeState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/StateMap.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/StateMap.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/StateMap.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/StateMap.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/StateMap.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/StateMap.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/StateMap.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/StateMap.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/StateMap.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/StateMap.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/StateMap.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/StateMap.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/StateMap.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"StateMap\"},{\"kind\":256,\"name\":\"DirectoryData\",\"url\":\"interfaces/DirectoryData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DirectoryData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DirectoryData\"},{\"kind\":128,\"name\":\"Directory\",\"url\":\"classes/Directory.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/Directory.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Directory.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Directory.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/Directory.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeAlive\",\"url\":\"classes/Directory.html#timeAlive\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/Directory.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/Directory.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendServiceAnnouncement\",\"url\":\"classes/Directory.html#sendServiceAnnouncement\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"sendTimeStampReply\",\"url\":\"classes/Directory.html#sendTimeStampReply\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/Directory.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Directory.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/Directory.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/Directory.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Directory.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/Directory.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/Directory.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/Directory.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/Directory.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/Directory.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/Directory.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/Directory.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"Directory\"},{\"kind\":256,\"name\":\"BeatData\",\"url\":\"interfaces/BeatData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/BeatData.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/BeatData.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"clock\",\"url\":\"interfaces/BeatData.html#clock\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deckCount\",\"url\":\"interfaces/BeatData.html#deckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":1024,\"name\":\"deck\",\"url\":\"interfaces/BeatData.html#deck\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BeatData\"},{\"kind\":128,\"name\":\"BeatInfo\",\"url\":\"classes/BeatInfo.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"#instances\",\"url\":\"classes/BeatInfo.html#_instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"emitter\",\"url\":\"classes/BeatInfo.html#emitter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"instanceListener\",\"url\":\"classes/BeatInfo.html#instanceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getInstances\",\"url\":\"classes/BeatInfo.html#getInstances\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/BeatInfo.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/BeatInfo.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/BeatInfo.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/BeatInfo.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"#userBeatCallback\",\"url\":\"classes/BeatInfo.html#_userBeatCallback\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"#userBeatOptions\",\"url\":\"classes/BeatInfo.html#_userBeatOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"#currentBeatData\",\"url\":\"classes/BeatInfo.html#_currentBeatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/BeatInfo.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"deleteDevice\",\"url\":\"classes/BeatInfo.html#deleteDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"getBeatData\",\"url\":\"classes/BeatInfo.html#getBeatData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"startBeatInfo\",\"url\":\"classes/BeatInfo.html#startBeatInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"sendBeatInfoRequest\",\"url\":\"classes/BeatInfo.html#sendBeatInfoRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/BeatInfo.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/BeatInfo.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/BeatInfo.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/BeatInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/BeatInfo.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/BeatInfo.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/BeatInfo.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/BeatInfo.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/BeatInfo.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/BeatInfo.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/BeatInfo.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/BeatInfo.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/BeatInfo.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/BeatInfo.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"BeatInfo\"},{\"kind\":256,\"name\":\"TimeSyncData\",\"url\":\"interfaces/TimeSyncData.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"msgs\",\"url\":\"interfaces/TimeSyncData.html#msgs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/TimeSyncData.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TimeSyncData\"},{\"kind\":128,\"name\":\"TimeSynchronization\",\"url\":\"classes/TimeSynchronization.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"instances\",\"url\":\"classes/TimeSynchronization.html#instances\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/TimeSynchronization.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/TimeSynchronization.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"isBufferedService\",\"url\":\"classes/TimeSynchronization.html#isBufferedService\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"localTime\",\"url\":\"classes/TimeSynchronization.html#localTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"remoteTime\",\"url\":\"classes/TimeSynchronization.html#remoteTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"avgTimeArray\",\"url\":\"classes/TimeSynchronization.html#avgTimeArray\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncRequest\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncRequest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeSyncMsgHelper\",\"url\":\"classes/TimeSynchronization.html#timeSyncMsgHelper\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"getTimeStamp\",\"url\":\"classes/TimeSynchronization.html#getTimeStamp\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"sendTimeSyncQuery\",\"url\":\"classes/TimeSynchronization.html#sendTimeSyncQuery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"parseData\",\"url\":\"classes/TimeSynchronization.html#parseData\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"timeAvg\",\"url\":\"classes/TimeSynchronization.html#timeAvg\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"messageHandler\",\"url\":\"classes/TimeSynchronization.html#messageHandler\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"classes/TimeSynchronization.html#device\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/TimeSynchronization.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"server\",\"url\":\"classes/TimeSynchronization.html#server\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"serverInfo\",\"url\":\"classes/TimeSynchronization.html#serverInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/TimeSynchronization.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":1024,\"name\":\"timeout\",\"url\":\"classes/TimeSynchronization.html#timeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"start\",\"url\":\"classes/TimeSynchronization.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/TimeSynchronization.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"waitForMessage\",\"url\":\"classes/TimeSynchronization.html#waitForMessage\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/TimeSynchronization.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"writeWithLength\",\"url\":\"classes/TimeSynchronization.html#writeWithLength\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":2048,\"name\":\"closeService\",\"url\":\"classes/TimeSynchronization.html#closeService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"TimeSynchronization\"},{\"kind\":128,\"name\":\"StageLinq\",\"url\":\"classes/StageLinq.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":1024,\"name\":\"options\",\"url\":\"classes/StageLinq.html#options\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/StageLinq.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"discovery\",\"url\":\"classes/StageLinq.html#discovery\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"sources\",\"url\":\"classes/StageLinq.html#sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"status\",\"url\":\"classes/StageLinq.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"directory\",\"url\":\"classes/StageLinq.html#directory\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"servers\",\"url\":\"classes/StageLinq.html#servers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"startServiceListener\",\"url\":\"classes/StageLinq.html#startServiceListener\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"addServer\",\"url\":\"classes/StageLinq.html#addServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"deleteServer\",\"url\":\"classes/StageLinq.html#deleteServer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"getServers\",\"url\":\"classes/StageLinq.html#getServers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"StageLinq\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/StageLinq.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":1024,\"name\":\"logger\",\"url\":\"classes/StageLinq.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"connect\",\"url\":\"classes/StageLinq.html#connect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":2048,\"name\":\"disconnect\",\"url\":\"classes/StageLinq.html#disconnect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"StageLinq\"},{\"kind\":128,\"name\":\"Track\",\"url\":\"classes/Track.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Track.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"#prefix\",\"url\":\"classes/Track.html#_prefix\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"#source\",\"url\":\"classes/Track.html#_source\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Track\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Track.html#_source.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Track.#source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Track.html#_source.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.#source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/Track.html#_source.__type.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.#source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/Track.html#_source.__type.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.#source.__type\"},{\"kind\":1024,\"name\":\"ArtistName\",\"url\":\"classes/Track.html#ArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"CurrentBPM\",\"url\":\"classes/Track.html#CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"SampleRate\",\"url\":\"classes/Track.html#SampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"SongAnalyzed\",\"url\":\"classes/Track.html#SongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"SongLoaded\",\"url\":\"classes/Track.html#SongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"SongName\",\"url\":\"classes/Track.html#SongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"SoundSwitchGUID\",\"url\":\"classes/Track.html#SoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"TrackBytes\",\"url\":\"classes/Track.html#TrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"TrackLength\",\"url\":\"classes/Track.html#TrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"TrackName\",\"url\":\"classes/Track.html#TrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"TrackNetworkPath\",\"url\":\"classes/Track.html#TrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":1024,\"name\":\"TrackURI\",\"url\":\"classes/Track.html#TrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":262144,\"name\":\"prefix\",\"url\":\"classes/Track.html#prefix\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":262144,\"name\":\"source\",\"url\":\"classes/Track.html#source\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"Track\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Track.html#source.source-1.__type-1\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"Track.source.source\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"classes/Track.html#source.source-1.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.source.source.__type\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"classes/Track.html#source.source-1.__type-1.location-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.source.source.__type\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"classes/Track.html#source.source-1.__type-1.path-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Track.source.source.__type\"},{\"kind\":256,\"name\":\"TrackDBEntry\",\"url\":\"interfaces/TrackDBEntry.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/TrackDBEntry.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"playOrder\",\"url\":\"interfaces/TrackDBEntry.html#playOrder\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"length\",\"url\":\"interfaces/TrackDBEntry.html#length\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"bpm\",\"url\":\"interfaces/TrackDBEntry.html#bpm\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"year\",\"url\":\"interfaces/TrackDBEntry.html#year\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/TrackDBEntry.html#path\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"filename\",\"url\":\"interfaces/TrackDBEntry.html#filename\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"bitrate\",\"url\":\"interfaces/TrackDBEntry.html#bitrate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"bpmAnalyzed\",\"url\":\"interfaces/TrackDBEntry.html#bpmAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"albumArtId\",\"url\":\"interfaces/TrackDBEntry.html#albumArtId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"fileBytes\",\"url\":\"interfaces/TrackDBEntry.html#fileBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"title\",\"url\":\"interfaces/TrackDBEntry.html#title\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"artist\",\"url\":\"interfaces/TrackDBEntry.html#artist\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"album\",\"url\":\"interfaces/TrackDBEntry.html#album\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"genre\",\"url\":\"interfaces/TrackDBEntry.html#genre\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"comment\",\"url\":\"interfaces/TrackDBEntry.html#comment\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/TrackDBEntry.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"composer\",\"url\":\"interfaces/TrackDBEntry.html#composer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"remixer\",\"url\":\"interfaces/TrackDBEntry.html#remixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"key\",\"url\":\"interfaces/TrackDBEntry.html#key\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"rating\",\"url\":\"interfaces/TrackDBEntry.html#rating\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"albumArt\",\"url\":\"interfaces/TrackDBEntry.html#albumArt\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"timeLastPlayed\",\"url\":\"interfaces/TrackDBEntry.html#timeLastPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isPlayed\",\"url\":\"interfaces/TrackDBEntry.html#isPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"fileType\",\"url\":\"interfaces/TrackDBEntry.html#fileType\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isAnalyzed\",\"url\":\"interfaces/TrackDBEntry.html#isAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"dateCreated\",\"url\":\"interfaces/TrackDBEntry.html#dateCreated\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"dateAdded\",\"url\":\"interfaces/TrackDBEntry.html#dateAdded\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isAvailable\",\"url\":\"interfaces/TrackDBEntry.html#isAvailable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isMetadataOfPackedTrackChanged\",\"url\":\"interfaces/TrackDBEntry.html#isMetadataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isPerfomanceDataOfPackedTrackChanged\",\"url\":\"interfaces/TrackDBEntry.html#isPerfomanceDataOfPackedTrackChanged\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"playedIndicator\",\"url\":\"interfaces/TrackDBEntry.html#playedIndicator\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isMetadataImported\",\"url\":\"interfaces/TrackDBEntry.html#isMetadataImported\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"pdbImportKey\",\"url\":\"interfaces/TrackDBEntry.html#pdbImportKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"streamingSource\",\"url\":\"interfaces/TrackDBEntry.html#streamingSource\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"uri\",\"url\":\"interfaces/TrackDBEntry.html#uri\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"isBeatGridLocked\",\"url\":\"interfaces/TrackDBEntry.html#isBeatGridLocked\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"originDatabaseUuid\",\"url\":\"interfaces/TrackDBEntry.html#originDatabaseUuid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"originTrackId\",\"url\":\"interfaces/TrackDBEntry.html#originTrackId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"trackData\",\"url\":\"interfaces/TrackDBEntry.html#trackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"overviewWaveFormData\",\"url\":\"interfaces/TrackDBEntry.html#overviewWaveFormData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"beatData\",\"url\":\"interfaces/TrackDBEntry.html#beatData\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"quickCues\",\"url\":\"interfaces/TrackDBEntry.html#quickCues\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"loops\",\"url\":\"interfaces/TrackDBEntry.html#loops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"thirdPartySourceId\",\"url\":\"interfaces/TrackDBEntry.html#thirdPartySourceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"streamingFlags\",\"url\":\"interfaces/TrackDBEntry.html#streamingFlags\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"explicitLyrics\",\"url\":\"interfaces/TrackDBEntry.html#explicitLyrics\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":1024,\"name\":\"activeOnLoadLoops\",\"url\":\"interfaces/TrackDBEntry.html#activeOnLoadLoops\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"TrackDBEntry\"},{\"kind\":32,\"name\":\"StateNames\",\"url\":\"variables/StateNames.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"StateNames\"},{\"kind\":1024,\"name\":\"player\",\"url\":\"variables/StateNames.html#__type.player\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.player.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.player\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDevice\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDevice\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerCurrentDeviceNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasSDCardConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasSDCardConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientLibrarianDevicesControllerHasUsbDeviceConnected\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesLayerB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesLayerB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayer\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorA\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorA\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesPlayerJogColorB\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesPlayerJogColorB\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor1B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor1B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor2B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor2B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor3B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor3B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4A\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4A\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationPlayerColor4B\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationPlayerColor4B\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"ClientPreferencesProfileApplicationSyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.ClientPreferencesProfileApplicationSyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncPlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncPlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4DeckIsMaster\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4DeckIsMaster\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkSyncType\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkSyncType\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineSyncNetworkMasterStatus\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineSyncNetworkMasterStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineMasterMasterTempo\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineMasterMasterTempo\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeckCount\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeckCount\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck1TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck1TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck2TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck2TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck3TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck3TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4CurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4CurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalMixerVolume\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalMixerVolume\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4ExternalScratchWheelTouch\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4ExternalScratchWheelTouch\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PadsView\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PadsView\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Play\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Play\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4PlayStatePath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4PlayStatePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4Speed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4Speed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedNeutral\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedNeutral\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetDown\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetDown\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedOffsetUp\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedOffsetUp\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedRange\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedRange\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SpeedState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SpeedState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4SyncMode\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4SyncMode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackArtistName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackArtistName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackBleep\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackBleep\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCuePosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCuePosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentBPM\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentBPM\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentKeyIndex\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentKeyIndex\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopInPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopInPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopOutPosition\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopOutPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackCurrentLoopSizeInBeats\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackCurrentLoopSizeInBeats\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackKeyLock\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackKeyLock\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopEnableState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopEnableState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop1\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop2\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop3\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop4\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop5\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop5\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop6\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop6\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop7\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop7\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackLoopQuickLoop8\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackLoopQuickLoop8\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackPlayPauseLEDState\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackPlayPauseLEDState\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSampleRate\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSampleRate\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongAnalyzed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongAnalyzed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongLoaded\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongLoaded\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSongName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSongName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackSoundSwitchGUID\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackSoundSwitchGUID\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackBytes\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackBytes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackData\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackData\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackLength\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackLength\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackName\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackName\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackNetworkPath\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackNetworkPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackURI\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackURI\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"EngineDeck4TrackTrackWasPlayed\",\"url\":\"variables/StateNames.html#__type.player.__type-2.EngineDeck4TrackTrackWasPlayed\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"GUIDecksDeckActiveDeck\",\"url\":\"variables/StateNames.html#__type.player.__type-2.GUIDecksDeckActiveDeck\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.player.__type\"},{\"kind\":1024,\"name\":\"mixer\",\"url\":\"variables/StateNames.html#__type.mixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"StateNames.__type.mixer\"},{\"kind\":1024,\"name\":\"MixerCH1faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH1faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH2faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH2faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH3faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH3faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCH4faderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCH4faderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerCrossfaderPosition\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerCrossfaderPosition\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment1\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment2\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment3\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment3\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerChannelAssignment4\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerChannelAssignment4\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":1024,\"name\":\"MixerNumberOfChannels\",\"url\":\"variables/StateNames.html#__type.mixer.__type-1.MixerNumberOfChannels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"StateNames.__type.mixer.__type\"},{\"kind\":256,\"name\":\"Source\",\"url\":\"interfaces/Source.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/Source.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/Source.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"service\",\"url\":\"interfaces/Source.html#service\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":1024,\"name\":\"database\",\"url\":\"interfaces/Source.html#database\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Source\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database\"},{\"kind\":1024,\"name\":\"size\",\"url\":\"interfaces/Source.html#database.__type.size\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":1024,\"name\":\"remote\",\"url\":\"interfaces/Source.html#database.__type.remote\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.remote\"},{\"kind\":1024,\"name\":\"location\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.location\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"device\",\"url\":\"interfaces/Source.html#database.__type.remote.__type-2.device\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.remote.__type\"},{\"kind\":1024,\"name\":\"local\",\"url\":\"interfaces/Source.html#database.__type.local\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"Source.database.__type.local\"},{\"kind\":1024,\"name\":\"path\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.path\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":1024,\"name\":\"connection\",\"url\":\"interfaces/Source.html#database.__type.local.__type-1.connection\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Source.database.__type.local.__type\"},{\"kind\":32,\"name\":\"Units\",\"url\":\"variables/Units.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":256,\"name\":\"DiscoveryMessage\",\"url\":\"interfaces/DiscoveryMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessage.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessage.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/DiscoveryMessage.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/DiscoveryMessage.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"DiscoveryMessage.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessage.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DiscoveryMessage.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessage.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessage\"},{\"kind\":256,\"name\":\"ConnectionInfo\",\"url\":\"interfaces/ConnectionInfo.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/ConnectionInfo.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"unit\",\"url\":\"interfaces/ConnectionInfo.html#unit\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.unit\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.name-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.type\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"decks\",\"url\":\"interfaces/ConnectionInfo.html#unit.__type-1.decks\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.unit.__type\"},{\"kind\":1024,\"name\":\"addressPort\",\"url\":\"interfaces/ConnectionInfo.html#addressPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/ConnectionInfo.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/ConnectionInfo.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"interfaces/ConnectionInfo.html#action\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":1024,\"name\":\"software\",\"url\":\"interfaces/ConnectionInfo.html#software\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/ConnectionInfo.html#software.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"ConnectionInfo.software\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/ConnectionInfo.html#software.__type.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"ConnectionInfo.software.__type\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ConnectionInfo.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ConnectionInfo\"},{\"kind\":256,\"name\":\"ServiceMessage\",\"url\":\"interfaces/ServiceMessage.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ServiceMessage.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":1024,\"name\":\"message\",\"url\":\"interfaces/ServiceMessage.html#message\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ServiceMessage\"},{\"kind\":4194304,\"name\":\"IpAddress\",\"url\":\"types/IpAddress.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"IpAddressPort\",\"url\":\"types/IpAddressPort.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":256,\"name\":\"DiscoveryMessageOptions\",\"url\":\"interfaces/DiscoveryMessageOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/DiscoveryMessageOptions.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"version\",\"url\":\"interfaces/DiscoveryMessageOptions.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"source\",\"url\":\"interfaces/DiscoveryMessageOptions.html#source\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"interfaces/DiscoveryMessageOptions.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryMessageOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryMessageOptions\"},{\"kind\":256,\"name\":\"StageLinqOptions\",\"url\":\"interfaces/StageLinqOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"kind\":1024,\"name\":\"maxRetries\",\"url\":\"interfaces/StageLinqOptions.html#maxRetries\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"actingAs\",\"url\":\"interfaces/StageLinqOptions.html#actingAs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"downloadDbSources\",\"url\":\"interfaces/StageLinqOptions.html#downloadDbSources\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"interfaces/StageLinqOptions.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":1024,\"name\":\"connectToMixer\",\"url\":\"interfaces/StageLinqOptions.html#connectToMixer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"StageLinqOptions\"},{\"kind\":8,\"name\":\"ServiceList\",\"url\":\"enums/ServiceList.html\",\"classes\":\"tsd-kind-enum\"},{\"kind\":16,\"name\":\"StateMap\",\"url\":\"enums/ServiceList.html#StateMap\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"FileTransfer\",\"url\":\"enums/ServiceList.html#FileTransfer\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"BeatInfo\",\"url\":\"enums/ServiceList.html#BeatInfo\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"TimeSynchronization\",\"url\":\"enums/ServiceList.html#TimeSynchronization\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":16,\"name\":\"Directory\",\"url\":\"enums/ServiceList.html#Directory\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"ServiceList\"},{\"kind\":32,\"name\":\"ActingAsDevice\",\"url\":\"variables/ActingAsDevice.html\",\"classes\":\"tsd-kind-variable\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/ActingAsDevice.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"ActingAsDevice\"},{\"kind\":128,\"name\":\"Context\",\"url\":\"classes/Context.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Context.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/Context.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/Context.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/Context.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/Context.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/Context.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/Context.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/Context.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/Context.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/Context.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/Context.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Context\"},{\"kind\":64,\"name\":\"getTempFilePath\",\"url\":\"functions/getTempFilePath.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"ReadContext\",\"url\":\"classes/ReadContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ReadContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"read\",\"url\":\"classes/ReadContext.html#read\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"peek\",\"url\":\"classes/ReadContext.html#peek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemaining\",\"url\":\"classes/ReadContext.html#readRemaining\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewArrayBuffer\",\"url\":\"classes/ReadContext.html#readRemainingAsNewArrayBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readRemainingAsNewCtx\",\"url\":\"classes/ReadContext.html#readRemainingAsNewCtx\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"getString\",\"url\":\"classes/ReadContext.html#getString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readNetworkStringUTF16\",\"url\":\"classes/ReadContext.html#readNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readFloat64\",\"url\":\"classes/ReadContext.html#readFloat64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt64\",\"url\":\"classes/ReadContext.html#readUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt32\",\"url\":\"classes/ReadContext.html#readUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readInt32\",\"url\":\"classes/ReadContext.html#readInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt16\",\"url\":\"classes/ReadContext.html#readUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"readUInt8\",\"url\":\"classes/ReadContext.html#readUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/ReadContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/ReadContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/ReadContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/ReadContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/ReadContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/ReadContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/ReadContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/ReadContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/ReadContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/ReadContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"ReadContext\"},{\"kind\":128,\"name\":\"WriteContext\",\"url\":\"classes/WriteContext.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/WriteContext.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"autoGrow\",\"url\":\"classes/WriteContext.html#autoGrow\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"getBuffer\",\"url\":\"classes/WriteContext.html#getBuffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"sizeLeft\",\"url\":\"classes/WriteContext.html#sizeLeft\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"checkSize\",\"url\":\"classes/WriteContext.html#checkSize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"resize\",\"url\":\"classes/WriteContext.html#resize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"write\",\"url\":\"classes/WriteContext.html#write\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeFixedSizedString\",\"url\":\"classes/WriteContext.html#writeFixedSizedString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeNetworkStringUTF16\",\"url\":\"classes/WriteContext.html#writeNetworkStringUTF16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt64\",\"url\":\"classes/WriteContext.html#writeUInt64\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt32\",\"url\":\"classes/WriteContext.html#writeUInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeInt32\",\"url\":\"classes/WriteContext.html#writeInt32\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt16\",\"url\":\"classes/WriteContext.html#writeUInt16\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"writeUInt8\",\"url\":\"classes/WriteContext.html#writeUInt8\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"buffer\",\"url\":\"classes/WriteContext.html#buffer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"pos\",\"url\":\"classes/WriteContext.html#pos\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":1024,\"name\":\"littleEndian\",\"url\":\"classes/WriteContext.html#littleEndian\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"tell\",\"url\":\"classes/WriteContext.html#tell\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"seek\",\"url\":\"classes/WriteContext.html#seek\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"set\",\"url\":\"classes/WriteContext.html#set\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isEOF\",\"url\":\"classes/WriteContext.html#isEOF\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"isLittleEndian\",\"url\":\"classes/WriteContext.html#isLittleEndian\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":2048,\"name\":\"rewind\",\"url\":\"classes/WriteContext.html#rewind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"WriteContext\"},{\"kind\":64,\"name\":\"sleep\",\"url\":\"functions/sleep.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"DeviceId\",\"url\":\"classes/DeviceId.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DeviceId.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_str\",\"url\":\"classes/DeviceId.html#m_str\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":1024,\"name\":\"m_array\",\"url\":\"classes/DeviceId.html#m_array\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-protected\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"string\",\"url\":\"classes/DeviceId.html#string\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":262144,\"name\":\"array\",\"url\":\"classes/DeviceId.html#array\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"DeviceId\"},{\"kind\":128,\"name\":\"Devices\",\"url\":\"classes/Devices.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Devices.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":1024,\"name\":\"#devices\",\"url\":\"classes/Devices.html#_devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addDevice\",\"url\":\"classes/Devices.html#addDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Devices.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"device\",\"url\":\"classes/Devices.html#device\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasDevice\",\"url\":\"classes/Devices.html#hasDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"hasNewInfo\",\"url\":\"classes/Devices.html#hasNewInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"updateDeviceInfo\",\"url\":\"classes/Devices.html#updateDeviceInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Devices.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Devices.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Devices\"},{\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"info\",\"url\":\"classes/Device.html#info\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":1024,\"name\":\"services\",\"url\":\"classes/Device.html#services\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deckCount\",\"url\":\"classes/Device.html#deckCount\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"addService\",\"url\":\"classes/Device.html#addService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":2048,\"name\":\"deleteService\",\"url\":\"classes/Device.html#deleteService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"kind\":128,\"name\":\"DbConnection\",\"url\":\"classes/DbConnection.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/DbConnection.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"db\",\"url\":\"classes/DbConnection.html#db\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":1024,\"name\":\"dbPath\",\"url\":\"classes/DbConnection.html#dbPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"querySource\",\"url\":\"classes/DbConnection.html#querySource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"zInflate\",\"url\":\"classes/DbConnection.html#zInflate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"getTrackInfo\",\"url\":\"classes/DbConnection.html#getTrackInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":2048,\"name\":\"close\",\"url\":\"classes/DbConnection.html#close\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"DbConnection\"},{\"kind\":128,\"name\":\"Sources\",\"url\":\"classes/Sources.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Sources.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Sources.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":1024,\"name\":\"_sources\",\"url\":\"classes/Sources.html#_sources\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSource\",\"url\":\"classes/Sources.html#hasSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"hasSourceAndDB\",\"url\":\"classes/Sources.html#hasSourceAndDB\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSource\",\"url\":\"classes/Sources.html#getSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"getSources\",\"url\":\"classes/Sources.html#getSources\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"setSource\",\"url\":\"classes/Sources.html#setSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"deleteSource\",\"url\":\"classes/Sources.html#deleteSource\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadFile\",\"url\":\"classes/Sources.html#downloadFile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"},{\"kind\":2048,\"name\":\"downloadDb\",\"url\":\"classes/Sources.html#downloadDb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Sources\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,56.671]],[\"comment/0\",[]],[\"name/1\",[1,37.8]],[\"comment/1\",[]],[\"name/2\",[2,48.787]],[\"comment/2\",[]],[\"name/3\",[3,45.685]],[\"comment/3\",[]],[\"name/4\",[4,56.671]],[\"comment/4\",[]],[\"name/5\",[5,61.779]],[\"comment/5\",[]],[\"name/6\",[6,56.671]],[\"comment/6\",[]],[\"name/7\",[7,61.779]],[\"comment/7\",[]],[\"name/8\",[8,37.212]],[\"comment/8\",[]],[\"name/9\",[9,61.779]],[\"comment/9\",[]],[\"name/10\",[10,61.779]],[\"comment/10\",[]],[\"name/11\",[11,61.779]],[\"comment/11\",[]],[\"name/12\",[12,61.779]],[\"comment/12\",[]],[\"name/13\",[13,61.779]],[\"comment/13\",[]],[\"name/14\",[14,61.779]],[\"comment/14\",[]],[\"name/15\",[15,61.779]],[\"comment/15\",[]],[\"name/16\",[16,61.779]],[\"comment/16\",[]],[\"name/17\",[17,61.779]],[\"comment/17\",[]],[\"name/18\",[18,61.779]],[\"comment/18\",[]],[\"name/19\",[19,61.779]],[\"comment/19\",[]],[\"name/20\",[20,61.779]],[\"comment/20\",[]],[\"name/21\",[21,61.779]],[\"comment/21\",[]],[\"name/22\",[22,61.779]],[\"comment/22\",[]],[\"name/23\",[23,61.779]],[\"comment/23\",[]],[\"name/24\",[24,48.787]],[\"comment/24\",[]],[\"name/25\",[8,37.212]],[\"comment/25\",[]],[\"name/26\",[25,53.306]],[\"comment/26\",[]],[\"name/27\",[26,56.671]],[\"comment/27\",[]],[\"name/28\",[27,61.779]],[\"comment/28\",[]],[\"name/29\",[28,53.306]],[\"comment/29\",[]],[\"name/30\",[29,61.779]],[\"comment/30\",[]],[\"name/31\",[30,61.779]],[\"comment/31\",[]],[\"name/32\",[31,50.793]],[\"comment/32\",[]],[\"name/33\",[32,61.779]],[\"comment/33\",[]],[\"name/34\",[33,61.779]],[\"comment/34\",[]],[\"name/35\",[34,61.779]],[\"comment/35\",[]],[\"name/36\",[35,56.671]],[\"comment/36\",[]],[\"name/37\",[36,43.321]],[\"comment/37\",[]],[\"name/38\",[37,53.306]],[\"comment/38\",[]],[\"name/39\",[38,61.779]],[\"comment/39\",[]],[\"name/40\",[39,61.779]],[\"comment/40\",[]],[\"name/41\",[40,56.671]],[\"comment/41\",[]],[\"name/42\",[36,43.321]],[\"comment/42\",[]],[\"name/43\",[1,37.8]],[\"comment/43\",[]],[\"name/44\",[2,48.787]],[\"comment/44\",[]],[\"name/45\",[41,39.093]],[\"comment/45\",[]],[\"name/46\",[42,61.779]],[\"comment/46\",[]],[\"name/47\",[25,53.306]],[\"comment/47\",[]],[\"name/48\",[43,53.306]],[\"comment/48\",[]],[\"name/49\",[25,53.306]],[\"comment/49\",[]],[\"name/50\",[44,47.116]],[\"comment/50\",[]],[\"name/51\",[45,47.116]],[\"comment/51\",[]],[\"name/52\",[46,61.779]],[\"comment/52\",[]],[\"name/53\",[47,61.779]],[\"comment/53\",[]],[\"name/54\",[48,56.671]],[\"comment/54\",[]],[\"name/55\",[49,61.779]],[\"comment/55\",[]],[\"name/56\",[50,61.779]],[\"comment/56\",[]],[\"name/57\",[51,61.779]],[\"comment/57\",[]],[\"name/58\",[52,61.779]],[\"comment/58\",[]],[\"name/59\",[53,61.779]],[\"comment/59\",[]],[\"name/60\",[54,61.779]],[\"comment/60\",[]],[\"name/61\",[43,53.306]],[\"comment/61\",[]],[\"name/62\",[55,43.321]],[\"comment/62\",[]],[\"name/63\",[8,37.212]],[\"comment/63\",[]],[\"name/64\",[56,47.116]],[\"comment/64\",[]],[\"name/65\",[57,47.116]],[\"comment/65\",[]],[\"name/66\",[3,45.685]],[\"comment/66\",[]],[\"name/67\",[58,47.116]],[\"comment/67\",[]],[\"name/68\",[59,47.116]],[\"comment/68\",[]],[\"name/69\",[60,47.116]],[\"comment/69\",[]],[\"name/70\",[61,47.116]],[\"comment/70\",[]],[\"name/71\",[62,47.116]],[\"comment/71\",[]],[\"name/72\",[63,45.685]],[\"comment/72\",[]],[\"name/73\",[64,47.116]],[\"comment/73\",[]],[\"name/74\",[65,47.116]],[\"comment/74\",[]],[\"name/75\",[24,48.787]],[\"comment/75\",[]],[\"name/76\",[36,43.321]],[\"comment/76\",[]],[\"name/77\",[1,37.8]],[\"comment/77\",[]],[\"name/78\",[41,39.093]],[\"comment/78\",[]],[\"name/79\",[55,43.321]],[\"comment/79\",[]],[\"name/80\",[8,37.212]],[\"comment/80\",[]],[\"name/81\",[56,47.116]],[\"comment/81\",[]],[\"name/82\",[57,47.116]],[\"comment/82\",[]],[\"name/83\",[3,45.685]],[\"comment/83\",[]],[\"name/84\",[58,47.116]],[\"comment/84\",[]],[\"name/85\",[59,47.116]],[\"comment/85\",[]],[\"name/86\",[66,61.779]],[\"comment/86\",[]],[\"name/87\",[67,61.779]],[\"comment/87\",[]],[\"name/88\",[60,47.116]],[\"comment/88\",[]],[\"name/89\",[61,47.116]],[\"comment/89\",[]],[\"name/90\",[68,61.779]],[\"comment/90\",[]],[\"name/91\",[69,61.779]],[\"comment/91\",[]],[\"name/92\",[62,47.116]],[\"comment/92\",[]],[\"name/93\",[63,45.685]],[\"comment/93\",[]],[\"name/94\",[64,47.116]],[\"comment/94\",[]],[\"name/95\",[65,47.116]],[\"comment/95\",[]],[\"name/96\",[44,47.116]],[\"comment/96\",[]],[\"name/97\",[45,47.116]],[\"comment/97\",[]],[\"name/98\",[70,61.779]],[\"comment/98\",[]],[\"name/99\",[24,48.787]],[\"comment/99\",[]],[\"name/100\",[8,37.212]],[\"comment/100\",[]],[\"name/101\",[41,39.093]],[\"comment/101\",[]],[\"name/102\",[71,61.779]],[\"comment/102\",[]],[\"name/103\",[72,39.807]],[\"comment/103\",[]],[\"name/104\",[73,56.671]],[\"comment/104\",[]],[\"name/105\",[74,56.671]],[\"comment/105\",[]],[\"name/106\",[75,61.779]],[\"comment/106\",[]],[\"name/107\",[76,61.779]],[\"comment/107\",[]],[\"name/108\",[77,61.779]],[\"comment/108\",[]],[\"name/109\",[78,56.671]],[\"comment/109\",[]],[\"name/110\",[37,53.306]],[\"comment/110\",[]],[\"name/111\",[36,43.321]],[\"comment/111\",[]],[\"name/112\",[79,56.671]],[\"comment/112\",[]],[\"name/113\",[36,43.321]],[\"comment/113\",[]],[\"name/114\",[1,37.8]],[\"comment/114\",[]],[\"name/115\",[41,39.093]],[\"comment/115\",[]],[\"name/116\",[80,61.779]],[\"comment/116\",[]],[\"name/117\",[44,47.116]],[\"comment/117\",[]],[\"name/118\",[45,47.116]],[\"comment/118\",[]],[\"name/119\",[81,61.779]],[\"comment/119\",[]],[\"name/120\",[82,61.779]],[\"comment/120\",[]],[\"name/121\",[55,43.321]],[\"comment/121\",[]],[\"name/122\",[8,37.212]],[\"comment/122\",[]],[\"name/123\",[56,47.116]],[\"comment/123\",[]],[\"name/124\",[57,47.116]],[\"comment/124\",[]],[\"name/125\",[3,45.685]],[\"comment/125\",[]],[\"name/126\",[58,47.116]],[\"comment/126\",[]],[\"name/127\",[59,47.116]],[\"comment/127\",[]],[\"name/128\",[60,47.116]],[\"comment/128\",[]],[\"name/129\",[61,47.116]],[\"comment/129\",[]],[\"name/130\",[62,47.116]],[\"comment/130\",[]],[\"name/131\",[63,45.685]],[\"comment/131\",[]],[\"name/132\",[64,47.116]],[\"comment/132\",[]],[\"name/133\",[65,47.116]],[\"comment/133\",[]],[\"name/134\",[83,61.779]],[\"comment/134\",[]],[\"name/135\",[8,37.212]],[\"comment/135\",[]],[\"name/136\",[84,53.306]],[\"comment/136\",[]],[\"name/137\",[36,43.321]],[\"comment/137\",[]],[\"name/138\",[1,37.8]],[\"comment/138\",[]],[\"name/139\",[41,39.093]],[\"comment/139\",[]],[\"name/140\",[58,47.116]],[\"comment/140\",[]],[\"name/141\",[85,61.779]],[\"comment/141\",[]],[\"name/142\",[44,47.116]],[\"comment/142\",[]],[\"name/143\",[45,47.116]],[\"comment/143\",[]],[\"name/144\",[86,61.779]],[\"comment/144\",[]],[\"name/145\",[87,61.779]],[\"comment/145\",[]],[\"name/146\",[55,43.321]],[\"comment/146\",[]],[\"name/147\",[8,37.212]],[\"comment/147\",[]],[\"name/148\",[56,47.116]],[\"comment/148\",[]],[\"name/149\",[57,47.116]],[\"comment/149\",[]],[\"name/150\",[3,45.685]],[\"comment/150\",[]],[\"name/151\",[59,47.116]],[\"comment/151\",[]],[\"name/152\",[60,47.116]],[\"comment/152\",[]],[\"name/153\",[61,47.116]],[\"comment/153\",[]],[\"name/154\",[62,47.116]],[\"comment/154\",[]],[\"name/155\",[63,45.685]],[\"comment/155\",[]],[\"name/156\",[64,47.116]],[\"comment/156\",[]],[\"name/157\",[65,47.116]],[\"comment/157\",[]],[\"name/158\",[88,56.671]],[\"comment/158\",[]],[\"name/159\",[24,48.787]],[\"comment/159\",[]],[\"name/160\",[8,37.212]],[\"comment/160\",[]],[\"name/161\",[89,61.779]],[\"comment/161\",[]],[\"name/162\",[90,56.671]],[\"comment/162\",[]],[\"name/163\",[91,61.779]],[\"comment/163\",[]],[\"name/164\",[92,56.671]],[\"comment/164\",[]],[\"name/165\",[36,43.321]],[\"comment/165\",[]],[\"name/166\",[37,53.306]],[\"comment/166\",[]],[\"name/167\",[79,56.671]],[\"comment/167\",[]],[\"name/168\",[40,56.671]],[\"comment/168\",[]],[\"name/169\",[36,43.321]],[\"comment/169\",[]],[\"name/170\",[1,37.8]],[\"comment/170\",[]],[\"name/171\",[2,48.787]],[\"comment/171\",[]],[\"name/172\",[41,39.093]],[\"comment/172\",[]],[\"name/173\",[93,61.779]],[\"comment/173\",[]],[\"name/174\",[94,61.779]],[\"comment/174\",[]],[\"name/175\",[95,61.779]],[\"comment/175\",[]],[\"name/176\",[58,47.116]],[\"comment/176\",[]],[\"name/177\",[96,61.779]],[\"comment/177\",[]],[\"name/178\",[97,61.779]],[\"comment/178\",[]],[\"name/179\",[98,61.779]],[\"comment/179\",[]],[\"name/180\",[99,61.779]],[\"comment/180\",[]],[\"name/181\",[44,47.116]],[\"comment/181\",[]],[\"name/182\",[45,47.116]],[\"comment/182\",[]],[\"name/183\",[55,43.321]],[\"comment/183\",[]],[\"name/184\",[8,37.212]],[\"comment/184\",[]],[\"name/185\",[56,47.116]],[\"comment/185\",[]],[\"name/186\",[57,47.116]],[\"comment/186\",[]],[\"name/187\",[3,45.685]],[\"comment/187\",[]],[\"name/188\",[59,47.116]],[\"comment/188\",[]],[\"name/189\",[60,47.116]],[\"comment/189\",[]],[\"name/190\",[61,47.116]],[\"comment/190\",[]],[\"name/191\",[62,47.116]],[\"comment/191\",[]],[\"name/192\",[63,45.685]],[\"comment/192\",[]],[\"name/193\",[64,47.116]],[\"comment/193\",[]],[\"name/194\",[65,47.116]],[\"comment/194\",[]],[\"name/195\",[100,61.779]],[\"comment/195\",[]],[\"name/196\",[101,61.779]],[\"comment/196\",[]],[\"name/197\",[102,61.779]],[\"comment/197\",[]],[\"name/198\",[103,56.671]],[\"comment/198\",[]],[\"name/199\",[36,43.321]],[\"comment/199\",[]],[\"name/200\",[1,37.8]],[\"comment/200\",[]],[\"name/201\",[41,39.093]],[\"comment/201\",[]],[\"name/202\",[58,47.116]],[\"comment/202\",[]],[\"name/203\",[104,61.779]],[\"comment/203\",[]],[\"name/204\",[105,61.779]],[\"comment/204\",[]],[\"name/205\",[106,61.779]],[\"comment/205\",[]],[\"name/206\",[107,61.779]],[\"comment/206\",[]],[\"name/207\",[108,61.779]],[\"comment/207\",[]],[\"name/208\",[109,61.779]],[\"comment/208\",[]],[\"name/209\",[110,61.779]],[\"comment/209\",[]],[\"name/210\",[44,47.116]],[\"comment/210\",[]],[\"name/211\",[111,61.779]],[\"comment/211\",[]],[\"name/212\",[45,47.116]],[\"comment/212\",[]],[\"name/213\",[55,43.321]],[\"comment/213\",[]],[\"name/214\",[8,37.212]],[\"comment/214\",[]],[\"name/215\",[56,47.116]],[\"comment/215\",[]],[\"name/216\",[57,47.116]],[\"comment/216\",[]],[\"name/217\",[3,45.685]],[\"comment/217\",[]],[\"name/218\",[59,47.116]],[\"comment/218\",[]],[\"name/219\",[60,47.116]],[\"comment/219\",[]],[\"name/220\",[61,47.116]],[\"comment/220\",[]],[\"name/221\",[62,47.116]],[\"comment/221\",[]],[\"name/222\",[63,45.685]],[\"comment/222\",[]],[\"name/223\",[64,47.116]],[\"comment/223\",[]],[\"name/224\",[65,47.116]],[\"comment/224\",[]],[\"name/225\",[112,61.779]],[\"comment/225\",[]],[\"name/226\",[6,56.671]],[\"comment/226\",[]],[\"name/227\",[113,53.306]],[\"comment/227\",[]],[\"name/228\",[0,56.671]],[\"comment/228\",[]],[\"name/229\",[28,53.306]],[\"comment/229\",[]],[\"name/230\",[114,61.779]],[\"comment/230\",[]],[\"name/231\",[84,53.306]],[\"comment/231\",[]],[\"name/232\",[115,61.779]],[\"comment/232\",[]],[\"name/233\",[116,61.779]],[\"comment/233\",[]],[\"name/234\",[117,61.779]],[\"comment/234\",[]],[\"name/235\",[118,61.779]],[\"comment/235\",[]],[\"name/236\",[119,61.779]],[\"comment/236\",[]],[\"name/237\",[1,37.8]],[\"comment/237\",[]],[\"name/238\",[120,61.779]],[\"comment/238\",[]],[\"name/239\",[121,61.779]],[\"comment/239\",[]],[\"name/240\",[122,61.779]],[\"comment/240\",[]],[\"name/241\",[123,61.779]],[\"comment/241\",[]],[\"name/242\",[1,37.8]],[\"comment/242\",[]],[\"name/243\",[124,56.671]],[\"comment/243\",[]],[\"name/244\",[125,47.116]],[\"comment/244\",[]],[\"name/245\",[72,39.807]],[\"comment/245\",[]],[\"name/246\",[41,39.093]],[\"comment/246\",[]],[\"name/247\",[126,53.306]],[\"comment/247\",[]],[\"name/248\",[127,50.793]],[\"comment/248\",[]],[\"name/249\",[128,61.779]],[\"comment/249\",[]],[\"name/250\",[129,61.779]],[\"comment/250\",[]],[\"name/251\",[130,61.779]],[\"comment/251\",[]],[\"name/252\",[131,61.779]],[\"comment/252\",[]],[\"name/253\",[132,61.779]],[\"comment/253\",[]],[\"name/254\",[133,61.779]],[\"comment/254\",[]],[\"name/255\",[134,61.779]],[\"comment/255\",[]],[\"name/256\",[135,61.779]],[\"comment/256\",[]],[\"name/257\",[136,61.779]],[\"comment/257\",[]],[\"name/258\",[137,61.779]],[\"comment/258\",[]],[\"name/259\",[138,61.779]],[\"comment/259\",[]],[\"name/260\",[139,61.779]],[\"comment/260\",[]],[\"name/261\",[124,56.671]],[\"comment/261\",[]],[\"name/262\",[125,47.116]],[\"comment/262\",[]],[\"name/263\",[72,39.807]],[\"comment/263\",[]],[\"name/264\",[41,39.093]],[\"comment/264\",[]],[\"name/265\",[126,53.306]],[\"comment/265\",[]],[\"name/266\",[127,50.793]],[\"comment/266\",[]],[\"name/267\",[140,61.779]],[\"comment/267\",[]],[\"name/268\",[141,56.671]],[\"comment/268\",[]],[\"name/269\",[142,61.779]],[\"comment/269\",[]],[\"name/270\",[143,61.779]],[\"comment/270\",[]],[\"name/271\",[144,61.779]],[\"comment/271\",[]],[\"name/272\",[145,61.779]],[\"comment/272\",[]],[\"name/273\",[127,50.793]],[\"comment/273\",[]],[\"name/274\",[146,61.779]],[\"comment/274\",[]],[\"name/275\",[147,61.779]],[\"comment/275\",[]],[\"name/276\",[148,61.779]],[\"comment/276\",[]],[\"name/277\",[149,61.779]],[\"comment/277\",[]],[\"name/278\",[150,61.779]],[\"comment/278\",[]],[\"name/279\",[151,61.779]],[\"comment/279\",[]],[\"name/280\",[152,61.779]],[\"comment/280\",[]],[\"name/281\",[153,61.779]],[\"comment/281\",[]],[\"name/282\",[154,61.779]],[\"comment/282\",[]],[\"name/283\",[155,61.779]],[\"comment/283\",[]],[\"name/284\",[156,61.779]],[\"comment/284\",[]],[\"name/285\",[157,61.779]],[\"comment/285\",[]],[\"name/286\",[158,61.779]],[\"comment/286\",[]],[\"name/287\",[159,61.779]],[\"comment/287\",[]],[\"name/288\",[160,61.779]],[\"comment/288\",[]],[\"name/289\",[161,61.779]],[\"comment/289\",[]],[\"name/290\",[162,61.779]],[\"comment/290\",[]],[\"name/291\",[163,61.779]],[\"comment/291\",[]],[\"name/292\",[164,61.779]],[\"comment/292\",[]],[\"name/293\",[165,61.779]],[\"comment/293\",[]],[\"name/294\",[166,61.779]],[\"comment/294\",[]],[\"name/295\",[167,61.779]],[\"comment/295\",[]],[\"name/296\",[43,53.306]],[\"comment/296\",[]],[\"name/297\",[168,61.779]],[\"comment/297\",[]],[\"name/298\",[169,61.779]],[\"comment/298\",[]],[\"name/299\",[170,61.779]],[\"comment/299\",[]],[\"name/300\",[171,61.779]],[\"comment/300\",[]],[\"name/301\",[172,61.779]],[\"comment/301\",[]],[\"name/302\",[173,61.779]],[\"comment/302\",[]],[\"name/303\",[174,61.779]],[\"comment/303\",[]],[\"name/304\",[175,61.779]],[\"comment/304\",[]],[\"name/305\",[176,61.779]],[\"comment/305\",[]],[\"name/306\",[177,61.779]],[\"comment/306\",[]],[\"name/307\",[178,61.779]],[\"comment/307\",[]],[\"name/308\",[179,61.779]],[\"comment/308\",[]],[\"name/309\",[88,56.671]],[\"comment/309\",[]],[\"name/310\",[180,61.779]],[\"comment/310\",[]],[\"name/311\",[181,61.779]],[\"comment/311\",[]],[\"name/312\",[182,61.779]],[\"comment/312\",[]],[\"name/313\",[183,61.779]],[\"comment/313\",[]],[\"name/314\",[184,61.779]],[\"comment/314\",[]],[\"name/315\",[185,61.779]],[\"comment/315\",[]],[\"name/316\",[186,61.779]],[\"comment/316\",[]],[\"name/317\",[72,39.807]],[\"comment/317\",[]],[\"name/318\",[187,61.779]],[\"comment/318\",[]],[\"name/319\",[72,39.807]],[\"comment/319\",[]],[\"name/320\",[188,61.779]],[\"comment/320\",[]],[\"name/321\",[189,61.779]],[\"comment/321\",[]],[\"name/322\",[190,61.779]],[\"comment/322\",[]],[\"name/323\",[191,61.779]],[\"comment/323\",[]],[\"name/324\",[192,61.779]],[\"comment/324\",[]],[\"name/325\",[193,61.779]],[\"comment/325\",[]],[\"name/326\",[194,61.779]],[\"comment/326\",[]],[\"name/327\",[195,61.779]],[\"comment/327\",[]],[\"name/328\",[196,61.779]],[\"comment/328\",[]],[\"name/329\",[197,61.779]],[\"comment/329\",[]],[\"name/330\",[198,61.779]],[\"comment/330\",[]],[\"name/331\",[199,61.779]],[\"comment/331\",[]],[\"name/332\",[200,61.779]],[\"comment/332\",[]],[\"name/333\",[201,61.779]],[\"comment/333\",[]],[\"name/334\",[202,61.779]],[\"comment/334\",[]],[\"name/335\",[203,61.779]],[\"comment/335\",[]],[\"name/336\",[204,61.779]],[\"comment/336\",[]],[\"name/337\",[205,61.779]],[\"comment/337\",[]],[\"name/338\",[206,61.779]],[\"comment/338\",[]],[\"name/339\",[207,61.779]],[\"comment/339\",[]],[\"name/340\",[208,61.779]],[\"comment/340\",[]],[\"name/341\",[209,61.779]],[\"comment/341\",[]],[\"name/342\",[210,61.779]],[\"comment/342\",[]],[\"name/343\",[211,61.779]],[\"comment/343\",[]],[\"name/344\",[212,61.779]],[\"comment/344\",[]],[\"name/345\",[213,61.779]],[\"comment/345\",[]],[\"name/346\",[214,61.779]],[\"comment/346\",[]],[\"name/347\",[215,61.779]],[\"comment/347\",[]],[\"name/348\",[216,61.779]],[\"comment/348\",[]],[\"name/349\",[217,61.779]],[\"comment/349\",[]],[\"name/350\",[218,61.779]],[\"comment/350\",[]],[\"name/351\",[219,61.779]],[\"comment/351\",[]],[\"name/352\",[220,61.779]],[\"comment/352\",[]],[\"name/353\",[221,61.779]],[\"comment/353\",[]],[\"name/354\",[222,61.779]],[\"comment/354\",[]],[\"name/355\",[223,61.779]],[\"comment/355\",[]],[\"name/356\",[224,61.779]],[\"comment/356\",[]],[\"name/357\",[225,61.779]],[\"comment/357\",[]],[\"name/358\",[226,61.779]],[\"comment/358\",[]],[\"name/359\",[227,61.779]],[\"comment/359\",[]],[\"name/360\",[228,61.779]],[\"comment/360\",[]],[\"name/361\",[229,61.779]],[\"comment/361\",[]],[\"name/362\",[230,61.779]],[\"comment/362\",[]],[\"name/363\",[231,61.779]],[\"comment/363\",[]],[\"name/364\",[232,61.779]],[\"comment/364\",[]],[\"name/365\",[233,61.779]],[\"comment/365\",[]],[\"name/366\",[234,61.779]],[\"comment/366\",[]],[\"name/367\",[235,61.779]],[\"comment/367\",[]],[\"name/368\",[236,61.779]],[\"comment/368\",[]],[\"name/369\",[237,61.779]],[\"comment/369\",[]],[\"name/370\",[238,61.779]],[\"comment/370\",[]],[\"name/371\",[239,61.779]],[\"comment/371\",[]],[\"name/372\",[240,61.779]],[\"comment/372\",[]],[\"name/373\",[241,61.779]],[\"comment/373\",[]],[\"name/374\",[242,61.779]],[\"comment/374\",[]],[\"name/375\",[243,61.779]],[\"comment/375\",[]],[\"name/376\",[244,61.779]],[\"comment/376\",[]],[\"name/377\",[245,61.779]],[\"comment/377\",[]],[\"name/378\",[246,61.779]],[\"comment/378\",[]],[\"name/379\",[247,61.779]],[\"comment/379\",[]],[\"name/380\",[248,61.779]],[\"comment/380\",[]],[\"name/381\",[249,61.779]],[\"comment/381\",[]],[\"name/382\",[250,61.779]],[\"comment/382\",[]],[\"name/383\",[251,61.779]],[\"comment/383\",[]],[\"name/384\",[252,61.779]],[\"comment/384\",[]],[\"name/385\",[253,61.779]],[\"comment/385\",[]],[\"name/386\",[254,61.779]],[\"comment/386\",[]],[\"name/387\",[255,61.779]],[\"comment/387\",[]],[\"name/388\",[256,61.779]],[\"comment/388\",[]],[\"name/389\",[257,61.779]],[\"comment/389\",[]],[\"name/390\",[258,61.779]],[\"comment/390\",[]],[\"name/391\",[259,61.779]],[\"comment/391\",[]],[\"name/392\",[260,61.779]],[\"comment/392\",[]],[\"name/393\",[261,61.779]],[\"comment/393\",[]],[\"name/394\",[262,61.779]],[\"comment/394\",[]],[\"name/395\",[263,61.779]],[\"comment/395\",[]],[\"name/396\",[264,61.779]],[\"comment/396\",[]],[\"name/397\",[265,61.779]],[\"comment/397\",[]],[\"name/398\",[266,61.779]],[\"comment/398\",[]],[\"name/399\",[267,61.779]],[\"comment/399\",[]],[\"name/400\",[268,61.779]],[\"comment/400\",[]],[\"name/401\",[269,61.779]],[\"comment/401\",[]],[\"name/402\",[270,61.779]],[\"comment/402\",[]],[\"name/403\",[271,61.779]],[\"comment/403\",[]],[\"name/404\",[272,61.779]],[\"comment/404\",[]],[\"name/405\",[273,61.779]],[\"comment/405\",[]],[\"name/406\",[274,61.779]],[\"comment/406\",[]],[\"name/407\",[275,61.779]],[\"comment/407\",[]],[\"name/408\",[276,61.779]],[\"comment/408\",[]],[\"name/409\",[277,61.779]],[\"comment/409\",[]],[\"name/410\",[278,61.779]],[\"comment/410\",[]],[\"name/411\",[279,61.779]],[\"comment/411\",[]],[\"name/412\",[280,61.779]],[\"comment/412\",[]],[\"name/413\",[281,61.779]],[\"comment/413\",[]],[\"name/414\",[282,61.779]],[\"comment/414\",[]],[\"name/415\",[283,61.779]],[\"comment/415\",[]],[\"name/416\",[284,61.779]],[\"comment/416\",[]],[\"name/417\",[285,61.779]],[\"comment/417\",[]],[\"name/418\",[286,61.779]],[\"comment/418\",[]],[\"name/419\",[287,61.779]],[\"comment/419\",[]],[\"name/420\",[288,61.779]],[\"comment/420\",[]],[\"name/421\",[289,61.779]],[\"comment/421\",[]],[\"name/422\",[290,61.779]],[\"comment/422\",[]],[\"name/423\",[291,61.779]],[\"comment/423\",[]],[\"name/424\",[292,61.779]],[\"comment/424\",[]],[\"name/425\",[293,61.779]],[\"comment/425\",[]],[\"name/426\",[294,61.779]],[\"comment/426\",[]],[\"name/427\",[295,61.779]],[\"comment/427\",[]],[\"name/428\",[296,61.779]],[\"comment/428\",[]],[\"name/429\",[297,61.779]],[\"comment/429\",[]],[\"name/430\",[298,61.779]],[\"comment/430\",[]],[\"name/431\",[299,61.779]],[\"comment/431\",[]],[\"name/432\",[300,61.779]],[\"comment/432\",[]],[\"name/433\",[301,61.779]],[\"comment/433\",[]],[\"name/434\",[302,61.779]],[\"comment/434\",[]],[\"name/435\",[303,61.779]],[\"comment/435\",[]],[\"name/436\",[304,61.779]],[\"comment/436\",[]],[\"name/437\",[305,61.779]],[\"comment/437\",[]],[\"name/438\",[306,61.779]],[\"comment/438\",[]],[\"name/439\",[307,61.779]],[\"comment/439\",[]],[\"name/440\",[308,61.779]],[\"comment/440\",[]],[\"name/441\",[309,61.779]],[\"comment/441\",[]],[\"name/442\",[310,61.779]],[\"comment/442\",[]],[\"name/443\",[311,61.779]],[\"comment/443\",[]],[\"name/444\",[312,61.779]],[\"comment/444\",[]],[\"name/445\",[313,61.779]],[\"comment/445\",[]],[\"name/446\",[314,61.779]],[\"comment/446\",[]],[\"name/447\",[315,61.779]],[\"comment/447\",[]],[\"name/448\",[316,61.779]],[\"comment/448\",[]],[\"name/449\",[317,61.779]],[\"comment/449\",[]],[\"name/450\",[318,61.779]],[\"comment/450\",[]],[\"name/451\",[319,61.779]],[\"comment/451\",[]],[\"name/452\",[320,61.779]],[\"comment/452\",[]],[\"name/453\",[321,61.779]],[\"comment/453\",[]],[\"name/454\",[322,61.779]],[\"comment/454\",[]],[\"name/455\",[323,61.779]],[\"comment/455\",[]],[\"name/456\",[324,61.779]],[\"comment/456\",[]],[\"name/457\",[325,61.779]],[\"comment/457\",[]],[\"name/458\",[326,61.779]],[\"comment/458\",[]],[\"name/459\",[327,61.779]],[\"comment/459\",[]],[\"name/460\",[328,61.779]],[\"comment/460\",[]],[\"name/461\",[329,61.779]],[\"comment/461\",[]],[\"name/462\",[330,61.779]],[\"comment/462\",[]],[\"name/463\",[331,61.779]],[\"comment/463\",[]],[\"name/464\",[332,61.779]],[\"comment/464\",[]],[\"name/465\",[333,61.779]],[\"comment/465\",[]],[\"name/466\",[334,61.779]],[\"comment/466\",[]],[\"name/467\",[335,61.779]],[\"comment/467\",[]],[\"name/468\",[336,61.779]],[\"comment/468\",[]],[\"name/469\",[337,61.779]],[\"comment/469\",[]],[\"name/470\",[338,61.779]],[\"comment/470\",[]],[\"name/471\",[339,61.779]],[\"comment/471\",[]],[\"name/472\",[340,61.779]],[\"comment/472\",[]],[\"name/473\",[341,61.779]],[\"comment/473\",[]],[\"name/474\",[342,61.779]],[\"comment/474\",[]],[\"name/475\",[343,61.779]],[\"comment/475\",[]],[\"name/476\",[344,61.779]],[\"comment/476\",[]],[\"name/477\",[345,61.779]],[\"comment/477\",[]],[\"name/478\",[346,61.779]],[\"comment/478\",[]],[\"name/479\",[347,61.779]],[\"comment/479\",[]],[\"name/480\",[348,61.779]],[\"comment/480\",[]],[\"name/481\",[349,61.779]],[\"comment/481\",[]],[\"name/482\",[350,61.779]],[\"comment/482\",[]],[\"name/483\",[351,61.779]],[\"comment/483\",[]],[\"name/484\",[352,61.779]],[\"comment/484\",[]],[\"name/485\",[353,61.779]],[\"comment/485\",[]],[\"name/486\",[354,61.779]],[\"comment/486\",[]],[\"name/487\",[355,61.779]],[\"comment/487\",[]],[\"name/488\",[356,61.779]],[\"comment/488\",[]],[\"name/489\",[357,61.779]],[\"comment/489\",[]],[\"name/490\",[358,61.779]],[\"comment/490\",[]],[\"name/491\",[359,61.779]],[\"comment/491\",[]],[\"name/492\",[360,61.779]],[\"comment/492\",[]],[\"name/493\",[361,61.779]],[\"comment/493\",[]],[\"name/494\",[362,61.779]],[\"comment/494\",[]],[\"name/495\",[363,61.779]],[\"comment/495\",[]],[\"name/496\",[364,61.779]],[\"comment/496\",[]],[\"name/497\",[365,61.779]],[\"comment/497\",[]],[\"name/498\",[366,61.779]],[\"comment/498\",[]],[\"name/499\",[367,61.779]],[\"comment/499\",[]],[\"name/500\",[368,61.779]],[\"comment/500\",[]],[\"name/501\",[369,61.779]],[\"comment/501\",[]],[\"name/502\",[370,61.779]],[\"comment/502\",[]],[\"name/503\",[371,61.779]],[\"comment/503\",[]],[\"name/504\",[372,61.779]],[\"comment/504\",[]],[\"name/505\",[373,61.779]],[\"comment/505\",[]],[\"name/506\",[374,61.779]],[\"comment/506\",[]],[\"name/507\",[375,61.779]],[\"comment/507\",[]],[\"name/508\",[376,61.779]],[\"comment/508\",[]],[\"name/509\",[377,61.779]],[\"comment/509\",[]],[\"name/510\",[378,61.779]],[\"comment/510\",[]],[\"name/511\",[379,61.779]],[\"comment/511\",[]],[\"name/512\",[380,61.779]],[\"comment/512\",[]],[\"name/513\",[381,61.779]],[\"comment/513\",[]],[\"name/514\",[382,61.779]],[\"comment/514\",[]],[\"name/515\",[383,61.779]],[\"comment/515\",[]],[\"name/516\",[384,61.779]],[\"comment/516\",[]],[\"name/517\",[385,61.779]],[\"comment/517\",[]],[\"name/518\",[386,61.779]],[\"comment/518\",[]],[\"name/519\",[387,61.779]],[\"comment/519\",[]],[\"name/520\",[388,61.779]],[\"comment/520\",[]],[\"name/521\",[389,61.779]],[\"comment/521\",[]],[\"name/522\",[390,61.779]],[\"comment/522\",[]],[\"name/523\",[391,61.779]],[\"comment/523\",[]],[\"name/524\",[392,61.779]],[\"comment/524\",[]],[\"name/525\",[393,61.779]],[\"comment/525\",[]],[\"name/526\",[394,61.779]],[\"comment/526\",[]],[\"name/527\",[395,61.779]],[\"comment/527\",[]],[\"name/528\",[396,61.779]],[\"comment/528\",[]],[\"name/529\",[397,61.779]],[\"comment/529\",[]],[\"name/530\",[398,61.779]],[\"comment/530\",[]],[\"name/531\",[399,61.779]],[\"comment/531\",[]],[\"name/532\",[400,61.779]],[\"comment/532\",[]],[\"name/533\",[401,61.779]],[\"comment/533\",[]],[\"name/534\",[402,61.779]],[\"comment/534\",[]],[\"name/535\",[403,61.779]],[\"comment/535\",[]],[\"name/536\",[72,39.807]],[\"comment/536\",[]],[\"name/537\",[404,61.779]],[\"comment/537\",[]],[\"name/538\",[405,61.779]],[\"comment/538\",[]],[\"name/539\",[406,61.779]],[\"comment/539\",[]],[\"name/540\",[407,61.779]],[\"comment/540\",[]],[\"name/541\",[408,61.779]],[\"comment/541\",[]],[\"name/542\",[409,61.779]],[\"comment/542\",[]],[\"name/543\",[410,61.779]],[\"comment/543\",[]],[\"name/544\",[411,61.779]],[\"comment/544\",[]],[\"name/545\",[412,61.779]],[\"comment/545\",[]],[\"name/546\",[413,61.779]],[\"comment/546\",[]],[\"name/547\",[125,47.116]],[\"comment/547\",[]],[\"name/548\",[41,39.093]],[\"comment/548\",[]],[\"name/549\",[8,37.212]],[\"comment/549\",[]],[\"name/550\",[24,48.787]],[\"comment/550\",[]],[\"name/551\",[414,61.779]],[\"comment/551\",[]],[\"name/552\",[72,39.807]],[\"comment/552\",[]],[\"name/553\",[26,56.671]],[\"comment/553\",[]],[\"name/554\",[415,61.779]],[\"comment/554\",[]],[\"name/555\",[72,39.807]],[\"comment/555\",[]],[\"name/556\",[126,53.306]],[\"comment/556\",[]],[\"name/557\",[55,43.321]],[\"comment/557\",[]],[\"name/558\",[416,61.779]],[\"comment/558\",[]],[\"name/559\",[72,39.807]],[\"comment/559\",[]],[\"name/560\",[127,50.793]],[\"comment/560\",[]],[\"name/561\",[417,61.779]],[\"comment/561\",[]],[\"name/562\",[418,61.779]],[\"comment/562\",[]],[\"name/563\",[419,61.779]],[\"comment/563\",[]],[\"name/564\",[8,37.212]],[\"comment/564\",[]],[\"name/565\",[125,47.116]],[\"comment/565\",[]],[\"name/566\",[420,56.671]],[\"comment/566\",[]],[\"name/567\",[421,56.671]],[\"comment/567\",[]],[\"name/568\",[72,39.807]],[\"comment/568\",[]],[\"name/569\",[41,39.093]],[\"comment/569\",[]],[\"name/570\",[422,53.306]],[\"comment/570\",[]],[\"name/571\",[423,53.306]],[\"comment/571\",[]],[\"name/572\",[424,61.779]],[\"comment/572\",[]],[\"name/573\",[4,56.671]],[\"comment/573\",[]],[\"name/574\",[425,61.779]],[\"comment/574\",[]],[\"name/575\",[72,39.807]],[\"comment/575\",[]],[\"name/576\",[41,39.093]],[\"comment/576\",[]],[\"name/577\",[73,56.671]],[\"comment/577\",[]],[\"name/578\",[426,61.779]],[\"comment/578\",[]],[\"name/579\",[427,61.779]],[\"comment/579\",[]],[\"name/580\",[8,37.212]],[\"comment/580\",[]],[\"name/581\",[125,47.116]],[\"comment/581\",[]],[\"name/582\",[420,56.671]],[\"comment/582\",[]],[\"name/583\",[421,56.671]],[\"comment/583\",[]],[\"name/584\",[72,39.807]],[\"comment/584\",[]],[\"name/585\",[41,39.093]],[\"comment/585\",[]],[\"name/586\",[422,53.306]],[\"comment/586\",[]],[\"name/587\",[423,53.306]],[\"comment/587\",[]],[\"name/588\",[428,61.779]],[\"comment/588\",[]],[\"name/589\",[141,56.671]],[\"comment/589\",[]],[\"name/590\",[429,61.779]],[\"comment/590\",[]],[\"name/591\",[430,61.779]],[\"comment/591\",[]],[\"name/592\",[431,61.779]],[\"comment/592\",[]],[\"name/593\",[432,61.779]],[\"comment/593\",[]],[\"name/594\",[41,39.093]],[\"comment/594\",[]],[\"name/595\",[422,53.306]],[\"comment/595\",[]],[\"name/596\",[125,47.116]],[\"comment/596\",[]],[\"name/597\",[8,37.212]],[\"comment/597\",[]],[\"name/598\",[423,53.306]],[\"comment/598\",[]],[\"name/599\",[433,61.779]],[\"comment/599\",[]],[\"name/600\",[434,61.779]],[\"comment/600\",[]],[\"name/601\",[435,61.779]],[\"comment/601\",[]],[\"name/602\",[436,61.779]],[\"comment/602\",[]],[\"name/603\",[437,56.671]],[\"comment/603\",[]],[\"name/604\",[438,61.779]],[\"comment/604\",[]],[\"name/605\",[439,61.779]],[\"comment/605\",[]],[\"name/606\",[78,56.671]],[\"comment/606\",[]],[\"name/607\",[35,56.671]],[\"comment/607\",[]],[\"name/608\",[92,56.671]],[\"comment/608\",[]],[\"name/609\",[103,56.671]],[\"comment/609\",[]],[\"name/610\",[84,53.306]],[\"comment/610\",[]],[\"name/611\",[440,61.779]],[\"comment/611\",[]],[\"name/612\",[72,39.807]],[\"comment/612\",[]],[\"name/613\",[441,61.779]],[\"comment/613\",[]],[\"name/614\",[1,37.8]],[\"comment/614\",[]],[\"name/615\",[442,53.306]],[\"comment/615\",[]],[\"name/616\",[443,53.306]],[\"comment/616\",[]],[\"name/617\",[444,53.306]],[\"comment/617\",[]],[\"name/618\",[31,50.793]],[\"comment/618\",[]],[\"name/619\",[445,53.306]],[\"comment/619\",[]],[\"name/620\",[446,53.306]],[\"comment/620\",[]],[\"name/621\",[447,53.306]],[\"comment/621\",[]],[\"name/622\",[448,53.306]],[\"comment/622\",[]],[\"name/623\",[449,53.306]],[\"comment/623\",[]],[\"name/624\",[450,53.306]],[\"comment/624\",[]],[\"name/625\",[451,61.779]],[\"comment/625\",[]],[\"name/626\",[452,61.779]],[\"comment/626\",[]],[\"name/627\",[1,37.8]],[\"comment/627\",[]],[\"name/628\",[453,61.779]],[\"comment/628\",[]],[\"name/629\",[454,61.779]],[\"comment/629\",[]],[\"name/630\",[455,61.779]],[\"comment/630\",[]],[\"name/631\",[456,61.779]],[\"comment/631\",[]],[\"name/632\",[457,61.779]],[\"comment/632\",[]],[\"name/633\",[458,61.779]],[\"comment/633\",[]],[\"name/634\",[459,61.779]],[\"comment/634\",[]],[\"name/635\",[460,61.779]],[\"comment/635\",[]],[\"name/636\",[461,61.779]],[\"comment/636\",[]],[\"name/637\",[462,61.779]],[\"comment/637\",[]],[\"name/638\",[463,61.779]],[\"comment/638\",[]],[\"name/639\",[464,61.779]],[\"comment/639\",[]],[\"name/640\",[465,61.779]],[\"comment/640\",[]],[\"name/641\",[466,61.779]],[\"comment/641\",[]],[\"name/642\",[442,53.306]],[\"comment/642\",[]],[\"name/643\",[443,53.306]],[\"comment/643\",[]],[\"name/644\",[444,53.306]],[\"comment/644\",[]],[\"name/645\",[31,50.793]],[\"comment/645\",[]],[\"name/646\",[445,53.306]],[\"comment/646\",[]],[\"name/647\",[446,53.306]],[\"comment/647\",[]],[\"name/648\",[447,53.306]],[\"comment/648\",[]],[\"name/649\",[448,53.306]],[\"comment/649\",[]],[\"name/650\",[449,53.306]],[\"comment/650\",[]],[\"name/651\",[450,53.306]],[\"comment/651\",[]],[\"name/652\",[467,61.779]],[\"comment/652\",[]],[\"name/653\",[1,37.8]],[\"comment/653\",[]],[\"name/654\",[468,61.779]],[\"comment/654\",[]],[\"name/655\",[469,61.779]],[\"comment/655\",[]],[\"name/656\",[31,50.793]],[\"comment/656\",[]],[\"name/657\",[470,61.779]],[\"comment/657\",[]],[\"name/658\",[471,61.779]],[\"comment/658\",[]],[\"name/659\",[63,45.685]],[\"comment/659\",[]],[\"name/660\",[472,61.779]],[\"comment/660\",[]],[\"name/661\",[473,61.779]],[\"comment/661\",[]],[\"name/662\",[474,61.779]],[\"comment/662\",[]],[\"name/663\",[475,61.779]],[\"comment/663\",[]],[\"name/664\",[476,61.779]],[\"comment/664\",[]],[\"name/665\",[477,61.779]],[\"comment/665\",[]],[\"name/666\",[478,61.779]],[\"comment/666\",[]],[\"name/667\",[442,53.306]],[\"comment/667\",[]],[\"name/668\",[443,53.306]],[\"comment/668\",[]],[\"name/669\",[444,53.306]],[\"comment/669\",[]],[\"name/670\",[445,53.306]],[\"comment/670\",[]],[\"name/671\",[446,53.306]],[\"comment/671\",[]],[\"name/672\",[447,53.306]],[\"comment/672\",[]],[\"name/673\",[448,53.306]],[\"comment/673\",[]],[\"name/674\",[449,53.306]],[\"comment/674\",[]],[\"name/675\",[450,53.306]],[\"comment/675\",[]],[\"name/676\",[479,61.779]],[\"comment/676\",[]],[\"name/677\",[8,37.212]],[\"comment/677\",[]],[\"name/678\",[1,37.8]],[\"comment/678\",[]],[\"name/679\",[480,61.779]],[\"comment/679\",[]],[\"name/680\",[481,61.779]],[\"comment/680\",[]],[\"name/681\",[74,56.671]],[\"comment/681\",[]],[\"name/682\",[482,61.779]],[\"comment/682\",[]],[\"name/683\",[113,53.306]],[\"comment/683\",[]],[\"name/684\",[2,48.787]],[\"comment/684\",[]],[\"name/685\",[113,53.306]],[\"comment/685\",[]],[\"name/686\",[483,61.779]],[\"comment/686\",[]],[\"name/687\",[484,61.779]],[\"comment/687\",[]],[\"name/688\",[55,43.321]],[\"comment/688\",[]],[\"name/689\",[485,61.779]],[\"comment/689\",[]],[\"name/690\",[486,61.779]],[\"comment/690\",[]],[\"name/691\",[487,61.779]],[\"comment/691\",[]],[\"name/692\",[488,56.671]],[\"comment/692\",[]],[\"name/693\",[489,56.671]],[\"comment/693\",[]],[\"name/694\",[55,43.321]],[\"comment/694\",[]],[\"name/695\",[1,37.8]],[\"comment/695\",[]],[\"name/696\",[8,37.212]],[\"comment/696\",[]],[\"name/697\",[490,61.779]],[\"comment/697\",[]],[\"name/698\",[437,56.671]],[\"comment/698\",[]],[\"name/699\",[90,56.671]],[\"comment/699\",[]],[\"name/700\",[488,56.671]],[\"comment/700\",[]],[\"name/701\",[489,56.671]],[\"comment/701\",[]],[\"name/702\",[491,61.779]],[\"comment/702\",[]],[\"name/703\",[1,37.8]],[\"comment/703\",[]],[\"name/704\",[492,61.779]],[\"comment/704\",[]],[\"name/705\",[493,61.779]],[\"comment/705\",[]],[\"name/706\",[494,61.779]],[\"comment/706\",[]],[\"name/707\",[495,61.779]],[\"comment/707\",[]],[\"name/708\",[496,61.779]],[\"comment/708\",[]],[\"name/709\",[497,61.779]],[\"comment/709\",[]],[\"name/710\",[28,53.306]],[\"comment/710\",[]],[\"name/711\",[1,37.8]],[\"comment/711\",[]],[\"name/712\",[2,48.787]],[\"comment/712\",[]],[\"name/713\",[498,61.779]],[\"comment/713\",[]],[\"name/714\",[499,61.779]],[\"comment/714\",[]],[\"name/715\",[500,61.779]],[\"comment/715\",[]],[\"name/716\",[501,61.779]],[\"comment/716\",[]],[\"name/717\",[48,56.671]],[\"comment/717\",[]],[\"name/718\",[502,61.779]],[\"comment/718\",[]],[\"name/719\",[503,61.779]],[\"comment/719\",[]],[\"name/720\",[504,61.779]],[\"comment/720\",[]],[\"name/721\",[505,61.779]],[\"comment/721\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":72,\"name\":{\"103\":{},\"245\":{},\"263\":{},\"317\":{},\"319\":{},\"536\":{},\"552\":{},\"555\":{},\"559\":{},\"568\":{},\"575\":{},\"584\":{},\"612\":{}},\"comment\":{}}],[\"_sources\",{\"_index\":498,\"name\":{\"713\":{}},\"comment\":{}}],[\"actingas\",{\"_index\":435,\"name\":{\"601\":{}},\"comment\":{}}],[\"actingasdevice\",{\"_index\":440,\"name\":{\"611\":{}},\"comment\":{}}],[\"action\",{\"_index\":420,\"name\":{\"566\":{},\"582\":{}},\"comment\":{}}],[\"activeonloadloops\",{\"_index\":185,\"name\":{\"315\":{}},\"comment\":{}}],[\"adddevice\",{\"_index\":483,\"name\":{\"686\":{}},\"comment\":{}}],[\"address\",{\"_index\":4,\"name\":{\"4\":{},\"573\":{}},\"comment\":{}}],[\"addressport\",{\"_index\":427,\"name\":{\"579\":{}},\"comment\":{}}],[\"addserver\",{\"_index\":117,\"name\":{\"234\":{}},\"comment\":{}}],[\"addservice\",{\"_index\":488,\"name\":{\"692\":{},\"700\":{}},\"comment\":{}}],[\"album\",{\"_index\":153,\"name\":{\"281\":{}},\"comment\":{}}],[\"albumart\",{\"_index\":161,\"name\":{\"289\":{}},\"comment\":{}}],[\"albumartid\",{\"_index\":149,\"name\":{\"277\":{}},\"comment\":{}}],[\"announce\",{\"_index\":15,\"name\":{\"15\":{}},\"comment\":{}}],[\"announcetimer\",{\"_index\":9,\"name\":{\"9\":{}},\"comment\":{}}],[\"array\",{\"_index\":482,\"name\":{\"682\":{}},\"comment\":{}}],[\"artist\",{\"_index\":152,\"name\":{\"280\":{}},\"comment\":{}}],[\"artistname\",{\"_index\":128,\"name\":{\"249\":{}},\"comment\":{}}],[\"autogrow\",{\"_index\":468,\"name\":{\"654\":{}},\"comment\":{}}],[\"avgtimearray\",{\"_index\":106,\"name\":{\"205\":{}},\"comment\":{}}],[\"beatdata\",{\"_index\":88,\"name\":{\"158\":{},\"309\":{}},\"comment\":{}}],[\"beatinfo\",{\"_index\":92,\"name\":{\"164\":{},\"608\":{}},\"comment\":{}}],[\"bitrate\",{\"_index\":147,\"name\":{\"275\":{}},\"comment\":{}}],[\"bpm\",{\"_index\":144,\"name\":{\"271\":{}},\"comment\":{}}],[\"bpmanalyzed\",{\"_index\":148,\"name\":{\"276\":{}},\"comment\":{}}],[\"broadcastaddress\",{\"_index\":5,\"name\":{\"5\":{}},\"comment\":{}}],[\"broadcastmessage\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"buffer\",{\"_index\":442,\"name\":{\"615\":{},\"642\":{},\"667\":{}},\"comment\":{}}],[\"bytesdownloaded\",{\"_index\":33,\"name\":{\"34\":{}},\"comment\":{}}],[\"checksize\",{\"_index\":470,\"name\":{\"657\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevice\",{\"_index\":188,\"name\":{\"320\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollercurrentdevicenetworkpath\",{\"_index\":189,\"name\":{\"321\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhassdcardconnected\",{\"_index\":190,\"name\":{\"322\":{}},\"comment\":{}}],[\"clientlibrariandevicescontrollerhasusbdeviceconnected\",{\"_index\":191,\"name\":{\"323\":{}},\"comment\":{}}],[\"clientpreferenceslayera\",{\"_index\":192,\"name\":{\"324\":{}},\"comment\":{}}],[\"clientpreferenceslayerb\",{\"_index\":193,\"name\":{\"325\":{}},\"comment\":{}}],[\"clientpreferencesplayer\",{\"_index\":194,\"name\":{\"326\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolora\",{\"_index\":195,\"name\":{\"327\":{}},\"comment\":{}}],[\"clientpreferencesplayerjogcolorb\",{\"_index\":196,\"name\":{\"328\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1\",{\"_index\":197,\"name\":{\"329\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1a\",{\"_index\":198,\"name\":{\"330\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor1b\",{\"_index\":199,\"name\":{\"331\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2\",{\"_index\":200,\"name\":{\"332\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2a\",{\"_index\":201,\"name\":{\"333\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor2b\",{\"_index\":202,\"name\":{\"334\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3\",{\"_index\":203,\"name\":{\"335\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3a\",{\"_index\":204,\"name\":{\"336\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor3b\",{\"_index\":205,\"name\":{\"337\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4\",{\"_index\":206,\"name\":{\"338\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4a\",{\"_index\":207,\"name\":{\"339\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationplayercolor4b\",{\"_index\":208,\"name\":{\"340\":{}},\"comment\":{}}],[\"clientpreferencesprofileapplicationsyncmode\",{\"_index\":209,\"name\":{\"341\":{}},\"comment\":{}}],[\"clock\",{\"_index\":89,\"name\":{\"161\":{}},\"comment\":{}}],[\"close\",{\"_index\":497,\"name\":{\"709\":{}},\"comment\":{}}],[\"closeservice\",{\"_index\":65,\"name\":{\"74\":{},\"95\":{},\"133\":{},\"157\":{},\"194\":{},\"224\":{}},\"comment\":{}}],[\"comment\",{\"_index\":155,\"name\":{\"283\":{}},\"comment\":{}}],[\"composer\",{\"_index\":157,\"name\":{\"285\":{}},\"comment\":{}}],[\"connect\",{\"_index\":121,\"name\":{\"239\":{}},\"comment\":{}}],[\"connection\",{\"_index\":417,\"name\":{\"561\":{}},\"comment\":{}}],[\"connectioninfo\",{\"_index\":424,\"name\":{\"572\":{}},\"comment\":{}}],[\"connecttomixer\",{\"_index\":438,\"name\":{\"604\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"43\":{},\"77\":{},\"114\":{},\"138\":{},\"170\":{},\"200\":{},\"237\":{},\"242\":{},\"614\":{},\"627\":{},\"653\":{},\"678\":{},\"695\":{},\"703\":{},\"711\":{}},\"comment\":{}}],[\"context\",{\"_index\":441,\"name\":{\"613\":{}},\"comment\":{}}],[\"creatediscoverymessage\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"currentbeatdata\",{\"_index\":95,\"name\":{\"175\":{}},\"comment\":{}}],[\"currentbpm\",{\"_index\":129,\"name\":{\"250\":{}},\"comment\":{}}],[\"data\",{\"_index\":29,\"name\":{\"30\":{}},\"comment\":{}}],[\"database\",{\"_index\":414,\"name\":{\"551\":{}},\"comment\":{}}],[\"datahandler\",{\"_index\":69,\"name\":{\"91\":{}},\"comment\":{}}],[\"dateadded\",{\"_index\":167,\"name\":{\"295\":{}},\"comment\":{}}],[\"datecreated\",{\"_index\":166,\"name\":{\"294\":{}},\"comment\":{}}],[\"db\",{\"_index\":492,\"name\":{\"704\":{}},\"comment\":{}}],[\"dbconnection\",{\"_index\":491,\"name\":{\"702\":{}},\"comment\":{}}],[\"dbpath\",{\"_index\":493,\"name\":{\"705\":{}},\"comment\":{}}],[\"deck\",{\"_index\":91,\"name\":{\"163\":{}},\"comment\":{}}],[\"deckcount\",{\"_index\":90,\"name\":{\"162\":{},\"699\":{}},\"comment\":{}}],[\"decks\",{\"_index\":426,\"name\":{\"578\":{}},\"comment\":{}}],[\"deletedevice\",{\"_index\":96,\"name\":{\"177\":{}},\"comment\":{}}],[\"deleteserver\",{\"_index\":118,\"name\":{\"235\":{}},\"comment\":{}}],[\"deleteservice\",{\"_index\":489,\"name\":{\"693\":{},\"701\":{}},\"comment\":{}}],[\"deletesource\",{\"_index\":503,\"name\":{\"719\":{}},\"comment\":{}}],[\"device\",{\"_index\":55,\"name\":{\"62\":{},\"79\":{},\"121\":{},\"146\":{},\"183\":{},\"213\":{},\"557\":{},\"688\":{},\"694\":{}},\"comment\":{}}],[\"deviceid\",{\"_index\":8,\"name\":{\"8\":{},\"25\":{},\"63\":{},\"80\":{},\"100\":{},\"122\":{},\"135\":{},\"147\":{},\"160\":{},\"184\":{},\"214\":{},\"549\":{},\"564\":{},\"580\":{},\"597\":{},\"677\":{},\"696\":{}},\"comment\":{}}],[\"devices\",{\"_index\":113,\"name\":{\"227\":{},\"683\":{},\"685\":{}},\"comment\":{}}],[\"directory\",{\"_index\":84,\"name\":{\"136\":{},\"231\":{},\"610\":{}},\"comment\":{}}],[\"directorydata\",{\"_index\":83,\"name\":{\"134\":{}},\"comment\":{}}],[\"disconnect\",{\"_index\":122,\"name\":{\"240\":{}},\"comment\":{}}],[\"discovery\",{\"_index\":0,\"name\":{\"0\":{},\"228\":{}},\"comment\":{}}],[\"discoverymessage\",{\"_index\":419,\"name\":{\"563\":{}},\"comment\":{}}],[\"discoverymessageoptions\",{\"_index\":432,\"name\":{\"593\":{}},\"comment\":{}}],[\"downloaddb\",{\"_index\":505,\"name\":{\"721\":{}},\"comment\":{}}],[\"downloaddbsources\",{\"_index\":436,\"name\":{\"602\":{}},\"comment\":{}}],[\"downloadfile\",{\"_index\":504,\"name\":{\"720\":{}},\"comment\":{}}],[\"emitter\",{\"_index\":37,\"name\":{\"38\":{},\"110\":{},\"166\":{}},\"comment\":{}}],[\"enginedeck1currentbpm\",{\"_index\":222,\"name\":{\"354\":{}},\"comment\":{}}],[\"enginedeck1deckismaster\",{\"_index\":214,\"name\":{\"346\":{}},\"comment\":{}}],[\"enginedeck1externalmixervolume\",{\"_index\":223,\"name\":{\"355\":{}},\"comment\":{}}],[\"enginedeck1externalscratchwheeltouch\",{\"_index\":224,\"name\":{\"356\":{}},\"comment\":{}}],[\"enginedeck1padsview\",{\"_index\":225,\"name\":{\"357\":{}},\"comment\":{}}],[\"enginedeck1play\",{\"_index\":226,\"name\":{\"358\":{}},\"comment\":{}}],[\"enginedeck1playstate\",{\"_index\":227,\"name\":{\"359\":{}},\"comment\":{}}],[\"enginedeck1playstatepath\",{\"_index\":228,\"name\":{\"360\":{}},\"comment\":{}}],[\"enginedeck1speed\",{\"_index\":229,\"name\":{\"361\":{}},\"comment\":{}}],[\"enginedeck1speedneutral\",{\"_index\":230,\"name\":{\"362\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetdown\",{\"_index\":231,\"name\":{\"363\":{}},\"comment\":{}}],[\"enginedeck1speedoffsetup\",{\"_index\":232,\"name\":{\"364\":{}},\"comment\":{}}],[\"enginedeck1speedrange\",{\"_index\":233,\"name\":{\"365\":{}},\"comment\":{}}],[\"enginedeck1speedstate\",{\"_index\":234,\"name\":{\"366\":{}},\"comment\":{}}],[\"enginedeck1syncmode\",{\"_index\":235,\"name\":{\"367\":{}},\"comment\":{}}],[\"enginedeck1syncplaystate\",{\"_index\":210,\"name\":{\"342\":{}},\"comment\":{}}],[\"enginedeck1trackartistname\",{\"_index\":236,\"name\":{\"368\":{}},\"comment\":{}}],[\"enginedeck1trackbleep\",{\"_index\":237,\"name\":{\"369\":{}},\"comment\":{}}],[\"enginedeck1trackcueposition\",{\"_index\":238,\"name\":{\"370\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentbpm\",{\"_index\":239,\"name\":{\"371\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentkeyindex\",{\"_index\":240,\"name\":{\"372\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopinposition\",{\"_index\":241,\"name\":{\"373\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopoutposition\",{\"_index\":242,\"name\":{\"374\":{}},\"comment\":{}}],[\"enginedeck1trackcurrentloopsizeinbeats\",{\"_index\":243,\"name\":{\"375\":{}},\"comment\":{}}],[\"enginedeck1trackkeylock\",{\"_index\":244,\"name\":{\"376\":{}},\"comment\":{}}],[\"enginedeck1trackloopenablestate\",{\"_index\":245,\"name\":{\"377\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop1\",{\"_index\":246,\"name\":{\"378\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop2\",{\"_index\":247,\"name\":{\"379\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop3\",{\"_index\":248,\"name\":{\"380\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop4\",{\"_index\":249,\"name\":{\"381\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop5\",{\"_index\":250,\"name\":{\"382\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop6\",{\"_index\":251,\"name\":{\"383\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop7\",{\"_index\":252,\"name\":{\"384\":{}},\"comment\":{}}],[\"enginedeck1trackloopquickloop8\",{\"_index\":253,\"name\":{\"385\":{}},\"comment\":{}}],[\"enginedeck1trackplaypauseledstate\",{\"_index\":254,\"name\":{\"386\":{}},\"comment\":{}}],[\"enginedeck1tracksamplerate\",{\"_index\":255,\"name\":{\"387\":{}},\"comment\":{}}],[\"enginedeck1tracksonganalyzed\",{\"_index\":256,\"name\":{\"388\":{}},\"comment\":{}}],[\"enginedeck1tracksongloaded\",{\"_index\":257,\"name\":{\"389\":{}},\"comment\":{}}],[\"enginedeck1tracksongname\",{\"_index\":258,\"name\":{\"390\":{}},\"comment\":{}}],[\"enginedeck1tracksoundswitchguid\",{\"_index\":259,\"name\":{\"391\":{}},\"comment\":{}}],[\"enginedeck1tracktrackbytes\",{\"_index\":260,\"name\":{\"392\":{}},\"comment\":{}}],[\"enginedeck1tracktrackdata\",{\"_index\":261,\"name\":{\"393\":{}},\"comment\":{}}],[\"enginedeck1tracktracklength\",{\"_index\":262,\"name\":{\"394\":{}},\"comment\":{}}],[\"enginedeck1tracktrackname\",{\"_index\":263,\"name\":{\"395\":{}},\"comment\":{}}],[\"enginedeck1tracktracknetworkpath\",{\"_index\":264,\"name\":{\"396\":{}},\"comment\":{}}],[\"enginedeck1tracktrackuri\",{\"_index\":265,\"name\":{\"397\":{}},\"comment\":{}}],[\"enginedeck1tracktrackwasplayed\",{\"_index\":266,\"name\":{\"398\":{}},\"comment\":{}}],[\"enginedeck2currentbpm\",{\"_index\":267,\"name\":{\"399\":{}},\"comment\":{}}],[\"enginedeck2deckismaster\",{\"_index\":215,\"name\":{\"347\":{}},\"comment\":{}}],[\"enginedeck2externalmixervolume\",{\"_index\":268,\"name\":{\"400\":{}},\"comment\":{}}],[\"enginedeck2externalscratchwheeltouch\",{\"_index\":269,\"name\":{\"401\":{}},\"comment\":{}}],[\"enginedeck2padsview\",{\"_index\":270,\"name\":{\"402\":{}},\"comment\":{}}],[\"enginedeck2play\",{\"_index\":271,\"name\":{\"403\":{}},\"comment\":{}}],[\"enginedeck2playstate\",{\"_index\":272,\"name\":{\"404\":{}},\"comment\":{}}],[\"enginedeck2playstatepath\",{\"_index\":273,\"name\":{\"405\":{}},\"comment\":{}}],[\"enginedeck2speed\",{\"_index\":274,\"name\":{\"406\":{}},\"comment\":{}}],[\"enginedeck2speedneutral\",{\"_index\":275,\"name\":{\"407\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetdown\",{\"_index\":276,\"name\":{\"408\":{}},\"comment\":{}}],[\"enginedeck2speedoffsetup\",{\"_index\":277,\"name\":{\"409\":{}},\"comment\":{}}],[\"enginedeck2speedrange\",{\"_index\":278,\"name\":{\"410\":{}},\"comment\":{}}],[\"enginedeck2speedstate\",{\"_index\":279,\"name\":{\"411\":{}},\"comment\":{}}],[\"enginedeck2syncmode\",{\"_index\":280,\"name\":{\"412\":{}},\"comment\":{}}],[\"enginedeck2syncplaystate\",{\"_index\":211,\"name\":{\"343\":{}},\"comment\":{}}],[\"enginedeck2trackartistname\",{\"_index\":281,\"name\":{\"413\":{}},\"comment\":{}}],[\"enginedeck2trackbleep\",{\"_index\":282,\"name\":{\"414\":{}},\"comment\":{}}],[\"enginedeck2trackcueposition\",{\"_index\":283,\"name\":{\"415\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentbpm\",{\"_index\":284,\"name\":{\"416\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentkeyindex\",{\"_index\":285,\"name\":{\"417\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopinposition\",{\"_index\":286,\"name\":{\"418\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopoutposition\",{\"_index\":287,\"name\":{\"419\":{}},\"comment\":{}}],[\"enginedeck2trackcurrentloopsizeinbeats\",{\"_index\":288,\"name\":{\"420\":{}},\"comment\":{}}],[\"enginedeck2trackkeylock\",{\"_index\":289,\"name\":{\"421\":{}},\"comment\":{}}],[\"enginedeck2trackloopenablestate\",{\"_index\":290,\"name\":{\"422\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop1\",{\"_index\":291,\"name\":{\"423\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop2\",{\"_index\":292,\"name\":{\"424\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop3\",{\"_index\":293,\"name\":{\"425\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop4\",{\"_index\":294,\"name\":{\"426\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop5\",{\"_index\":295,\"name\":{\"427\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop6\",{\"_index\":296,\"name\":{\"428\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop7\",{\"_index\":297,\"name\":{\"429\":{}},\"comment\":{}}],[\"enginedeck2trackloopquickloop8\",{\"_index\":298,\"name\":{\"430\":{}},\"comment\":{}}],[\"enginedeck2trackplaypauseledstate\",{\"_index\":299,\"name\":{\"431\":{}},\"comment\":{}}],[\"enginedeck2tracksamplerate\",{\"_index\":300,\"name\":{\"432\":{}},\"comment\":{}}],[\"enginedeck2tracksonganalyzed\",{\"_index\":301,\"name\":{\"433\":{}},\"comment\":{}}],[\"enginedeck2tracksongloaded\",{\"_index\":302,\"name\":{\"434\":{}},\"comment\":{}}],[\"enginedeck2tracksongname\",{\"_index\":303,\"name\":{\"435\":{}},\"comment\":{}}],[\"enginedeck2tracksoundswitchguid\",{\"_index\":304,\"name\":{\"436\":{}},\"comment\":{}}],[\"enginedeck2tracktrackbytes\",{\"_index\":305,\"name\":{\"437\":{}},\"comment\":{}}],[\"enginedeck2tracktrackdata\",{\"_index\":306,\"name\":{\"438\":{}},\"comment\":{}}],[\"enginedeck2tracktracklength\",{\"_index\":307,\"name\":{\"439\":{}},\"comment\":{}}],[\"enginedeck2tracktrackname\",{\"_index\":308,\"name\":{\"440\":{}},\"comment\":{}}],[\"enginedeck2tracktracknetworkpath\",{\"_index\":309,\"name\":{\"441\":{}},\"comment\":{}}],[\"enginedeck2tracktrackuri\",{\"_index\":310,\"name\":{\"442\":{}},\"comment\":{}}],[\"enginedeck2tracktrackwasplayed\",{\"_index\":311,\"name\":{\"443\":{}},\"comment\":{}}],[\"enginedeck3currentbpm\",{\"_index\":312,\"name\":{\"444\":{}},\"comment\":{}}],[\"enginedeck3deckismaster\",{\"_index\":216,\"name\":{\"348\":{}},\"comment\":{}}],[\"enginedeck3externalmixervolume\",{\"_index\":313,\"name\":{\"445\":{}},\"comment\":{}}],[\"enginedeck3externalscratchwheeltouch\",{\"_index\":314,\"name\":{\"446\":{}},\"comment\":{}}],[\"enginedeck3padsview\",{\"_index\":315,\"name\":{\"447\":{}},\"comment\":{}}],[\"enginedeck3play\",{\"_index\":316,\"name\":{\"448\":{}},\"comment\":{}}],[\"enginedeck3playstate\",{\"_index\":317,\"name\":{\"449\":{}},\"comment\":{}}],[\"enginedeck3playstatepath\",{\"_index\":318,\"name\":{\"450\":{}},\"comment\":{}}],[\"enginedeck3speed\",{\"_index\":319,\"name\":{\"451\":{}},\"comment\":{}}],[\"enginedeck3speedneutral\",{\"_index\":320,\"name\":{\"452\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetdown\",{\"_index\":321,\"name\":{\"453\":{}},\"comment\":{}}],[\"enginedeck3speedoffsetup\",{\"_index\":322,\"name\":{\"454\":{}},\"comment\":{}}],[\"enginedeck3speedrange\",{\"_index\":323,\"name\":{\"455\":{}},\"comment\":{}}],[\"enginedeck3speedstate\",{\"_index\":324,\"name\":{\"456\":{}},\"comment\":{}}],[\"enginedeck3syncmode\",{\"_index\":325,\"name\":{\"457\":{}},\"comment\":{}}],[\"enginedeck3syncplaystate\",{\"_index\":212,\"name\":{\"344\":{}},\"comment\":{}}],[\"enginedeck3trackartistname\",{\"_index\":326,\"name\":{\"458\":{}},\"comment\":{}}],[\"enginedeck3trackbleep\",{\"_index\":327,\"name\":{\"459\":{}},\"comment\":{}}],[\"enginedeck3trackcueposition\",{\"_index\":328,\"name\":{\"460\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentbpm\",{\"_index\":329,\"name\":{\"461\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentkeyindex\",{\"_index\":330,\"name\":{\"462\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopinposition\",{\"_index\":331,\"name\":{\"463\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopoutposition\",{\"_index\":332,\"name\":{\"464\":{}},\"comment\":{}}],[\"enginedeck3trackcurrentloopsizeinbeats\",{\"_index\":333,\"name\":{\"465\":{}},\"comment\":{}}],[\"enginedeck3trackkeylock\",{\"_index\":334,\"name\":{\"466\":{}},\"comment\":{}}],[\"enginedeck3trackloopenablestate\",{\"_index\":335,\"name\":{\"467\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop1\",{\"_index\":336,\"name\":{\"468\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop2\",{\"_index\":337,\"name\":{\"469\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop3\",{\"_index\":338,\"name\":{\"470\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop4\",{\"_index\":339,\"name\":{\"471\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop5\",{\"_index\":340,\"name\":{\"472\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop6\",{\"_index\":341,\"name\":{\"473\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop7\",{\"_index\":342,\"name\":{\"474\":{}},\"comment\":{}}],[\"enginedeck3trackloopquickloop8\",{\"_index\":343,\"name\":{\"475\":{}},\"comment\":{}}],[\"enginedeck3trackplaypauseledstate\",{\"_index\":344,\"name\":{\"476\":{}},\"comment\":{}}],[\"enginedeck3tracksamplerate\",{\"_index\":345,\"name\":{\"477\":{}},\"comment\":{}}],[\"enginedeck3tracksonganalyzed\",{\"_index\":346,\"name\":{\"478\":{}},\"comment\":{}}],[\"enginedeck3tracksongloaded\",{\"_index\":347,\"name\":{\"479\":{}},\"comment\":{}}],[\"enginedeck3tracksongname\",{\"_index\":348,\"name\":{\"480\":{}},\"comment\":{}}],[\"enginedeck3tracksoundswitchguid\",{\"_index\":349,\"name\":{\"481\":{}},\"comment\":{}}],[\"enginedeck3tracktrackbytes\",{\"_index\":350,\"name\":{\"482\":{}},\"comment\":{}}],[\"enginedeck3tracktrackdata\",{\"_index\":351,\"name\":{\"483\":{}},\"comment\":{}}],[\"enginedeck3tracktracklength\",{\"_index\":352,\"name\":{\"484\":{}},\"comment\":{}}],[\"enginedeck3tracktrackname\",{\"_index\":353,\"name\":{\"485\":{}},\"comment\":{}}],[\"enginedeck3tracktracknetworkpath\",{\"_index\":354,\"name\":{\"486\":{}},\"comment\":{}}],[\"enginedeck3tracktrackuri\",{\"_index\":355,\"name\":{\"487\":{}},\"comment\":{}}],[\"enginedeck3tracktrackwasplayed\",{\"_index\":356,\"name\":{\"488\":{}},\"comment\":{}}],[\"enginedeck4currentbpm\",{\"_index\":357,\"name\":{\"489\":{}},\"comment\":{}}],[\"enginedeck4deckismaster\",{\"_index\":217,\"name\":{\"349\":{}},\"comment\":{}}],[\"enginedeck4externalmixervolume\",{\"_index\":358,\"name\":{\"490\":{}},\"comment\":{}}],[\"enginedeck4externalscratchwheeltouch\",{\"_index\":359,\"name\":{\"491\":{}},\"comment\":{}}],[\"enginedeck4padsview\",{\"_index\":360,\"name\":{\"492\":{}},\"comment\":{}}],[\"enginedeck4play\",{\"_index\":361,\"name\":{\"493\":{}},\"comment\":{}}],[\"enginedeck4playstate\",{\"_index\":362,\"name\":{\"494\":{}},\"comment\":{}}],[\"enginedeck4playstatepath\",{\"_index\":363,\"name\":{\"495\":{}},\"comment\":{}}],[\"enginedeck4speed\",{\"_index\":364,\"name\":{\"496\":{}},\"comment\":{}}],[\"enginedeck4speedneutral\",{\"_index\":365,\"name\":{\"497\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetdown\",{\"_index\":366,\"name\":{\"498\":{}},\"comment\":{}}],[\"enginedeck4speedoffsetup\",{\"_index\":367,\"name\":{\"499\":{}},\"comment\":{}}],[\"enginedeck4speedrange\",{\"_index\":368,\"name\":{\"500\":{}},\"comment\":{}}],[\"enginedeck4speedstate\",{\"_index\":369,\"name\":{\"501\":{}},\"comment\":{}}],[\"enginedeck4syncmode\",{\"_index\":370,\"name\":{\"502\":{}},\"comment\":{}}],[\"enginedeck4syncplaystate\",{\"_index\":213,\"name\":{\"345\":{}},\"comment\":{}}],[\"enginedeck4trackartistname\",{\"_index\":371,\"name\":{\"503\":{}},\"comment\":{}}],[\"enginedeck4trackbleep\",{\"_index\":372,\"name\":{\"504\":{}},\"comment\":{}}],[\"enginedeck4trackcueposition\",{\"_index\":373,\"name\":{\"505\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentbpm\",{\"_index\":374,\"name\":{\"506\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentkeyindex\",{\"_index\":375,\"name\":{\"507\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopinposition\",{\"_index\":376,\"name\":{\"508\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopoutposition\",{\"_index\":377,\"name\":{\"509\":{}},\"comment\":{}}],[\"enginedeck4trackcurrentloopsizeinbeats\",{\"_index\":378,\"name\":{\"510\":{}},\"comment\":{}}],[\"enginedeck4trackkeylock\",{\"_index\":379,\"name\":{\"511\":{}},\"comment\":{}}],[\"enginedeck4trackloopenablestate\",{\"_index\":380,\"name\":{\"512\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop1\",{\"_index\":381,\"name\":{\"513\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop2\",{\"_index\":382,\"name\":{\"514\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop3\",{\"_index\":383,\"name\":{\"515\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop4\",{\"_index\":384,\"name\":{\"516\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop5\",{\"_index\":385,\"name\":{\"517\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop6\",{\"_index\":386,\"name\":{\"518\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop7\",{\"_index\":387,\"name\":{\"519\":{}},\"comment\":{}}],[\"enginedeck4trackloopquickloop8\",{\"_index\":388,\"name\":{\"520\":{}},\"comment\":{}}],[\"enginedeck4trackplaypauseledstate\",{\"_index\":389,\"name\":{\"521\":{}},\"comment\":{}}],[\"enginedeck4tracksamplerate\",{\"_index\":390,\"name\":{\"522\":{}},\"comment\":{}}],[\"enginedeck4tracksonganalyzed\",{\"_index\":391,\"name\":{\"523\":{}},\"comment\":{}}],[\"enginedeck4tracksongloaded\",{\"_index\":392,\"name\":{\"524\":{}},\"comment\":{}}],[\"enginedeck4tracksongname\",{\"_index\":393,\"name\":{\"525\":{}},\"comment\":{}}],[\"enginedeck4tracksoundswitchguid\",{\"_index\":394,\"name\":{\"526\":{}},\"comment\":{}}],[\"enginedeck4tracktrackbytes\",{\"_index\":395,\"name\":{\"527\":{}},\"comment\":{}}],[\"enginedeck4tracktrackdata\",{\"_index\":396,\"name\":{\"528\":{}},\"comment\":{}}],[\"enginedeck4tracktracklength\",{\"_index\":397,\"name\":{\"529\":{}},\"comment\":{}}],[\"enginedeck4tracktrackname\",{\"_index\":398,\"name\":{\"530\":{}},\"comment\":{}}],[\"enginedeck4tracktracknetworkpath\",{\"_index\":399,\"name\":{\"531\":{}},\"comment\":{}}],[\"enginedeck4tracktrackuri\",{\"_index\":400,\"name\":{\"532\":{}},\"comment\":{}}],[\"enginedeck4tracktrackwasplayed\",{\"_index\":401,\"name\":{\"533\":{}},\"comment\":{}}],[\"enginedeckcount\",{\"_index\":221,\"name\":{\"353\":{}},\"comment\":{}}],[\"enginemastermastertempo\",{\"_index\":220,\"name\":{\"352\":{}},\"comment\":{}}],[\"enginesyncnetworkmasterstatus\",{\"_index\":219,\"name\":{\"351\":{}},\"comment\":{}}],[\"enginesyncnetworksynctype\",{\"_index\":218,\"name\":{\"350\":{}},\"comment\":{}}],[\"explicitlyrics\",{\"_index\":184,\"name\":{\"314\":{}},\"comment\":{}}],[\"filebytes\",{\"_index\":150,\"name\":{\"278\":{}},\"comment\":{}}],[\"filename\",{\"_index\":146,\"name\":{\"274\":{}},\"comment\":{}}],[\"filetransfer\",{\"_index\":35,\"name\":{\"36\":{},\"607\":{}},\"comment\":{}}],[\"filetransferdata\",{\"_index\":23,\"name\":{\"23\":{}},\"comment\":{}}],[\"filetransferlistener\",{\"_index\":38,\"name\":{\"39\":{}},\"comment\":{}}],[\"filetransferprogress\",{\"_index\":30,\"name\":{\"31\":{}},\"comment\":{}}],[\"filetype\",{\"_index\":164,\"name\":{\"292\":{}},\"comment\":{}}],[\"findbroadcastips\",{\"_index\":22,\"name\":{\"22\":{}},\"comment\":{}}],[\"genre\",{\"_index\":154,\"name\":{\"282\":{}},\"comment\":{}}],[\"getbeatdata\",{\"_index\":97,\"name\":{\"178\":{}},\"comment\":{}}],[\"getbuffer\",{\"_index\":469,\"name\":{\"655\":{}},\"comment\":{}}],[\"getconnectioninfo\",{\"_index\":11,\"name\":{\"11\":{}},\"comment\":{}}],[\"getdevice\",{\"_index\":484,\"name\":{\"687\":{}},\"comment\":{}}],[\"getdevicelist\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"getdevices\",{\"_index\":13,\"name\":{\"13\":{}},\"comment\":{}}],[\"getfile\",{\"_index\":46,\"name\":{\"52\":{}},\"comment\":{}}],[\"getinstance\",{\"_index\":39,\"name\":{\"40\":{}},\"comment\":{}}],[\"getinstances\",{\"_index\":40,\"name\":{\"41\":{},\"168\":{}},\"comment\":{}}],[\"getservers\",{\"_index\":119,\"name\":{\"236\":{}},\"comment\":{}}],[\"getsource\",{\"_index\":501,\"name\":{\"716\":{}},\"comment\":{}}],[\"getsources\",{\"_index\":48,\"name\":{\"54\":{},\"717\":{}},\"comment\":{}}],[\"getstring\",{\"_index\":459,\"name\":{\"634\":{}},\"comment\":{}}],[\"gettempfilepath\",{\"_index\":451,\"name\":{\"625\":{}},\"comment\":{}}],[\"gettimestamp\",{\"_index\":109,\"name\":{\"208\":{}},\"comment\":{}}],[\"gettrackinfo\",{\"_index\":496,\"name\":{\"708\":{}},\"comment\":{}}],[\"guidecksdeckactivedeck\",{\"_index\":402,\"name\":{\"534\":{}},\"comment\":{}}],[\"hasdevice\",{\"_index\":485,\"name\":{\"689\":{}},\"comment\":{}}],[\"haslooped\",{\"_index\":10,\"name\":{\"10\":{}},\"comment\":{}}],[\"hasnewinfo\",{\"_index\":486,\"name\":{\"690\":{}},\"comment\":{}}],[\"hassource\",{\"_index\":499,\"name\":{\"714\":{}},\"comment\":{}}],[\"hassourceanddb\",{\"_index\":500,\"name\":{\"715\":{}},\"comment\":{}}],[\"id\",{\"_index\":141,\"name\":{\"268\":{},\"589\":{}},\"comment\":{}}],[\"info\",{\"_index\":490,\"name\":{\"697\":{}},\"comment\":{}}],[\"instancelistener\",{\"_index\":79,\"name\":{\"112\":{},\"167\":{}},\"comment\":{}}],[\"instances\",{\"_index\":36,\"name\":{\"37\":{},\"42\":{},\"76\":{},\"111\":{},\"113\":{},\"137\":{},\"165\":{},\"169\":{},\"199\":{}},\"comment\":{}}],[\"interval\",{\"_index\":77,\"name\":{\"108\":{}},\"comment\":{}}],[\"ipaddress\",{\"_index\":430,\"name\":{\"591\":{}},\"comment\":{}}],[\"ipaddressport\",{\"_index\":431,\"name\":{\"592\":{}},\"comment\":{}}],[\"isanalyzed\",{\"_index\":165,\"name\":{\"293\":{}},\"comment\":{}}],[\"isavailable\",{\"_index\":43,\"name\":{\"48\":{},\"61\":{},\"296\":{}},\"comment\":{}}],[\"isbeatgridlocked\",{\"_index\":175,\"name\":{\"304\":{}},\"comment\":{}}],[\"isbufferedservice\",{\"_index\":58,\"name\":{\"67\":{},\"84\":{},\"126\":{},\"140\":{},\"176\":{},\"202\":{}},\"comment\":{}}],[\"iseof\",{\"_index\":448,\"name\":{\"622\":{},\"649\":{},\"673\":{}},\"comment\":{}}],[\"islittleendian\",{\"_index\":449,\"name\":{\"623\":{},\"650\":{},\"674\":{}},\"comment\":{}}],[\"ismetadataimported\",{\"_index\":171,\"name\":{\"300\":{}},\"comment\":{}}],[\"ismetadataofpackedtrackchanged\",{\"_index\":168,\"name\":{\"297\":{}},\"comment\":{}}],[\"isperfomancedataofpackedtrackchanged\",{\"_index\":169,\"name\":{\"298\":{}},\"comment\":{}}],[\"isplayed\",{\"_index\":163,\"name\":{\"291\":{}},\"comment\":{}}],[\"json\",{\"_index\":71,\"name\":{\"102\":{}},\"comment\":{}}],[\"key\",{\"_index\":159,\"name\":{\"287\":{}},\"comment\":{}}],[\"label\",{\"_index\":156,\"name\":{\"284\":{}},\"comment\":{}}],[\"length\",{\"_index\":143,\"name\":{\"270\":{}},\"comment\":{}}],[\"listen\",{\"_index\":14,\"name\":{\"14\":{}},\"comment\":{}}],[\"listenfordevices\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"littleendian\",{\"_index\":444,\"name\":{\"617\":{},\"644\":{},\"669\":{}},\"comment\":{}}],[\"local\",{\"_index\":416,\"name\":{\"558\":{}},\"comment\":{}}],[\"localtime\",{\"_index\":104,\"name\":{\"203\":{}},\"comment\":{}}],[\"location\",{\"_index\":126,\"name\":{\"247\":{},\"265\":{},\"556\":{}},\"comment\":{}}],[\"logger\",{\"_index\":120,\"name\":{\"238\":{}},\"comment\":{}}],[\"loops\",{\"_index\":181,\"name\":{\"311\":{}},\"comment\":{}}],[\"m_array\",{\"_index\":481,\"name\":{\"680\":{}},\"comment\":{}}],[\"m_str\",{\"_index\":480,\"name\":{\"679\":{}},\"comment\":{}}],[\"maxretries\",{\"_index\":434,\"name\":{\"600\":{}},\"comment\":{}}],[\"message\",{\"_index\":429,\"name\":{\"590\":{}},\"comment\":{}}],[\"messagebuffer\",{\"_index\":66,\"name\":{\"86\":{}},\"comment\":{}}],[\"messagehandler\",{\"_index\":45,\"name\":{\"51\":{},\"97\":{},\"118\":{},\"143\":{},\"182\":{},\"212\":{}},\"comment\":{}}],[\"mixer\",{\"_index\":403,\"name\":{\"535\":{}},\"comment\":{}}],[\"mixerch1faderposition\",{\"_index\":404,\"name\":{\"537\":{}},\"comment\":{}}],[\"mixerch2faderposition\",{\"_index\":405,\"name\":{\"538\":{}},\"comment\":{}}],[\"mixerch3faderposition\",{\"_index\":406,\"name\":{\"539\":{}},\"comment\":{}}],[\"mixerch4faderposition\",{\"_index\":407,\"name\":{\"540\":{}},\"comment\":{}}],[\"mixerchannelassignment1\",{\"_index\":409,\"name\":{\"542\":{}},\"comment\":{}}],[\"mixerchannelassignment2\",{\"_index\":410,\"name\":{\"543\":{}},\"comment\":{}}],[\"mixerchannelassignment3\",{\"_index\":411,\"name\":{\"544\":{}},\"comment\":{}}],[\"mixerchannelassignment4\",{\"_index\":412,\"name\":{\"545\":{}},\"comment\":{}}],[\"mixercrossfaderposition\",{\"_index\":408,\"name\":{\"541\":{}},\"comment\":{}}],[\"mixernumberofchannels\",{\"_index\":413,\"name\":{\"546\":{}},\"comment\":{}}],[\"msgs\",{\"_index\":101,\"name\":{\"196\":{}},\"comment\":{}}],[\"name\",{\"_index\":41,\"name\":{\"45\":{},\"78\":{},\"101\":{},\"115\":{},\"139\":{},\"172\":{},\"201\":{},\"246\":{},\"264\":{},\"548\":{},\"569\":{},\"576\":{},\"585\":{},\"594\":{}},\"comment\":{}}],[\"offset\",{\"_index\":27,\"name\":{\"28\":{}},\"comment\":{}}],[\"on\",{\"_index\":2,\"name\":{\"2\":{},\"44\":{},\"171\":{},\"684\":{},\"712\":{}},\"comment\":{}}],[\"options\",{\"_index\":6,\"name\":{\"6\":{},\"226\":{}},\"comment\":{}}],[\"origindatabaseuuid\",{\"_index\":176,\"name\":{\"305\":{}},\"comment\":{}}],[\"origintrackid\",{\"_index\":177,\"name\":{\"306\":{}},\"comment\":{}}],[\"overviewwaveformdata\",{\"_index\":179,\"name\":{\"308\":{}},\"comment\":{}}],[\"parsedata\",{\"_index\":44,\"name\":{\"50\":{},\"96\":{},\"117\":{},\"142\":{},\"181\":{},\"210\":{}},\"comment\":{}}],[\"path\",{\"_index\":127,\"name\":{\"248\":{},\"266\":{},\"273\":{},\"560\":{}},\"comment\":{}}],[\"pdbimportkey\",{\"_index\":172,\"name\":{\"301\":{}},\"comment\":{}}],[\"peek\",{\"_index\":454,\"name\":{\"629\":{}},\"comment\":{}}],[\"peers\",{\"_index\":7,\"name\":{\"7\":{}},\"comment\":{}}],[\"percentcomplete\",{\"_index\":34,\"name\":{\"35\":{}},\"comment\":{}}],[\"playedindicator\",{\"_index\":170,\"name\":{\"299\":{}},\"comment\":{}}],[\"player\",{\"_index\":187,\"name\":{\"318\":{}},\"comment\":{}}],[\"playorder\",{\"_index\":142,\"name\":{\"269\":{}},\"comment\":{}}],[\"port\",{\"_index\":423,\"name\":{\"571\":{},\"587\":{},\"598\":{}},\"comment\":{}}],[\"pos\",{\"_index\":443,\"name\":{\"616\":{},\"643\":{},\"668\":{}},\"comment\":{}}],[\"prefix\",{\"_index\":124,\"name\":{\"243\":{},\"261\":{}},\"comment\":{}}],[\"querysource\",{\"_index\":494,\"name\":{\"706\":{}},\"comment\":{}}],[\"quickcues\",{\"_index\":180,\"name\":{\"310\":{}},\"comment\":{}}],[\"rating\",{\"_index\":160,\"name\":{\"288\":{}},\"comment\":{}}],[\"read\",{\"_index\":453,\"name\":{\"628\":{}},\"comment\":{}}],[\"readconnectioninfo\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"readcontext\",{\"_index\":452,\"name\":{\"626\":{}},\"comment\":{}}],[\"readfloat64\",{\"_index\":461,\"name\":{\"636\":{}},\"comment\":{}}],[\"readint32\",{\"_index\":464,\"name\":{\"639\":{}},\"comment\":{}}],[\"readnetworkstringutf16\",{\"_index\":460,\"name\":{\"635\":{}},\"comment\":{}}],[\"readremaining\",{\"_index\":455,\"name\":{\"630\":{}},\"comment\":{}}],[\"readremainingasnewarraybuffer\",{\"_index\":457,\"name\":{\"632\":{}},\"comment\":{}}],[\"readremainingasnewbuffer\",{\"_index\":456,\"name\":{\"631\":{}},\"comment\":{}}],[\"readremainingasnewctx\",{\"_index\":458,\"name\":{\"633\":{}},\"comment\":{}}],[\"readuint16\",{\"_index\":465,\"name\":{\"640\":{}},\"comment\":{}}],[\"readuint32\",{\"_index\":463,\"name\":{\"638\":{}},\"comment\":{}}],[\"readuint64\",{\"_index\":462,\"name\":{\"637\":{}},\"comment\":{}}],[\"readuint8\",{\"_index\":466,\"name\":{\"641\":{}},\"comment\":{}}],[\"receivedfile\",{\"_index\":42,\"name\":{\"46\":{}},\"comment\":{}}],[\"remixer\",{\"_index\":158,\"name\":{\"286\":{}},\"comment\":{}}],[\"remote\",{\"_index\":415,\"name\":{\"554\":{}},\"comment\":{}}],[\"remotetime\",{\"_index\":105,\"name\":{\"204\":{}},\"comment\":{}}],[\"requestchunkrange\",{\"_index\":52,\"name\":{\"58\":{}},\"comment\":{}}],[\"requestfiletransferid\",{\"_index\":51,\"name\":{\"57\":{}},\"comment\":{}}],[\"requestsources\",{\"_index\":50,\"name\":{\"56\":{}},\"comment\":{}}],[\"requeststat\",{\"_index\":49,\"name\":{\"55\":{}},\"comment\":{}}],[\"resize\",{\"_index\":471,\"name\":{\"658\":{}},\"comment\":{}}],[\"rewind\",{\"_index\":450,\"name\":{\"624\":{},\"651\":{},\"675\":{}},\"comment\":{}}],[\"samplerate\",{\"_index\":130,\"name\":{\"251\":{}},\"comment\":{}}],[\"seek\",{\"_index\":446,\"name\":{\"620\":{},\"647\":{},\"671\":{}},\"comment\":{}}],[\"sendbeatinforequest\",{\"_index\":99,\"name\":{\"180\":{}},\"comment\":{}}],[\"sendnosourcesreply\",{\"_index\":54,\"name\":{\"60\":{}},\"comment\":{}}],[\"sendserviceannouncement\",{\"_index\":86,\"name\":{\"144\":{}},\"comment\":{}}],[\"sendstateresponse\",{\"_index\":81,\"name\":{\"119\":{}},\"comment\":{}}],[\"sendtimestampreply\",{\"_index\":87,\"name\":{\"145\":{}},\"comment\":{}}],[\"sendtimesyncquery\",{\"_index\":110,\"name\":{\"209\":{}},\"comment\":{}}],[\"sendtimesyncrequest\",{\"_index\":107,\"name\":{\"206\":{}},\"comment\":{}}],[\"server\",{\"_index\":56,\"name\":{\"64\":{},\"81\":{},\"123\":{},\"148\":{},\"185\":{},\"215\":{}},\"comment\":{}}],[\"serverinfo\",{\"_index\":57,\"name\":{\"65\":{},\"82\":{},\"124\":{},\"149\":{},\"186\":{},\"216\":{}},\"comment\":{}}],[\"servers\",{\"_index\":115,\"name\":{\"232\":{}},\"comment\":{}}],[\"service\",{\"_index\":24,\"name\":{\"24\":{},\"75\":{},\"99\":{},\"159\":{},\"550\":{}},\"comment\":{}}],[\"servicelist\",{\"_index\":439,\"name\":{\"605\":{}},\"comment\":{}}],[\"servicemessage\",{\"_index\":428,\"name\":{\"588\":{}},\"comment\":{}}],[\"services\",{\"_index\":437,\"name\":{\"603\":{},\"698\":{}},\"comment\":{}}],[\"set\",{\"_index\":447,\"name\":{\"621\":{},\"648\":{},\"672\":{}},\"comment\":{}}],[\"setsource\",{\"_index\":502,\"name\":{\"718\":{}},\"comment\":{}}],[\"signaltransfercomplete\",{\"_index\":53,\"name\":{\"59\":{}},\"comment\":{}}],[\"size\",{\"_index\":26,\"name\":{\"27\":{},\"553\":{}},\"comment\":{}}],[\"sizeleft\",{\"_index\":31,\"name\":{\"32\":{},\"618\":{},\"645\":{},\"656\":{}},\"comment\":{}}],[\"sleep\",{\"_index\":479,\"name\":{\"676\":{}},\"comment\":{}}],[\"socket\",{\"_index\":3,\"name\":{\"3\":{},\"66\":{},\"83\":{},\"125\":{},\"150\":{},\"187\":{},\"217\":{}},\"comment\":{}}],[\"software\",{\"_index\":421,\"name\":{\"567\":{},\"583\":{}},\"comment\":{}}],[\"songanalyzed\",{\"_index\":131,\"name\":{\"252\":{}},\"comment\":{}}],[\"songloaded\",{\"_index\":132,\"name\":{\"253\":{}},\"comment\":{}}],[\"songname\",{\"_index\":133,\"name\":{\"254\":{}},\"comment\":{}}],[\"soundswitchguid\",{\"_index\":134,\"name\":{\"255\":{}},\"comment\":{}}],[\"source\",{\"_index\":125,\"name\":{\"244\":{},\"262\":{},\"547\":{},\"565\":{},\"581\":{},\"596\":{}},\"comment\":{}}],[\"sources\",{\"_index\":28,\"name\":{\"29\":{},\"229\":{},\"710\":{}},\"comment\":{}}],[\"stagelinq\",{\"_index\":112,\"name\":{\"225\":{}},\"comment\":{}}],[\"stagelinqoptions\",{\"_index\":433,\"name\":{\"599\":{}},\"comment\":{}}],[\"start\",{\"_index\":60,\"name\":{\"69\":{},\"88\":{},\"128\":{},\"152\":{},\"189\":{},\"219\":{}},\"comment\":{}}],[\"startbeatinfo\",{\"_index\":98,\"name\":{\"179\":{}},\"comment\":{}}],[\"startserver\",{\"_index\":67,\"name\":{\"87\":{}},\"comment\":{}}],[\"startservicelistener\",{\"_index\":116,\"name\":{\"233\":{}},\"comment\":{}}],[\"state\",{\"_index\":76,\"name\":{\"107\":{}},\"comment\":{}}],[\"statedata\",{\"_index\":70,\"name\":{\"98\":{}},\"comment\":{}}],[\"statemap\",{\"_index\":78,\"name\":{\"109\":{},\"606\":{}},\"comment\":{}}],[\"statenames\",{\"_index\":186,\"name\":{\"316\":{}},\"comment\":{}}],[\"status\",{\"_index\":114,\"name\":{\"230\":{}},\"comment\":{}}],[\"stop\",{\"_index\":61,\"name\":{\"70\":{},\"89\":{},\"129\":{},\"153\":{},\"190\":{},\"220\":{}},\"comment\":{}}],[\"streamingflags\",{\"_index\":183,\"name\":{\"313\":{}},\"comment\":{}}],[\"streamingsource\",{\"_index\":173,\"name\":{\"302\":{}},\"comment\":{}}],[\"string\",{\"_index\":74,\"name\":{\"105\":{},\"681\":{}},\"comment\":{}}],[\"submessagetest\",{\"_index\":68,\"name\":{\"90\":{}},\"comment\":{}}],[\"subscribe\",{\"_index\":80,\"name\":{\"116\":{}},\"comment\":{}}],[\"subscribestate\",{\"_index\":82,\"name\":{\"120\":{}},\"comment\":{}}],[\"tell\",{\"_index\":445,\"name\":{\"619\":{},\"646\":{},\"670\":{}},\"comment\":{}}],[\"thirdpartysourceid\",{\"_index\":182,\"name\":{\"312\":{}},\"comment\":{}}],[\"timealive\",{\"_index\":85,\"name\":{\"141\":{}},\"comment\":{}}],[\"timeavg\",{\"_index\":111,\"name\":{\"211\":{}},\"comment\":{}}],[\"timelastplayed\",{\"_index\":162,\"name\":{\"290\":{}},\"comment\":{}}],[\"timeout\",{\"_index\":59,\"name\":{\"68\":{},\"85\":{},\"127\":{},\"151\":{},\"188\":{},\"218\":{}},\"comment\":{}}],[\"timestamp\",{\"_index\":102,\"name\":{\"197\":{}},\"comment\":{}}],[\"timesyncdata\",{\"_index\":100,\"name\":{\"195\":{}},\"comment\":{}}],[\"timesynchronization\",{\"_index\":103,\"name\":{\"198\":{},\"609\":{}},\"comment\":{}}],[\"timesyncmsghelper\",{\"_index\":108,\"name\":{\"207\":{}},\"comment\":{}}],[\"title\",{\"_index\":151,\"name\":{\"279\":{}},\"comment\":{}}],[\"total\",{\"_index\":32,\"name\":{\"33\":{}},\"comment\":{}}],[\"track\",{\"_index\":123,\"name\":{\"241\":{}},\"comment\":{}}],[\"trackbytes\",{\"_index\":135,\"name\":{\"256\":{}},\"comment\":{}}],[\"trackdata\",{\"_index\":178,\"name\":{\"307\":{}},\"comment\":{}}],[\"trackdbentry\",{\"_index\":140,\"name\":{\"267\":{}},\"comment\":{}}],[\"tracklength\",{\"_index\":136,\"name\":{\"257\":{}},\"comment\":{}}],[\"trackname\",{\"_index\":137,\"name\":{\"258\":{}},\"comment\":{}}],[\"tracknetworkpath\",{\"_index\":138,\"name\":{\"259\":{}},\"comment\":{}}],[\"trackuri\",{\"_index\":139,\"name\":{\"260\":{}},\"comment\":{}}],[\"txid\",{\"_index\":25,\"name\":{\"26\":{},\"47\":{},\"49\":{}},\"comment\":{}}],[\"type\",{\"_index\":73,\"name\":{\"104\":{},\"577\":{}},\"comment\":{}}],[\"unannounce\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"unit\",{\"_index\":425,\"name\":{\"574\":{}},\"comment\":{}}],[\"units\",{\"_index\":418,\"name\":{\"562\":{}},\"comment\":{}}],[\"updatedeviceinfo\",{\"_index\":487,\"name\":{\"691\":{}},\"comment\":{}}],[\"updatesources\",{\"_index\":47,\"name\":{\"53\":{}},\"comment\":{}}],[\"uri\",{\"_index\":174,\"name\":{\"303\":{}},\"comment\":{}}],[\"userbeatcallback\",{\"_index\":93,\"name\":{\"173\":{}},\"comment\":{}}],[\"userbeatoptions\",{\"_index\":94,\"name\":{\"174\":{}},\"comment\":{}}],[\"value\",{\"_index\":75,\"name\":{\"106\":{}},\"comment\":{}}],[\"version\",{\"_index\":422,\"name\":{\"570\":{},\"586\":{},\"595\":{}},\"comment\":{}}],[\"waitformessage\",{\"_index\":62,\"name\":{\"71\":{},\"92\":{},\"130\":{},\"154\":{},\"191\":{},\"221\":{}},\"comment\":{}}],[\"write\",{\"_index\":63,\"name\":{\"72\":{},\"93\":{},\"131\":{},\"155\":{},\"192\":{},\"222\":{},\"659\":{}},\"comment\":{}}],[\"writecontext\",{\"_index\":467,\"name\":{\"652\":{}},\"comment\":{}}],[\"writediscoverymessage\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"writefixedsizedstring\",{\"_index\":472,\"name\":{\"660\":{}},\"comment\":{}}],[\"writeint32\",{\"_index\":476,\"name\":{\"664\":{}},\"comment\":{}}],[\"writenetworkstringutf16\",{\"_index\":473,\"name\":{\"661\":{}},\"comment\":{}}],[\"writeuint16\",{\"_index\":477,\"name\":{\"665\":{}},\"comment\":{}}],[\"writeuint32\",{\"_index\":475,\"name\":{\"663\":{}},\"comment\":{}}],[\"writeuint64\",{\"_index\":474,\"name\":{\"662\":{}},\"comment\":{}}],[\"writeuint8\",{\"_index\":478,\"name\":{\"666\":{}},\"comment\":{}}],[\"writewithlength\",{\"_index\":64,\"name\":{\"73\":{},\"94\":{},\"132\":{},\"156\":{},\"193\":{},\"223\":{}},\"comment\":{}}],[\"year\",{\"_index\":145,\"name\":{\"272\":{}},\"comment\":{}}],[\"zinflate\",{\"_index\":495,\"name\":{\"707\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/classes/BeatInfo.html b/docs/classes/BeatInfo.html index a7052f1..9ba49ce 100644 --- a/docs/classes/BeatInfo.html +++ b/docs/classes/BeatInfo.html @@ -22,8 +22,8 @@

    Hierarchy

    • BeatInfo

    +
  • Defined in services/BeatInfo.ts:30
  • +
  • Defined in services/BeatInfo.ts:34
  • @@ -35,37 +35,34 @@

    Constructors

    Properties

    -

    Methods

    +
  • Defined in services/BeatInfo.ts:49
  • Properties

    - -
    _currentBeatData: BeatData = null
    -
    - -
    _handler: ServiceHandler<BeatData> = null
    +
  • Defined in services/BeatInfo.ts:41
  • - -
    _userBeatCallback: BeatCallback = null
    +
  • Defined in services/BeatInfo.ts:39
  • - -
    _userBeatOptions: BeatOptions = null
    +
  • Defined in services/BeatInfo.ts:40
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    -
    - -
    -
    - +
  • Defined in services/Service.ts:19
  • +
    +
    isBufferedService: boolean = true
    +
  • Defined in services/BeatInfo.ts:42
  • name: "BeatInfo" = "BeatInfo"
    -
    - -
    parent: StageLinq
    +
  • Defined in services/BeatInfo.ts:35
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    -
    - -
    serverStatus: boolean = false
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • +
    + +
    #instances: Map<string, BeatInfo> = ...
    captureRejectionSymbol: typeof captureRejectionSymbol
    +
    + +
    emitter: EventEmitter = ...
    errorMonitor: typeof errorMonitor
    @@ -230,7 +214,13 @@
    +
  • Defined in node_modules/@types/node/events.d.ts:327
  • +
    + +
    instances: Map<string, Service<unknown>> = ...

    Methods

    @@ -264,21 +254,10 @@

    Returns Service.addListener

    • Defined in node_modules/@types/node/events.d.ts:354

    -
    - -
    +
    server: Server

    Returns Promise<void>

    -
    - -
    +
    + +
    +
  • Defined in services/BeatInfo.ts:63
  • +
  • Defined in services/BeatInfo.ts:70
    • @@ -377,18 +353,6 @@

      Returns numberInherited from Service.getMaxListeners

      • Defined in node_modules/@types/node/events.d.ts:526

    -
    - -
    +
  • Defined in services/BeatInfo.ts:128
  • +
  • Defined in services/BeatInfo.ts:31
  • +
  • Defined in services/BeatInfo.ts:97
  • +
  • Defined in services/BeatInfo.ts:91
  • +
    + +
    -
    - +
  • Defined in services/BeatInfo.ts:79
  • +
    +
    +
    + +
    • Wait for a message from the wire

      @@ -821,10 +808,10 @@
      messageId: number
    Returns Promise<BeatData>
    -
    - -
    +
    + +
    -
    - -
    +
    + +
    +
  • Defined in services/Service.ts:227
    • @@ -868,7 +855,7 @@
    +
    + +
    +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        eventName: string
      • +
      • +
        Rest ...args: any
      +

      Returns void

    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

      Since

      v0.9.12

      @@ -917,14 +927,14 @@
    +
  • Defined in utils/Context.ts:3
  • @@ -65,24 +65,24 @@
    p_buffer: ArrayBuffer
    Optional p_littleEndian: boolean

    Returns Context

    +
  • Defined in utils/Context.ts:8
  • Properties

    buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -92,7 +92,7 @@
    +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/Context.ts:42
    • @@ -121,7 +121,7 @@

      Parameters

      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -134,7 +134,7 @@

      Parameters

      p_offset: number

    Returns void

    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns DbConnection

    +
  • Defined in Sources/DbConnection.ts:14
  • Properties

    db: Database
    +
  • Defined in Sources/DbConnection.ts:7
  • dbPath: string
    +
  • Defined in Sources/DbConnection.ts:8
  • Methods

    @@ -84,11 +84,11 @@
    +
  • Defined in Sources/DbConnection.ts:78
    • - +
    • Return track's DB entry.

      @@ -100,9 +100,9 @@

      Parameters

      _trackPath: string

      Path of track on the source's filesystem.

    -

    Returns Promise<Track>

    +
  • Defined in Sources/DbConnection.ts:56
  • +
  • Defined in Sources/DbConnection.ts:27
    • @@ -146,7 +146,7 @@

      Parameters

      data: Buffer

    Returns Promise<Buffer>

    +
  • Defined in Sources/DbConnection.ts:38
  • Constructors

    Returns Device

    +
  • Defined in devices/Devices.ts:110
  • Properties

    deviceId: DeviceId
    +
  • Defined in devices/Devices.ts:102
  • -
    - -
    parent: Devices
    +
  • Defined in devices/Devices.ts:103
  • services: Map<string, Service<unknown>> = ...
    -
    - -
    captureRejectionSymbol: typeof captureRejectionSymbol
    -
    - -
    captureRejections: boolean
    -

    Sets or gets the default captureRejection value for all emitters.

    -
    -
    - -
    defaultMaxListeners: number
    -
    - -
    errorMonitor: typeof errorMonitor
    -

    This symbol shall be used to install a listener for only monitoring 'error' -events. Listeners installed using this symbol are called before the regular -'error' listeners are called.

    -

    Installing a listener using this symbol does not change the behavior once an -'error' event is emitted, therefore the process will still crash if no -regular 'error' listener is installed.

    -
    +
  • Defined in devices/Devices.ts:104
  • Methods

    -
    - -
      - -
    • -

      Alias for emitter.on(eventName, listener).

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

      @@ -189,7 +90,7 @@

      Parameters

      service: Service<unknown>

    Returns void

    +
  • Defined in devices/Devices.ts:123
  • +
  • Defined in devices/Devices.ts:115
    • @@ -212,581 +113,7 @@

      Parameters

      serviceName: string

    Returns void

    -
    - -
      - -
    • -

      Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments -to each.

      -

      Returns true if the event had listeners, false otherwise.

      -
      const EventEmitter = require('events');
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        Rest ...args: any[]
      -

      Returns boolean

    -
    - -
      - -
    • -

      Returns an array listing the events for which the emitter has registered -listeners. The values in the array are strings or Symbols.

      -
      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] -
      - -

      Since

      v6.0.0

      -
      -

      Returns (string | symbol)[]

    -
    - -
      - -
    • -

      Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      - -

      Since

      v1.0.0

      -
      -

      Returns number

    -
    - -
      - -
    • -

      Returns the number of listeners listening to the event named eventName.

      - -

      Since

      v3.2.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event being listened for

        -
      -

      Returns number

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      Alias for emitter.removeListener().

      - -

      Since

      v10.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      Adds the listener function to the end of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.1.101

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      Adds a one-timelistener function for the event named eventName. The -next time eventName is triggered, this listener is removed and then invoked.

      -
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.3.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      Adds the listener function to the beginning of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this -listener is removed, and then invoked.

      -
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName, -including any wrappers (such as those created by .once()).

      -
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); -
      - -

      Since

      v9.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      Removes all listeners, or those of the specified eventName.

      -

      It is bad practice to remove listeners added elsewhere in the code, -particularly when the EventEmitter instance was created by some other -component or module (e.g. sockets or file streams).

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional event: string | symbol
      -

      Returns Device

    -
    - -
      - -
    • -

      Removes the specified listener from the listener array for the event namedeventName.

      -
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); -
      -

      removeListener() will remove, at most, one instance of a listener from the -listener array. If any single listener has been added multiple times to the -listener array for the specified eventName, then removeListener() must be -called multiple times to remove each instance.

      -

      Once an event is emitted, all listeners attached to it at the -time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution -will not remove them fromemit() in progress. Subsequent events behave as expected.

      -
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A -
      -

      Because listeners are managed using an internal array, calling this will -change the position indices of any listener registered after the listener -being removed. This will not impact the order in which listeners are called, -but it means that any copies of the listener array as returned by -the emitter.listeners() method will need to be recreated.

      -

      When a single function has been added as a handler multiple times for a single -event (as in the example below), removeListener() will remove the most -recently added instance. In the example the once('ping')listener is removed:

      -
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns Device

    -
    - -
      - -
    • -

      By default EventEmitters will print a warning if more than 10 listeners are -added for a particular event. This is a useful default that helps finding -memory leaks. The emitter.setMaxListeners() method allows the limit to be -modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.3.5

      -
      -
      -

      Parameters

      -
        -
      • -
        n: number
      -

      Returns Device

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -

      For EventEmitters this behaves exactly the same as calling .listeners on -the emitter.

      -

      For EventTargets this is the only way to get the event listeners for the -event target. This is useful for debugging and diagnostic purposes.

      -
      const { getEventListeners, EventEmitter } = require('events');

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      getEventListeners(ee, 'foo'); // [listener]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      getEventListeners(et, 'foo'); // [listener]
      } -
      - -

      Since

      v15.2.0, v14.17.0

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter | _DOMEventTarget
      • -
      • -
        name: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 -
      - -

      Since

      v0.9.12

      - -

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
        -

        The emitter to query

        -
      • -
      • -
        eventName: string | symbol
        -

        The event name

        -
      -

      Returns number

    -
    - -
      - -
    • -
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })(); -
      -

      Returns an AsyncIterator that iterates eventName events. It will throw -if the EventEmitter emits 'error'. It removes all listeners when -exiting the loop. The value returned by each iteration is an array -composed of the emitted event arguments.

      -

      An AbortSignal can be used to cancel waiting on events:

      -
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); -
      - -

      Since

      v13.6.0, v12.16.0

      - -

      Returns

      that iterates eventName events emitted by the emitter

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
      • -
      • -
        eventName: string
        -

        The name of the event being listened for

        -
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns AsyncIterableIterator<any>

    -
    - -
      - -
    • -

      Creates a Promise that is fulfilled when the EventEmitter emits the given -event or that is rejected if the EventEmitter emits 'error' while waiting. -The Promise will resolve with an array of all the arguments emitted to the -given event.

      -

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event -semantics and does not listen to the 'error' event.

      -
      const { once, EventEmitter } = require('events');

      async function run() {
      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.log('error happened', err);
      }
      }

      run(); -
      -

      The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the -'error' event itself, then it is treated as any other kind of event without -special handling:

      -
      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.log('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom -
      -

      An AbortSignal can be used to cancel waiting for the event:

      -
      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! -
      - -

      Since

      v11.13.0, v10.16.0

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: _NodeEventTarget
      • -
      • -
        eventName: string | symbol
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns Promise<any[]>

    • - -
    • -
      -

      Parameters

      -
        -
      • -
        emitter: _DOMEventTarget
      • -
      • -
        eventName: string
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns Promise<any[]>

    -
    - -
      - -
    • -
      const {
      setMaxListeners,
      EventEmitter
      } = require('events');

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); -
      - -

      Since

      v15.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional n: number
        -

        A non-negative number. The maximum number of listeners per EventTarget event.

        -
      • -
      • -
        Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
      -

      Returns void

    +
  • Defined in devices/Devices.ts:131
  • +
  • deleteService
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/DeviceId.html b/docs/classes/DeviceId.html index 45f2781..e88d4b5 100644 --- a/docs/classes/DeviceId.html +++ b/docs/classes/DeviceId.html @@ -20,7 +20,7 @@

    Hierarchy

    • DeviceId
    +
  • Defined in devices/DeviceId.ts:12
  • @@ -58,19 +58,19 @@
    deviceId: stringReturns DeviceId
    +
  • Defined in devices/DeviceId.ts:20
  • Properties

    m_array: Uint8Array
    +
  • Defined in devices/DeviceId.ts:14
  • m_str: string
    +
  • Defined in devices/DeviceId.ts:13
  • Accessors

    @@ -82,7 +82,7 @@
    +
  • Defined in devices/DeviceId.ts:54
  • +
  • Defined in devices/DeviceId.ts:47
  • Returns void

    +
  • Defined in devices/Devices.ts:84
    • @@ -200,7 +200,7 @@
      deviceId: string

    Returns void

    +
  • Defined in devices/Devices.ts:94
    • @@ -215,7 +215,7 @@

      Parameters

      deviceId: DeviceId

    Returns Device

    +
  • Defined in devices/Devices.ts:45
  • Returns Promise<Device>

    +
  • Defined in devices/Devices.ts:33
    • @@ -296,7 +296,7 @@

      Parameters

      deviceId: DeviceId

    Returns boolean

    +
  • Defined in devices/Devices.ts:54
  • Returns boolean

    +
  • Defined in devices/Devices.ts:64
    • @@ -339,7 +339,7 @@

    Returns Devices

    +
  • Defined in devices/Devices.ts:9
  • @@ -432,7 +432,7 @@
    service: Returns void
  • Returns Devices

    +
  • Defined in devices/Devices.ts:10
  • Returns Promise<void>

    +
  • Defined in devices/Devices.ts:73
    • @@ -692,7 +692,7 @@
    +
  • Defined in services/Directory.ts:28
  • @@ -34,15 +34,12 @@

    Constructors

    Properties

    -

    Methods

    addListener -closeServer closeService -createServer emit eventNames getMaxListeners -listen listenerCount listeners messageHandler @@ -76,9 +71,11 @@

    Methods

    sendServiceAnnouncement sendTimeStampReply setMaxListeners -waitForMessage -write -writeWithLength +start +stop +waitForMessage +write +writeWithLength getEventListeners listenerCount on @@ -90,7 +87,7 @@

    Constructors

    Returns Directory

    +
  • Defined in services/Service.ts:32
  • Properties

    -
    - -
    _handler: ServiceHandler<DirectoryData> = null
    device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: false = false
    +
  • Defined in services/Directory.ts:31
  • name: "Directory" = 'Directory'
    -
    - -
    parent: StageLinq
    +
  • Defined in services/Directory.ts:29
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    -
    - -
    serverStatus: boolean = false
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeAlive: number
    +
  • Defined in services/Directory.ts:32
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in node_modules/@types/node/events.d.ts:327
  • +
    + +
    instances: Map<string, Service<unknown>> = ...

    Methods

    @@ -246,21 +227,10 @@

    Returns Service.addListener

    • Defined in node_modules/@types/node/events.d.ts:354

    -
    - -
    +
    server: Server

    Returns Promise<void>

    -
    - -
    +
  • Defined in services/Service.ts:246
  • -
    - -
      @@ -386,7 +328,7 @@
    +
  • Defined in services/Directory.ts:95
  • Returns ServiceMessage<DirectoryData>

    +
  • Defined in services/Directory.ts:35
  • Returns Promise<void>

    +
  • Defined in services/Directory.ts:108
    • @@ -758,7 +700,7 @@
      token: Uint8Array

    Returns Promise<void>

    +
  • Defined in services/Directory.ts:160
  • -
    - +
    + +
    +
    +
    +
    + +
    • Wait for a message from the wire

      @@ -799,10 +764,10 @@
      messageId: number
    Returns Promise<DirectoryData>
    -
    - -
    +
    + +
    -
    - -
    +
    + +
    +
  • Defined in services/Service.ts:227
    • @@ -846,7 +811,7 @@
    +
  • Defined in network/Discovery.ts:24
  • +
  • Defined in network/Discovery.ts:31
  • @@ -41,7 +41,6 @@

    Properties

    deviceId hasLooped options -parent peers socket captureRejectionSymbol @@ -89,67 +88,55 @@

    Constructors

    +
  • Defined in network/Discovery.ts:45
  • Properties

    address: string
    +
  • Defined in network/Discovery.ts:33
  • announceTimer: Timer
    +
  • Defined in network/Discovery.ts:38
  • broadcastAddress: string
    +
  • Defined in network/Discovery.ts:34
  • deviceId: DeviceId = null
    +
  • Defined in network/Discovery.ts:37
  • hasLooped: boolean = false
    +
  • Defined in network/Discovery.ts:39
  • options: DiscoveryMessageOptions = null
    -
    - -
    parent: StageLinq
    +
  • Defined in network/Discovery.ts:35
  • peers: Map<string, ConnectionInfo> = ...
    +
  • Defined in network/Discovery.ts:36
  • socket: Socket
    +
  • Defined in network/Discovery.ts:32
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in network/Discovery.ts:107
    • @@ -248,7 +235,7 @@
      port: number
      address: string

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:152
  • Returns DiscoveryMessage

    +
  • Defined in network/Discovery.ts:217
  • +
  • Defined in network/Discovery.ts:252
    • @@ -333,7 +320,7 @@

      Parameters

      deviceId: DeviceId

    Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:54
  • +
  • Defined in network/Discovery.ts:62
  • +
  • Defined in network/Discovery.ts:70
  • Returns Promise<void>

    +
  • Defined in network/Discovery.ts:78
    • @@ -402,7 +389,7 @@
      callback: DeviceDiscoveryCallback

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:161
    • @@ -428,7 +415,7 @@

    Returns Discovery

    +
  • Defined in network/Discovery.ts:25
  • @@ -519,7 +506,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:26
  • @@ -542,7 +529,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:27
  • @@ -560,7 +547,7 @@
    listener: (Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:28
  • Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:184
  • +
  • Defined in network/Discovery.ts:129
  • Returns Buffer

    +
  • Defined in network/Discovery.ts:236
    • @@ -848,7 +835,7 @@
    +
  • Defined in services/FileTransfer.ts:44
  • +
  • Defined in services/FileTransfer.ts:50
  • @@ -37,22 +37,22 @@

    Constructors

    Properties

    Accessors

    @@ -61,16 +61,13 @@

    Accessors

    Methods

    @@ -105,106 +107,87 @@

    Constructors

    +
  • Defined in services/FileTransfer.ts:58
  • Properties

    #isAvailable: boolean = true
    +
  • Defined in services/FileTransfer.ts:56
  • #txid: number = 1
    -
    - -
    +
  • Defined in services/FileTransfer.ts:55
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:24
  • name: string = "FileTransfer"
    -
    - -
    parent: StageLinq
    +
  • Defined in services/FileTransfer.ts:51
  • receivedFile: WriteContext = null
    +
  • Defined in services/FileTransfer.ts:52
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    -
    - -
    serverStatus: boolean = false
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • +
    + +
    #instances: Map<string, FileTransfer> = ...
    captureRejectionSymbol: typeof captureRejectionSymbol
    +
    + +
    emitter: EventEmitter = ...
    errorMonitor: typeof errorMonitor
    @@ -237,7 +225,13 @@
    +
  • Defined in node_modules/@types/node/events.d.ts:327
  • +
    + +
    instances: Map<string, Service<unknown>> = ...

    Accessors

    @@ -247,7 +241,7 @@
    +
  • Defined in services/FileTransfer.ts:68
  • Methods

    @@ -281,21 +275,10 @@

    Returns Service.addListener

    • Defined in node_modules/@types/node/events.d.ts:354

    -
    - -
    +
    server: Server

    Returns Promise<void>

    -
    - -
    +
  • Defined in services/Service.ts:246
  • Returns Promise<Uint8Array>

    +
  • Defined in services/FileTransfer.ts:266
    • @@ -412,9 +379,9 @@

      Returns numberInherited from Service.getMaxListeners

      • Defined in node_modules/@types/node/events.d.ts:526

    -
    - -
    -
    - -
    +
  • Defined in services/FileTransfer.ts:485
  • +
  • Defined in services/FileTransfer.ts:244
  • @@ -613,55 +568,7 @@
    txid: number
  • Returns void

    Returns FileTransfer

    - -
  • -
    -

    Parameters

    -
      -
    • -
      event: "newSource"
    • -
    • -
      listener: ((source: Source) => void)
      -
        -
      • -
          -
        • (source: Source): void
        • -
        • -
          -

          Parameters

          -
          -

          Returns void

    -

    Returns FileTransfer

  • - -
  • -
    -

    Parameters

    -
      -
    • -
      event: "sourceRemoved"
    • -
    • -
      listener: ((sourceName: string, deviceId: DeviceId) => void)
      -
        -
      • -
          -
        • (sourceName: string, deviceId: DeviceId): void
        • -
        • -
          -

          Parameters

          -
            -
          • -
            sourceName: string
          • -
          • -
            deviceId: DeviceId
          -

          Returns void

    -

    Returns FileTransfer

  • +
  • Defined in services/FileTransfer.ts:46
  • +
  • Defined in services/FileTransfer.ts:85
  • Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:440
    • @@ -928,7 +835,7 @@

      Parameters

      filepath: string

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:423
  • +
  • Defined in services/FileTransfer.ts:409
    • @@ -953,7 +860,7 @@

      Parameters

      filepath: string

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:396
  • Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:471
  • -
    - -
    +
    + +
    +
    + +
    +
    + +
    • Gets new sources and deletes those which have been removed

      @@ -1017,10 +947,10 @@
      sources: stringReturns Promise<void>
    -
    - -
    +
    + +
    • Wait for a message from the wire

      @@ -1036,10 +966,10 @@
      messageId: number
    Returns Promise<FileTransferData>
    -
    - -
    +
    + +
    -
    - -
    +
    + +
    +
  • Defined in services/Service.ts:227
  • +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        eventName: string
      • +
      • +
        Rest ...args: any
      +

      Returns void

      @@ -1083,7 +1028,7 @@
    +
    + +
    +
    + +
    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

      Since

      v0.9.12

      @@ -1127,19 +1093,19 @@

      Returns numberInherited from Service.listenerCount

      • Defined in node_modules/@types/node/events.d.ts:271

    -
    - +
    +
      - +
    • -
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })(); +
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. It removes all listeners when exiting the loop. The value returned by each iteration is an array composed of the emitted event arguments.

      An AbortSignal can be used to cancel waiting on events:

      -
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort());

      Since

      v13.6.0, v12.16.0

      @@ -1172,15 +1138,15 @@
    • setMaxListeners
    • signalTransferComplete
    • -
    • updateSources
    • -
    • waitForMessage
    • -
    • write
    • -
    • writeWithLength
    • +
    • start
    • +
    • stop
    • +
    • updateSources
    • +
    • waitForMessage
    • +
    • write
    • +
    • writeWithLength
    • +
    • fileTransferListener
    • getEventListeners
    • +
    • getInstance
    • +
    • getInstances
    • listenerCount
    • -
    • on
    • +
    • on
    • once
    • setMaxListeners
    diff --git a/docs/classes/FileTransferHandler.html b/docs/classes/FileTransferHandler.html deleted file mode 100644 index 4e0ff71..0000000 --- a/docs/classes/FileTransferHandler.html +++ /dev/null @@ -1,946 +0,0 @@ -FileTransferHandler | StageLinqJS
    -
    - -
    -
    -
    -
    - -

    Class FileTransferHandler

    -
    -

    Hierarchy

    -
    -
    -
    -
    - -
    -
    -

    Constructors

    -
    - -
    -
    -

    Properties

    -
    - -
    name: "FileTransfer" = "FileTransfer"
    -
    - -
    parent: StageLinq
    -
    - -
    captureRejectionSymbol: typeof captureRejectionSymbol
    -
    - -
    captureRejections: boolean
    -

    Sets or gets the default captureRejection value for all emitters.

    -
    -
    - -
    defaultMaxListeners: number
    -
    - -
    errorMonitor: typeof errorMonitor
    -

    This symbol shall be used to install a listener for only monitoring 'error' -events. Listeners installed using this symbol are called before the regular -'error' listeners are called.

    -

    Installing a listener using this symbol does not change the behavior once an -'error' event is emitted, therefore the process will still crash if no -regular 'error' listener is installed.

    -
    -
    -

    Methods

    -
    - -
    -
    - -
      - -
    • -

      Alias for emitter.on(eventName, listener).

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
    -
    - -
      - -
    • -

      Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments -to each.

      -

      Returns true if the event had listeners, false otherwise.

      -
      const EventEmitter = require('events');
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        Rest ...args: any[]
      -

      Returns boolean

    -
    - -
      - -
    • -

      Returns an array listing the events for which the emitter has registered -listeners. The values in the array are strings or Symbols.

      -
      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] -
      - -

      Since

      v6.0.0

      -
      -

      Returns (string | symbol)[]

    -
    - -
    -
    - -
    -
    - -
      - -
    • -

      Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      - -

      Since

      v1.0.0

      -
      -

      Returns number

    -
    - -
    -
    - -
      - -
    • -

      Returns the number of listeners listening to the event named eventName.

      - -

      Since

      v3.2.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event being listened for

        -
      -

      Returns number

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      Alias for emitter.removeListener().

      - -

      Since

      v10.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Adds the listener function to the end of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.1.101

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Adds a one-timelistener function for the event named eventName. The -next time eventName is triggered, this listener is removed and then invoked.

      -
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.3.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Adds the listener function to the beginning of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this -listener is removed, and then invoked.

      -
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName, -including any wrappers (such as those created by .once()).

      -
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); -
      - -

      Since

      v9.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      Removes all listeners, or those of the specified eventName.

      -

      It is bad practice to remove listeners added elsewhere in the code, -particularly when the EventEmitter instance was created by some other -component or module (e.g. sockets or file streams).

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional event: string | symbol
      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      Removes the specified listener from the listener array for the event namedeventName.

      -
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); -
      -

      removeListener() will remove, at most, one instance of a listener from the -listener array. If any single listener has been added multiple times to the -listener array for the specified eventName, then removeListener() must be -called multiple times to remove each instance.

      -

      Once an event is emitted, all listeners attached to it at the -time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution -will not remove them fromemit() in progress. Subsequent events behave as expected.

      -
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A -
      -

      Because listeners are managed using an internal array, calling this will -change the position indices of any listener registered after the listener -being removed. This will not impact the order in which listeners are called, -but it means that any copies of the listener array as returned by -the emitter.listeners() method will need to be recreated.

      -

      When a single function has been added as a handler multiple times for a single -event (as in the example below), removeListener() will remove the most -recently added instance. In the example the once('ping')listener is removed:

      -
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns FileTransferHandler

    -
    - -
      - -
    • -

      By default EventEmitters will print a warning if more than 10 listeners are -added for a particular event. This is a useful default that helps finding -memory leaks. The emitter.setMaxListeners() method allows the limit to be -modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.3.5

      -
      -
      -

      Parameters

      -
        -
      • -
        n: number
      -

      Returns FileTransferHandler

    -
    - -
    -
    - -
    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -

      For EventEmitters this behaves exactly the same as calling .listeners on -the emitter.

      -

      For EventTargets this is the only way to get the event listeners for the -event target. This is useful for debugging and diagnostic purposes.

      -
      const { getEventListeners, EventEmitter } = require('events');

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      getEventListeners(ee, 'foo'); // [listener]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      getEventListeners(et, 'foo'); // [listener]
      } -
      - -

      Since

      v15.2.0, v14.17.0

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter | _DOMEventTarget
      • -
      • -
        name: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 -
      - -

      Since

      v0.9.12

      - -

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
        -

        The emitter to query

        -
      • -
      • -
        eventName: string | symbol
        -

        The event name

        -
      -

      Returns number

    -
    - -
      - -
    • -
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })(); -
      -

      Returns an AsyncIterator that iterates eventName events. It will throw -if the EventEmitter emits 'error'. It removes all listeners when -exiting the loop. The value returned by each iteration is an array -composed of the emitted event arguments.

      -

      An AbortSignal can be used to cancel waiting on events:

      -
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); -
      - -

      Since

      v13.6.0, v12.16.0

      - -

      Returns

      that iterates eventName events emitted by the emitter

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
      • -
      • -
        eventName: string
        -

        The name of the event being listened for

        -
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns AsyncIterableIterator<any>

    -
    - -
      - -
    • -

      Creates a Promise that is fulfilled when the EventEmitter emits the given -event or that is rejected if the EventEmitter emits 'error' while waiting. -The Promise will resolve with an array of all the arguments emitted to the -given event.

      -

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event -semantics and does not listen to the 'error' event.

      -
      const { once, EventEmitter } = require('events');

      async function run() {
      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.log('error happened', err);
      }
      }

      run(); -
      -

      The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the -'error' event itself, then it is treated as any other kind of event without -special handling:

      -
      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.log('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom -
      -

      An AbortSignal can be used to cancel waiting for the event:

      -
      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! -
      - -

      Since

      v11.13.0, v10.16.0

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: _NodeEventTarget
      • -
      • -
        eventName: string | symbol
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns Promise<any[]>

    • - -
    • -
      -

      Parameters

      -
        -
      • -
        emitter: _DOMEventTarget
      • -
      • -
        eventName: string
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns Promise<any[]>

    -
    - -
      - -
    • -
      const {
      setMaxListeners,
      EventEmitter
      } = require('events');

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); -
      - -

      Since

      v15.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional n: number
        -

        A non-negative number. The maximum number of listeners per EventTarget event.

        -
      • -
      • -
        Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
      -

      Returns void

    -
    -
    -

    Generated using TypeDoc

    -
    \ No newline at end of file diff --git a/docs/classes/ReadContext.html b/docs/classes/ReadContext.html index aa61cdf..d5203f7 100644 --- a/docs/classes/ReadContext.html +++ b/docs/classes/ReadContext.html @@ -22,7 +22,7 @@

    Hierarchy

    • ReadContext
    +
  • Defined in utils/ReadContext.ts:10
  • @@ -79,7 +79,7 @@
    p_littleEndian: booleanReturns ReadContext
    +
  • Defined in utils/ReadContext.ts:11
  • Properties

    @@ -87,19 +87,19 @@
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -114,7 +114,7 @@

    Parameters

    p_bytes: number

    Returns string

    +
  • Defined in utils/ReadContext.ts:61
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
    • @@ -145,7 +145,7 @@

      Parameters

      p_bytes: number

    Returns Buffer

    +
  • Defined in utils/ReadContext.ts:27
    • @@ -158,7 +158,7 @@

      Parameters

      p_bytes: number

    Returns Uint8Array

    +
  • Defined in utils/ReadContext.ts:15
  • +
  • Defined in utils/ReadContext.ts:79
  • +
  • Defined in utils/ReadContext.ts:115
  • +
  • Defined in utils/ReadContext.ts:66
  • +
  • Defined in utils/ReadContext.ts:39
  • +
  • Defined in utils/ReadContext.ts:49
  • +
  • Defined in utils/ReadContext.ts:43
  • +
  • Defined in utils/ReadContext.ts:55
  • +
  • Defined in utils/ReadContext.ts:127
  • +
  • Defined in utils/ReadContext.ts:103
  • +
  • Defined in utils/ReadContext.ts:91
  • +
  • Defined in utils/ReadContext.ts:139
  • +
  • Defined in utils/Context.ts:42
    • @@ -269,7 +269,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -283,7 +283,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • +
    server: Server

    Returns Promise<void>

    -
    - -
      - -
    • -

      Creates a new Net.Server for Service

      - -

      Returns

      -

      Returns Promise<Server>

    +
  • Defined in services/Service.ts:246
    • @@ -312,7 +271,7 @@
      data: Buffer
      socket: Socket

    Returns Promise<void>

    +
  • Defined in services/Service.ts:113
  • -
    - -
      - -
    • -

      Start Service Listener

      - -

      Returns

      -

      Returns Promise<AddressInfo>

      @@ -404,7 +352,7 @@

    Returns void

    +
  • Defined in services/Service.ts:258
  • Returns ServiceMessage<T>

    +
  • Defined in services/Service.ts:256
  • +
    + +
      + +
    • +

      Creates a new Server for Service

      + +

      Returns

      +

      Returns Promise<Server>

    +
    + +
      @@ -775,10 +755,10 @@

      Parameters

      buff: Buffer

    Returns Promise<boolean>

    -
    - -
    +
    + +
    • Wait for a message from the wire

      @@ -793,10 +773,10 @@
      eventMessage: string
    • messageId: number

    Returns Promise<T>

    -
    - -
    +
    + +
    • Write a Context message to the socket

      @@ -810,10 +790,10 @@

      Parameters

      ctx: WriteContext

    Returns Promise<boolean>

    -
    - -
    +
    + +
    • Write a length-prefixed Context message to the socket

      @@ -827,7 +807,7 @@

      Parameters

      ctx: WriteContext

    Returns Promise<boolean>

    +
  • Defined in services/Service.ts:227
    • @@ -838,7 +818,7 @@
    +
  • Defined in Sources/Sources.ts:10
  • +
  • Defined in Sources/Sources.ts:20
  • @@ -36,7 +36,6 @@

    Constructors

    Properties

    @@ -80,28 +80,18 @@

    Constructors

    +
  • Defined in Sources/Sources.ts:27
  • Properties

    _sources: Map<string, Source> = ...
    -
    - -
    parent: StageLinq
    +
  • Defined in Sources/Sources.ts:21
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in Sources/Sources.ts:89
  • +
    + +

    Returns Promise<Uint8Array>

    +
  • Defined in Sources/Sources.ts:100
  • +
  • Defined in Sources/Sources.ts:58
  • +
  • Defined in Sources/Sources.ts:67
  • +
  • Defined in Sources/Sources.ts:37
  • +
  • Defined in Sources/Sources.ts:47
  • Returns void

    +
  • Defined in Sources/Sources.ts:79
    • @@ -665,7 +668,7 @@
    -
    - +
    +
      - +
    • -
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })(); +
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. It removes all listeners when exiting the loop. The value returned by each iteration is an array composed of the emitted event arguments.

      An AbortSignal can be used to cancel waiting on events:

      -
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort());

      Since

      v13.6.0, v12.16.0

      @@ -751,15 +754,15 @@

    Returns Sources

    +
  • Defined in Sources/Sources.ts:15
  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "sourceRemoved"
    • +
    • +
      listener: ((sourceName: string, deviceId: DeviceId) => void)
      +
        +
      • +
          +
        • (sourceName: string, deviceId: DeviceId): void
        • +
        • +
          +

          Parameters

          +
            +
          • +
            sourceName: string
          • +
          • +
            deviceId: DeviceId
          +

          Returns void

    +

    Returns Sources

  • + +
  • +
    +

    Parameters

    +
      +
    • +
      event: "dbDownloaded"
    • +
    • +
      listener: ((source: Source) => void)
      +
        +
      • +
          +
        • (source: Source): void
        • +
        • +
          +

          Parameters

          +
          +

          Returns void

    +

    Returns Sources

  • diff --git a/docs/classes/StageLinq.html b/docs/classes/StageLinq.html index 123e715..2595d1f 100644 --- a/docs/classes/StageLinq.html +++ b/docs/classes/StageLinq.html @@ -21,11 +21,9 @@

    Class StageLinq

    Hierarchy

      -
    • EventEmitter -
        -
      • StageLinq
    @@ -37,52 +35,23 @@

    Constructors

    Properties

    -

    Methods

    -

    Constructors

    @@ -99,162 +68,52 @@

    Parameters

  • Optional options: StageLinqOptions
  • Returns StageLinq

    +
  • Defined in StageLinq/index.ts:35
  • Properties

    -
    - -
    beatInfo: BeatInfoHandler = null
    -
    - -
    databases: Databases = null
    - +
    devices: Devices = ...
    -
    - +
  • Defined in StageLinq/index.ts:21
  • +
    +
    directory: Directory = null
    +
  • Defined in StageLinq/index.ts:25
  • - +
    discovery: Discovery = ...
    -
    - -
    fileTransfer: FileTransferHandler = null
    -
    - -
    logger: Logger = Logger.instance
    +
  • Defined in StageLinq/index.ts:22
  • - +
    -
    - +
  • Defined in StageLinq/index.ts:20
  • +
    +
    servers: Map<string, Server> = ...
    -
    - -
    services: ServiceHandlers = {}
    +
  • Defined in StageLinq/index.ts:26
  • - -
    sources: Sources = null
    -
    - -
    stateMap: StateMapHandler = null
    +
  • Defined in StageLinq/index.ts:23
  • - -
    status: Status = null
    -
    - -
    -
    - -
    captureRejectionSymbol: typeof captureRejectionSymbol
    -
    - -
    captureRejections: boolean
    -

    Sets or gets the default captureRejection value for all emitters.

    -
    -
    - -
    defaultMaxListeners: number
    -
    - -
    errorMonitor: typeof errorMonitor
    -

    This symbol shall be used to install a listener for only monitoring 'error' -events. Listeners installed using this symbol are called before the regular -'error' listeners are called.

    -

    Installing a listener using this symbol does not change the behavior once an -'error' event is emitted, therefore the process will still crash if no -regular 'error' listener is installed.

    -
    +
  • Defined in StageLinq/index.ts:24
  • Methods

    -
    - -
      - -
    • -

      Alias for emitter.on(eventName, listener).

      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        serverName: string
      • -
      • -
        server: Server
      -

      Returns void

    -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        serverName: string
      -

      Returns void

    +
  • Defined in StageLinq/index.ts:81
  • -
    - -
      - -
    • -

      Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments -to each.

      -

      Returns true if the event had listeners, false otherwise.

      -
      const EventEmitter = require('events');
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        Rest ...args: any[]
      -

      Returns boolean

    -
    - -
      - -
    • -

      Returns an array listing the events for which the emitter has registered -listeners. The values in the array are strings or Symbols.

      -
      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] -
      - -

      Since

      v6.0.0

      -
      -

      Returns (string | symbol)[]

    -
    - -
      - -
    • -

      Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      - -

      Since

      v1.0.0

      -
      -

      Returns number

    -
    - -
      - -
    • -
      -

      Returns

      -

      Returns IterableIterator<[string, Server]>

    -
    - -
      - -
    • -

      Returns the number of listeners listening to the event named eventName.

      - -

      Since

      v3.2.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event being listened for

        -
      -

      Returns number

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] -
      - -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      Alias for emitter.removeListener().

      - -

      Since

      v10.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      • -
      • -
        listener: ((...args: any[]) => void)
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    -
    - -
      - -
    • -

      Adds the listener function to the end of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.1.101

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    -
    - -
      - -
    • -

      Adds a one-timelistener function for the event named eventName. The -next time eventName is triggered, this listener is removed and then invoked.

      -
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the -event listener to the beginning of the listeners array.

      -
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a -
      - -

      Since

      v0.3.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              -
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    -
    - -
    +
    + +
      +
    • -

      Adds the listener function to the beginning of the listeners array for the -event named eventName. No checks are made to see if the listener has -already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple -times.

      -
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      +

      Add a Server to the Server Register

      Parameters

      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        -
        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • -
            -

            Parameters

            -
              +
              serverName: string
            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    +

    Returns void

    -
    - -
    +
    + +
      +
    • -

      Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this -listener is removed, and then invoked.

      -
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v6.0.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
        -

        The name of the event.

        -
      • -
      • -
        listener: ((...args: any[]) => void)
        -

        The callback function

        +

        Remove a Server from the Server Register

        -
          -
        • -
            -
          • (...args: any[]): void
          • -
          • Parameters

            • -
              Rest ...args: any[]
            -

            Returns void

      -

      Returns StageLinq

    +

    Returns void

    -
    - -
    +
    + +
      +
    • -

      Returns a copy of the array of listeners for the event named eventName, -including any wrappers (such as those created by .once()).

      -
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); -
      +

      Get All Servers

      -

      Since

      v9.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        eventName: string | symbol
      -

      Returns Function[]

      +

      Returns IterableIterator<[string, Server]>

    -
    - -
    +
    + +
      +
    • -

      Removes all listeners, or those of the specified eventName.

      -

      It is bad practice to remove listeners added elsewhere in the code, -particularly when the EventEmitter instance was created by some other -component or module (e.g. sockets or file streams).

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Service Constructor Factory Function

      -

      Since

      v0.1.26

      -
      -
      -

      Parameters

      -
        +

        Returns

      +
      +

      Type Parameters

      +
      • -
        Optional event: string | symbol
      -

      Returns StageLinq

    -
    - -
      - -
    • -

      Removes the specified listener from the listener array for the event namedeventName.

      -
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); -
      -

      removeListener() will remove, at most, one instance of a listener from the -listener array. If any single listener has been added multiple times to the -listener array for the specified eventName, then removeListener() must be -called multiple times to remove each instance.

      -

      Once an event is emitted, all listeners attached to it at the -time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution -will not remove them fromemit() in progress. Subsequent events behave as expected.

      -
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A -
      -

      Because listeners are managed using an internal array, calling this will -change the position indices of any listener registered after the listener -being removed. This will not impact the order in which listeners are called, -but it means that any copies of the listener array as returned by -the emitter.listeners() method will need to be recreated.

      -

      When a single function has been added as a handler multiple times for a single -event (as in the example below), removeListener() will remove the most -recently added instance. In the example the once('ping')listener is removed:

      -
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); -
      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.1.26

      -
      +

      T extends Service<unknown, T>

    Parameters

    • -
      eventName: string | symbol
    • -
    • -
      listener: ((...args: any[]) => void)
      +
      ctor: (new (_deviceId?: DeviceId) => T)
      • -
          -
        • (...args: any[]): void
        • -
        • -
          -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
          -

          Returns void

    -

    Returns StageLinq

    -
    - -
      - -
    • -

      By default EventEmitters will print a warning if more than 10 listeners are -added for a particular event. This is a useful default that helps finding -memory leaks. The emitter.setMaxListeners() method allows the limit to be -modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      -

      Returns a reference to the EventEmitter, so that calls can be chained.

      - -

      Since

      v0.3.5

      -
      -
      -

      Parameters

      -
        -
      • -
        n: number
      -

      Returns StageLinq

    -
    - -
      - -
    • -

      Returns a copy of the array of listeners for the event named eventName.

      -

      For EventEmitters this behaves exactly the same as calling .listeners on -the emitter.

      -

      For EventTargets this is the only way to get the event listeners for the -event target. This is useful for debugging and diagnostic purposes.

      -
      const { getEventListeners, EventEmitter } = require('events');

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      getEventListeners(ee, 'foo'); // [listener]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      getEventListeners(et, 'foo'); // [listener]
      } -
      - -

      Since

      v15.2.0, v14.17.0

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter | _DOMEventTarget
      • -
      • -
        name: string | symbol
      -

      Returns Function[]

    -
    - -
      - -
    • -

      A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 -
      - -

      Since

      v0.9.12

      - -

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
        -

        The emitter to query

        -
      • -
      • -
        eventName: string | symbol
        -

        The event name

        -
      -

      Returns number

    -
    - -
      - -
    • -
      const { on, EventEmitter } = require('events');

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })(); -
      -

      Returns an AsyncIterator that iterates eventName events. It will throw -if the EventEmitter emits 'error'. It removes all listeners when -exiting the loop. The value returned by each iteration is an array -composed of the emitted event arguments.

      -

      An AbortSignal can be used to cancel waiting on events:

      -
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); -
      - -

      Since

      v13.6.0, v12.16.0

      - -

      Returns

      that iterates eventName events emitted by the emitter

      -
      -
      -

      Parameters

      -
        -
      • -
        emitter: EventEmitter
      • -
      • -
        eventName: string
        -

        The name of the event being listened for

        -
      • -
      • -
        Optional options: StaticEventEmitterOptions
      -

      Returns AsyncIterableIterator<any>

    -
    - -
      - +
        +
      • new (_deviceId?: DeviceId): T
      • -

        Creates a Promise that is fulfilled when the EventEmitter emits the given -event or that is rejected if the EventEmitter emits 'error' while waiting. -The Promise will resolve with an array of all the arguments emitted to the -given event.

        -

        This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event -semantics and does not listen to the 'error' event.

        -
        const { once, EventEmitter } = require('events');

        async function run() {
        const ee = new EventEmitter();

        process.nextTick(() => {
        ee.emit('myevent', 42);
        });

        const [value] = await once(ee, 'myevent');
        console.log(value);

        const err = new Error('kaboom');
        process.nextTick(() => {
        ee.emit('error', err);
        });

        try {
        await once(ee, 'myevent');
        } catch (err) {
        console.log('error happened', err);
        }
        }

        run(); -
        -

        The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the -'error' event itself, then it is treated as any other kind of event without -special handling:

        -
        const { EventEmitter, once } = require('events');

        const ee = new EventEmitter();

        once(ee, 'error')
        .then(([err]) => console.log('ok', err.message))
        .catch((err) => console.log('error', err.message));

        ee.emit('error', new Error('boom'));

        // Prints: ok boom -
        -

        An AbortSignal can be used to cancel waiting for the event:

        -
        const { EventEmitter, once } = require('events');

        const ee = new EventEmitter();
        const ac = new AbortController();

        async function foo(emitter, event, signal) {
        try {
        await once(emitter, event, { signal });
        console.log('event emitted!');
        } catch (error) {
        if (error.name === 'AbortError') {
        console.error('Waiting for the event was canceled!');
        } else {
        console.error('There was an error', error.message);
        }
        }
        }

        foo(ee, 'foo', ac.signal);
        ac.abort(); // Abort waiting for the event
        ee.emit('foo'); // Prints: Waiting for the event was canceled! -
        - -

        Since

        v11.13.0, v10.16.0

        -

        Parameters

        • -
          emitter: _NodeEventTarget
        • -
        • -
          eventName: string | symbol
        • +
          Optional _deviceId: DeviceId
        +

        Returns T

  • -
    Optional options: StaticEventEmitterOptions
  • -

    Returns Promise<any[]>

    -
    - -
      - -
    • -
      const {
      setMaxListeners,
      EventEmitter
      } = require('events');

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); -
      - -

      Since

      v15.4.0

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional n: number
        -

        A non-negative number. The maximum number of listeners per EventTarget event.

        -
      • -
      • -
        Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
      -

      Returns void

    +
  • Defined in StageLinq/index.ts:45
  • +
  • startServiceListener
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/StateMap.html b/docs/classes/StateMap.html index b8fa554..c5f1845 100644 --- a/docs/classes/StateMap.html +++ b/docs/classes/StateMap.html @@ -25,7 +25,7 @@

    Hierarchy

    • StateMap
    +
  • Defined in services/StateMap.ts:66
  • @@ -37,34 +37,29 @@

    Constructors

    Properties

    -

    Methods

    +
  • Defined in services/StateMap.ts:77
  • Properties

    -
    - -
    _handler: ServiceHandler<StateData> = null
    device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    -
    - -
    -
    - -
    hasReceivedState: boolean = false
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:24
  • name: "StateMap" = "StateMap"
    -
    - -
    parent: StageLinq
    +
  • Defined in services/StateMap.ts:67
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    -
    - -
    serverStatus: boolean = false
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • +
    + +
    #instances: Map<string, StateMap> = ...
    captureRejectionSymbol: typeof captureRejectionSymbol
    +
    + +
    emitter: EventEmitter = ...
    errorMonitor: typeof errorMonitor
    @@ -220,7 +196,13 @@
    +
  • Defined in node_modules/@types/node/events.d.ts:327
  • +
    + +
    instances: Map<string, Service<unknown>> = ...

    Methods

    @@ -254,21 +236,10 @@

    Returns Service.addListener

    • Defined in node_modules/@types/node/events.d.ts:354

    -
    - -
    +
    server: Server

    Returns Promise<void>

    -
    - -
    +
  • Defined in services/Service.ts:246
  • -
    - -
      @@ -394,7 +337,7 @@
    +
  • Defined in services/StateMap.ts:175
  • +
  • Defined in services/StateMap.ts:123
  • Returns Promise<void>

    +
  • Defined in services/StateMap.ts:194
  • +
    + +
    +
    + +
    +
  • Defined in services/StateMap.ts:92
    • @@ -802,10 +768,10 @@
      interval: number
      socket: Socket

    Returns Promise<void>

    -
    - -
    +
    + +
    • Wait for a message from the wire

      @@ -821,10 +787,10 @@
      messageId: number
    Returns Promise<StateData>
    -
    - -
    +
    + +
    -
    - -
    +
    + +
    +
  • Defined in services/Service.ts:227
    • @@ -868,7 +834,7 @@
    +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        eventName: string
      • +
      • +
        Rest ...args: any
      +

      Returns void

    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

      Since

      v0.9.12

      @@ -917,14 +898,14 @@
    +
  • Defined in services/TimeSync.ts:16
  • @@ -34,36 +34,31 @@

    Constructors

    Properties

    -

    Methods

    addListener -closeServer closeService -createServer emit eventNames getMaxListeners getTimeStamp -listen listenerCount listeners messageHandler @@ -79,11 +74,13 @@

    Methods

    sendTimeSyncQuery sendTimeSyncRequest setMaxListeners +start +stop timeAvg timeSyncMsgHelper -waitForMessage -write -writeWithLength +waitForMessage +write +writeWithLength getEventListeners listenerCount on @@ -95,7 +92,7 @@

    Constructors

    Returns TimeSynchronization

    +
  • Defined in services/Service.ts:32
  • Properties

    -
    - -
    _handler: ServiceHandler<TimeSyncData> = null
    avgTimeArray: bigint[] = []
    +
  • Defined in services/TimeSync.ts:21
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = false
    +
  • Defined in services/TimeSync.ts:18
  • localTime: bigint
    +
  • Defined in services/TimeSync.ts:19
  • name: "TimeSynchronization" = "TimeSynchronization"
    -
    - -
    parent: StageLinq
    +
  • Defined in services/TimeSync.ts:17
  • remoteTime: bigint
    +
  • Defined in services/TimeSync.ts:20
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    -
    - -
    serverStatus: boolean = false
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in node_modules/@types/node/events.d.ts:327
  • +
    + +
    instances: Map<string, Service<unknown>> = ...

    Methods

    @@ -261,21 +242,10 @@

    Returns Service.addListener

    • Defined in node_modules/@types/node/events.d.ts:354

    -
    - -
    +
    server: Server

    Returns Promise<void>

    -
    - -
    +
  • Defined in services/Service.ts:246
  • -
    - -
    +
  • Defined in services/TimeSync.ts:50
    • @@ -409,7 +351,7 @@
    +
  • Defined in services/TimeSync.ts:108
  • +
  • Defined in services/TimeSync.ts:71
  • Returns void

    +
  • Defined in services/TimeSync.ts:55
  • +
  • Defined in services/TimeSync.ts:24
  • +
    + +
    +
    + +
      @@ -803,7 +768,7 @@

      Parameters

      time: bigint

    Returns void

    +
  • Defined in services/TimeSync.ts:96
    • @@ -818,10 +783,10 @@
      msgId: number
      msgs: bigint[]

    Returns Buffer

    -
    - -
    +
    + +
    • Wait for a message from the wire

      @@ -837,10 +802,10 @@
      messageId: number
    Returns Promise<TimeSyncData>
    -
    - -
    +
    + +
    -
    - -
    +
    + +
    +
  • Defined in services/Service.ts:227
    • @@ -884,7 +849,7 @@

    Implements

    • Partial<ITrackData>
    +
  • Defined in types/models/Track.ts:44
  • @@ -32,36 +32,36 @@

    Constructors

      - +
    • Parameters

      @@ -70,16 +70,16 @@

      Parameters

      prefix: string

      State prefix that should proceed the property

    -

    Returns TrackData

    +
  • Defined in types/models/Track.ts:69
  • Properties

    #prefix: string
    +
  • Defined in types/models/Track.ts:45
  • #source: {
        location: DeviceId;
        name: string;
        path: string;
    } = null
    @@ -93,79 +93,79 @@
    name:
    path: string
    +
  • Defined in types/models/Track.ts:46
  • ArtistName: string = ""
    +
  • Defined in types/models/Track.ts:52
  • CurrentBPM: number = 0
    +
  • Defined in types/models/Track.ts:53
  • SampleRate: number = 0
    +
  • Defined in types/models/Track.ts:54
  • SongAnalyzed: boolean = false
    +
  • Defined in types/models/Track.ts:55
  • SongLoaded: boolean = false
    +
  • Defined in types/models/Track.ts:56
  • SongName: string = ""
    +
  • Defined in types/models/Track.ts:57
  • SoundSwitchGUID: string = ""
    +
  • Defined in types/models/Track.ts:58
  • TrackBytes: number = 0
    +
  • Defined in types/models/Track.ts:59
  • TrackLength: number = 0
    +
  • Defined in types/models/Track.ts:60
  • TrackName: string = ""
    +
  • Defined in types/models/Track.ts:61
  • TrackNetworkPath: string = ""
    +
  • Defined in types/models/Track.ts:62
  • TrackURI: string = ""
    +
  • Defined in types/models/Track.ts:63
  • Accessors

    @@ -177,7 +177,7 @@
    +
  • Defined in types/models/Track.ts:76
    • @@ -193,7 +193,7 @@
      name: : string
    +
  • Defined in types/models/Track.ts:80
  • +
  • Track +
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/WriteContext.html b/docs/classes/WriteContext.html index 4bfb7f3..031a2ad 100644 --- a/docs/classes/WriteContext.html +++ b/docs/classes/WriteContext.html @@ -22,7 +22,7 @@

    Hierarchy

    • WriteContext
    +
  • Defined in utils/WriteContext.ts:11
  • @@ -75,32 +75,32 @@
    Optional p_options: Returns WriteContext
    +
  • Defined in utils/WriteContext.ts:14
  • Properties

    autoGrow: boolean
    +
  • Defined in utils/WriteContext.ts:12
  • buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -115,7 +115,7 @@

    Parameters

    p_size: number

    Returns void

    +
  • Defined in utils/WriteContext.ts:29
  • +
  • Defined in utils/WriteContext.ts:20
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/WriteContext.ts:43
  • +
  • Defined in utils/Context.ts:42
    • @@ -172,7 +172,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -186,7 +186,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/WriteContext.ts:25
  • +
  • Defined in utils/Context.ts:18
    • @@ -219,7 +219,7 @@
      p_buffer: Uint8Array
      p_bytes: number = -1

    Returns number

    +
  • Defined in utils/WriteContext.ts:51
    • @@ -232,7 +232,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:63
    • @@ -245,7 +245,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:92
    • @@ -258,7 +258,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:70
    • @@ -271,7 +271,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:99
    • @@ -284,7 +284,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:85
    • @@ -297,7 +297,7 @@

      Parameters

      p_value: bigint

    Returns number

    +
  • Defined in utils/WriteContext.ts:78
    • @@ -310,7 +310,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:106
  • +
  • Defined in types/options.ts:24
  • Returns string

    +
  • Defined in utils/getTempFilePath.ts:11
  • +
  • Defined in utils/sleep.ts:1
  • +
  • Defined in types/messages.ts:8
  • source: string
    +
  • Defined in types/messages.ts:6
  • unit?: {
        decks: number;
        name: string;
        type: string;
    }
    @@ -101,7 +101,7 @@
    name:
    type: string
    +
  • Defined in types/messages.ts:17
  • +
  • Defined in types/messages.ts:6
  • +
  • Defined in types/options.ts:6
  • Generated using TypeDoc

    diff --git a/docs/interfaces/FileTransferData.html b/docs/interfaces/FileTransferData.html index bed3a22..29b9c25 100644 --- a/docs/interfaces/FileTransferData.html +++ b/docs/interfaces/FileTransferData.html @@ -20,7 +20,7 @@

    Hierarchy

    • FileTransferData
    +
  • Defined in services/FileTransfer.ts:15
  • @@ -42,37 +42,37 @@

    Properties

    data?: Buffer
    +
  • Defined in services/FileTransfer.ts:22
  • deviceId: DeviceId
    +
  • Defined in services/FileTransfer.ts:17
  • offset?: number
    +
  • Defined in services/FileTransfer.ts:20
  • service: FileTransfer
    +
  • Defined in services/FileTransfer.ts:16
  • size?: number
    +
  • Defined in services/FileTransfer.ts:19
  • sources?: string[]
    +
  • Defined in services/FileTransfer.ts:21
  • txid: number
    +
  • Defined in services/FileTransfer.ts:18
  • +
  • Defined in services/StateMap.ts:51
  • +
  • TrackDBEntry +
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index 13c7e81..f31a9c2 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -17,35 +17,26 @@

    StageLinqJS

    Index

    Enumerations

    -

    Classes

    @@ -57,34 +48,21 @@

    Interfaces

    DiscoveryMessageOptions FileTransferData FileTransferProgress -ServiceHandlers ServiceMessage Source StageLinqOptions StateData TimeSyncData -Track +TrackDBEntry

    Type Aliases

    Variables

    -
    @@ -116,32 +94,23 @@

    +
  • Defined in types/messages.ts:33
  • +
  • Defined in types/options.ts:36
  • +
  • Defined in types/models/State.ts:1
  • +
  • Defined in types/models/Unit.ts:10
  • Returns Promise<void>

    +
  • Defined in services/Service.ts:246
    • @@ -287,7 +287,7 @@

      Parameters

      deviceId: DeviceId

    Returns void

    +
  • Defined in services/BeatInfo.ts:63
  • +
  • Defined in services/BeatInfo.ts:70
  • +
  • Defined in services/BeatInfo.ts:128
  • +
  • Defined in services/BeatInfo.ts:31
  • +
  • Defined in services/BeatInfo.ts:97
  • +
  • Defined in services/BeatInfo.ts:91
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/BeatInfo.ts:79
  • +
  • Defined in services/Service.ts:85
    • @@ -808,7 +808,7 @@
      messageId: number
    Returns Promise<BeatData>

    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
  • +
  • Defined in services/BeatInfo.ts:59
    • @@ -893,7 +893,7 @@
      eventName: string
      Rest ...args: any

    Returns void

    +
  • Defined in services/BeatInfo.ts:56
    • diff --git a/docs/classes/Broadcast.html b/docs/classes/Broadcast.html new file mode 100644 index 0000000..06f4fe2 --- /dev/null +++ b/docs/classes/Broadcast.html @@ -0,0 +1,999 @@ +Broadcast | StageLinqJS
      +
      + +
      +
      +
      +
      + +

      Class Broadcast

      +
      +

      Hierarchy

      +
      +
      +
      +
      + +
      +
      +

      Constructors

      +
      + +
      +
      +

      Properties

      +
      + +
      device: Device
      +
      + +
      deviceId: DeviceId = null
      +
      + +
      isBufferedService: boolean = false
      +
      + +
      name: "Broadcast" = "Broadcast"
      +
      + +
      server: Server = null
      +
      + +
      serverInfo: AddressInfo
      +
      + +
      socket: Socket = null
      +
      + +
      timeout: Timer
      +
      + +
      captureRejectionSymbol: typeof captureRejectionSymbol
      +
      + +
      captureRejections: boolean
      +

      Sets or gets the default captureRejection value for all emitters.

      +
      +
      + +
      defaultMaxListeners: number
      +
      + +
      emitter: EventEmitter = ...
      +
      + +
      errorMonitor: typeof errorMonitor
      +

      This symbol shall be used to install a listener for only monitoring 'error' +events. Listeners installed using this symbol are called before the regular +'error' listeners are called.

      +

      Installing a listener using this symbol does not change the behavior once an +'error' event is emitted, therefore the process will still crash if no +regular 'error' listener is installed.

      +
      +
      + +
      instances: Map<string, Service<unknown>> = ...
      +
      +

      Methods

      +
      + +
        + +
      • +

        Alias for emitter.on(eventName, listener).

        + +

        Since

        v0.1.26

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        • +
        • +
          listener: ((...args: any[]) => void)
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Callback for server timeout timer +Runs if device doesn't conect to service server

        +
        +
        +

        Parameters

        +
          +
        • +
          deviceId: DeviceId
        • +
        • +
          serviceName: string
        • +
        • +
          server: Server
        +

        Returns Promise<void>

      +
      + +
        + +
      • +

        Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

        +

        Returns true if the event had listeners, false otherwise.

        +
        const EventEmitter = require('events');
        const myEmitter = new EventEmitter();

        // First listener
        myEmitter.on('event', function firstListener() {
        console.log('Helloooo! first listener');
        });
        // Second listener
        myEmitter.on('event', function secondListener(arg1, arg2) {
        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
        });
        // Third listener
        myEmitter.on('event', function thirdListener(...args) {
        const parameters = args.join(', ');
        console.log(`event with parameters ${parameters} in third listener`);
        });

        console.log(myEmitter.listeners('event'));

        myEmitter.emit('event', 1, 2, 3, 4, 5);

        // Prints:
        // [
        // [Function: firstListener],
        // [Function: secondListener],
        // [Function: thirdListener]
        // ]
        // Helloooo! first listener
        // event with parameters 1, 2 in second listener
        // event with parameters 1, 2, 3, 4, 5 in third listener +
        + +

        Since

        v0.1.26

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        • +
        • +
          Rest ...args: any[]
        +

        Returns boolean

      +
      + +
        + +
      • +

        Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

        +
        const EventEmitter = require('events');
        const myEE = new EventEmitter();
        myEE.on('foo', () => {});
        myEE.on('bar', () => {});

        const sym = Symbol('symbol');
        myEE.on(sym, () => {});

        console.log(myEE.eventNames());
        // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
        + +

        Since

        v6.0.0

        +
        +

        Returns (string | symbol)[]

      +
      + +
        + +
      • +

        Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

        + +

        Since

        v1.0.0

        +
        +

        Returns number

      +
      + +
        + +
      • +

        Returns the number of listeners listening to the event named eventName.

        + +

        Since

        v3.2.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
          +

          The name of the event being listened for

          +
        +

        Returns number

      +
      + +
        + +
      • +

        Returns a copy of the array of listeners for the event named eventName.

        +
        server.on('connection', (stream) => {
        console.log('someone connected!');
        });
        console.log(util.inspect(server.listeners('connection')));
        // Prints: [ [Function] ] +
        + +

        Since

        v0.1.26

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        +

        Returns Function[]

      +
      + +
      +
      + +
        + +
      • +

        Alias for emitter.removeListener().

        + +

        Since

        v10.0.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        • +
        • +
          listener: ((...args: any[]) => void)
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

        +
        server.on('connection', (stream) => {
        console.log('someone connected!');
        }); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        +

        By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

        +
        const myEE = new EventEmitter();
        myEE.on('foo', () => console.log('a'));
        myEE.prependListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a +
        + +

        Since

        v0.1.101

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
          +

          The name of the event.

          +
        • +
        • +
          listener: ((...args: any[]) => void)
          +

          The callback function

          +
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

        +
        server.once('connection', (stream) => {
        console.log('Ah, we have our first user!');
        }); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        +

        By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

        +
        const myEE = new EventEmitter();
        myEE.once('foo', () => console.log('a'));
        myEE.prependOnceListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a +
        + +

        Since

        v0.3.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
          +

          The name of the event.

          +
        • +
        • +
          listener: ((...args: any[]) => void)
          +

          The callback function

          +
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
      +
      + +
        + +
      • +

        Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

        +
        server.prependListener('connection', (stream) => {
        console.log('someone connected!');
        }); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        + +

        Since

        v6.0.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
          +

          The name of the event.

          +
        • +
        • +
          listener: ((...args: any[]) => void)
          +

          The callback function

          +
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

        +
        server.prependOnceListener('connection', (stream) => {
        console.log('Ah, we have our first user!');
        }); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        + +

        Since

        v6.0.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
          +

          The name of the event.

          +
        • +
        • +
          listener: ((...args: any[]) => void)
          +

          The callback function

          +
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

        +
        const emitter = new EventEmitter();
        emitter.once('log', () => console.log('log once'));

        // Returns a new Array with a function `onceWrapper` which has a property
        // `listener` which contains the original listener bound above
        const listeners = emitter.rawListeners('log');
        const logFnWrapper = listeners[0];

        // Logs "log once" to the console and does not unbind the `once` event
        logFnWrapper.listener();

        // Logs "log once" to the console and removes the listener
        logFnWrapper();

        emitter.on('log', () => console.log('log persistently'));
        // Will return a new Array with a single function bound by `.on()` above
        const newListeners = emitter.rawListeners('log');

        // Logs "log persistently" twice
        newListeners[0]();
        emitter.emit('log'); +
        + +

        Since

        v9.4.0

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        +

        Returns Function[]

      +
      + +
        + +
      • +

        Removes all listeners, or those of the specified eventName.

        +

        It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        + +

        Since

        v0.1.26

        +
        +
        +

        Parameters

        +
          +
        • +
          Optional event: string | symbol
        +

        Returns Broadcast

      +
      + +
        + +
      • +

        Removes the specified listener from the listener array for the event namedeventName.

        +
        const callback = (stream) => {
        console.log('someone connected!');
        };
        server.on('connection', callback);
        // ...
        server.removeListener('connection', callback); +
        +

        removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

        +

        Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

        +
        const myEmitter = new MyEmitter();

        const callbackA = () => {
        console.log('A');
        myEmitter.removeListener('event', callbackB);
        };

        const callbackB = () => {
        console.log('B');
        };

        myEmitter.on('event', callbackA);

        myEmitter.on('event', callbackB);

        // callbackA removes listener callbackB but it will still be called.
        // Internal listener array at time of emit [callbackA, callbackB]
        myEmitter.emit('event');
        // Prints:
        // A
        // B

        // callbackB is now removed.
        // Internal listener array [callbackA]
        myEmitter.emit('event');
        // Prints:
        // A +
        +

        Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

        +

        When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

        +
        const ee = new EventEmitter();

        function pong() {
        console.log('pong');
        }

        ee.on('ping', pong);
        ee.once('ping', pong);
        ee.removeListener('ping', pong);

        ee.emit('ping');
        ee.emit('ping'); +
        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        + +

        Since

        v0.1.26

        +
        +
        +

        Parameters

        +
          +
        • +
          eventName: string | symbol
        • +
        • +
          listener: ((...args: any[]) => void)
          +
            +
          • +
              +
            • (...args: any[]): void
            • +
            • +
              +

              Parameters

              +
                +
              • +
                Rest ...args: any[]
              +

              Returns void

        +

        Returns Broadcast

      +
      + +
        + +
      • +

        By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

        +

        Returns a reference to the EventEmitter, so that calls can be chained.

        + +

        Since

        v0.3.5

        +
        +
        +

        Parameters

        +
          +
        • +
          n: number
        +

        Returns Broadcast

      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
        + +
      • +

        Returns a copy of the array of listeners for the event named eventName.

        +

        For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

        +

        For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

        +
        const { getEventListeners, EventEmitter } = require('events');

        {
        const ee = new EventEmitter();
        const listener = () => console.log('Events are fun');
        ee.on('foo', listener);
        getEventListeners(ee, 'foo'); // [listener]
        }
        {
        const et = new EventTarget();
        const listener = () => console.log('Events are fun');
        et.addEventListener('foo', listener);
        getEventListeners(et, 'foo'); // [listener]
        } +
        + +

        Since

        v15.2.0, v14.17.0

        +
        +
        +

        Parameters

        +
          +
        • +
          emitter: EventEmitter | _DOMEventTarget
        • +
        • +
          name: string | symbol
        +

        Returns Function[]

      +
      + +
        + +
      • +

        A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

        +
        const { EventEmitter, listenerCount } = require('events');
        const myEmitter = new EventEmitter();
        myEmitter.on('event', () => {});
        myEmitter.on('event', () => {});
        console.log(listenerCount(myEmitter, 'event'));
        // Prints: 2 +
        + +

        Since

        v0.9.12

        + +

        Deprecated

        Since v3.2.0 - Use listenerCount instead.

        +
        +
        +

        Parameters

        +
          +
        • +
          emitter: EventEmitter
          +

          The emitter to query

          +
        • +
        • +
          eventName: string | symbol
          +

          The event name

          +
        +

        Returns number

      +
      + +
        + +
      • +
        const { on, EventEmitter } = require('events');

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo')) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })(); +
        +

        Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

        +

        An AbortSignal can be used to cancel waiting on events:

        +
        const { on, EventEmitter } = require('events');
        const ac = new AbortController();

        (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
        ee.emit('foo', 'bar');
        ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo', { signal: ac.signal })) {
        // The execution of this inner block is synchronous and it
        // processes one event at a time (even with await). Do not use
        // if concurrent execution is required.
        console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
        })();

        process.nextTick(() => ac.abort()); +
        + +

        Since

        v13.6.0, v12.16.0

        + +

        Returns

        that iterates eventName events emitted by the emitter

        +
        +
        +

        Parameters

        +
          +
        • +
          emitter: EventEmitter
        • +
        • +
          eventName: string
          +

          The name of the event being listened for

          +
        • +
        • +
          Optional options: StaticEventEmitterOptions
        +

        Returns AsyncIterableIterator<any>

      +
      + +
        + +
      • +

        Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

        +

        This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

        +
        const { once, EventEmitter } = require('events');

        async function run() {
        const ee = new EventEmitter();

        process.nextTick(() => {
        ee.emit('myevent', 42);
        });

        const [value] = await once(ee, 'myevent');
        console.log(value);

        const err = new Error('kaboom');
        process.nextTick(() => {
        ee.emit('error', err);
        });

        try {
        await once(ee, 'myevent');
        } catch (err) {
        console.log('error happened', err);
        }
        }

        run(); +
        +

        The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

        +
        const { EventEmitter, once } = require('events');

        const ee = new EventEmitter();

        once(ee, 'error')
        .then(([err]) => console.log('ok', err.message))
        .catch((err) => console.log('error', err.message));

        ee.emit('error', new Error('boom'));

        // Prints: ok boom +
        +

        An AbortSignal can be used to cancel waiting for the event:

        +
        const { EventEmitter, once } = require('events');

        const ee = new EventEmitter();
        const ac = new AbortController();

        async function foo(emitter, event, signal) {
        try {
        await once(emitter, event, { signal });
        console.log('event emitted!');
        } catch (error) {
        if (error.name === 'AbortError') {
        console.error('Waiting for the event was canceled!');
        } else {
        console.error('There was an error', error.message);
        }
        }
        }

        foo(ee, 'foo', ac.signal);
        ac.abort(); // Abort waiting for the event
        ee.emit('foo'); // Prints: Waiting for the event was canceled! +
        + +

        Since

        v11.13.0, v10.16.0

        +
        +
        +

        Parameters

        +
          +
        • +
          emitter: _NodeEventTarget
        • +
        • +
          eventName: string | symbol
        • +
        • +
          Optional options: StaticEventEmitterOptions
        +

        Returns Promise<any[]>

      • + +
      • +
        +

        Parameters

        +
          +
        • +
          emitter: _DOMEventTarget
        • +
        • +
          eventName: string
        • +
        • +
          Optional options: StaticEventEmitterOptions
        +

        Returns Promise<any[]>

      +
      + +
        + +
      • +
        const {
        setMaxListeners,
        EventEmitter
        } = require('events');

        const target = new EventTarget();
        const emitter = new EventEmitter();

        setMaxListeners(5, target, emitter); +
        + +

        Since

        v15.4.0

        +
        +
        +

        Parameters

        +
          +
        • +
          Optional n: number
          +

          A non-negative number. The maximum number of listeners per EventTarget event.

          +
        • +
        • +
          Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]
        +

        Returns void

      +
      +
      +

      Generated using TypeDoc

      +
      \ No newline at end of file diff --git a/docs/classes/Context.html b/docs/classes/Context.html index dd82a21..0223447 100644 --- a/docs/classes/Context.html +++ b/docs/classes/Context.html @@ -23,7 +23,7 @@

      Hierarchy

    • ReadContext
    • WriteContext
    +
  • Defined in utils/Context.ts:3
  • @@ -65,24 +65,24 @@
    p_buffer: ArrayBuffer
    Optional p_littleEndian: boolean

    Returns Context

    +
  • Defined in utils/Context.ts:8
  • Properties

    buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -92,7 +92,7 @@
    +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/Context.ts:42
    • @@ -121,7 +121,7 @@

      Parameters

      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -134,7 +134,7 @@

      Parameters

      p_offset: number

    Returns void

    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns DbConnection

    +
  • Defined in Sources/DbConnection.ts:14
  • Properties

    db: Database
    +
  • Defined in Sources/DbConnection.ts:7
  • dbPath: string
    +
  • Defined in Sources/DbConnection.ts:8
  • Methods

    @@ -84,7 +84,7 @@
    +
  • Defined in Sources/DbConnection.ts:79
    • @@ -102,7 +102,7 @@
      _trackPath: string

    Returns Promise<TrackDBEntry>

    +
  • Defined in Sources/DbConnection.ts:57
  • +
  • Defined in Sources/DbConnection.ts:28
    • @@ -146,7 +146,7 @@

      Parameters

      data: Buffer

    Returns Promise<Buffer>

    +
  • Defined in Sources/DbConnection.ts:39
  • Returns void

    +
  • Defined in devices/Devices.ts:123
  • +
  • Defined in devices/Devices.ts:115
    • @@ -113,7 +113,7 @@

      Parameters

      serviceName: string

    Returns void

    +
  • Defined in devices/Devices.ts:131
  • Returns void

    +
  • Defined in devices/Devices.ts:84
    • @@ -200,7 +200,7 @@
      deviceId: string

    Returns void

    +
  • Defined in devices/Devices.ts:94
    • @@ -215,7 +215,7 @@

      Parameters

      deviceId: DeviceId

    Returns Device

    +
  • Defined in devices/Devices.ts:45
    • @@ -268,7 +268,7 @@

      Parameters

      deviceId: DeviceId

    Returns Promise<Device>

    +
  • Defined in devices/Devices.ts:33
    • @@ -296,7 +296,7 @@

      Parameters

      deviceId: DeviceId

    Returns boolean

    +
  • Defined in devices/Devices.ts:54
  • Returns boolean

    +
  • Defined in devices/Devices.ts:64
  • Returns Devices

    +
  • Defined in devices/Devices.ts:9
  • @@ -432,7 +432,7 @@
    service: Returns void
  • Returns Devices

    +
  • Defined in devices/Devices.ts:10
  • Returns Promise<void>

    +
  • Defined in devices/Devices.ts:73
    • diff --git a/docs/classes/Directory.html b/docs/classes/Directory.html index 0c08c39..f9b284b 100644 --- a/docs/classes/Directory.html +++ b/docs/classes/Directory.html @@ -22,7 +22,7 @@

      Hierarchy

      • Directory
    +
  • Defined in services/Directory.ts:29
  • @@ -99,7 +99,7 @@
    Optional deviceId: Returns Directory
    +
  • Defined in services/Service.ts:32
  • Properties

    @@ -107,54 +107,54 @@
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: false = false
    +
  • Defined in services/Directory.ts:32
  • name: "Directory" = 'Directory'
    +
  • Defined in services/Directory.ts:30
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeAlive: number
    +
  • Defined in services/Directory.ts:33
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -247,7 +247,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
  • Defined in services/Directory.ts:96
    • @@ -490,7 +490,7 @@
      socket: Socket

    Returns ServiceMessage<DirectoryData>

    +
  • Defined in services/Directory.ts:36
    • @@ -683,7 +683,7 @@
      deviceId: Socket

    Returns Promise<void>

    +
  • Defined in services/Directory.ts:110
    • @@ -700,7 +700,7 @@
      token: Uint8Array

    Returns Promise<void>

    +
  • Defined in services/Directory.ts:167
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
    • @@ -764,7 +764,7 @@
      messageId: number
    Returns Promise<DirectoryData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • diff --git a/docs/classes/Discovery.html b/docs/classes/Discovery.html index 47c399a..4d23c34 100644 --- a/docs/classes/Discovery.html +++ b/docs/classes/Discovery.html @@ -22,8 +22,8 @@

      Hierarchy

      • Discovery
    +
  • Defined in network/Discovery.ts:24
  • +
  • Defined in network/Discovery.ts:31
  • @@ -94,49 +94,49 @@
    +
  • Defined in network/Discovery.ts:45
  • Properties

    address: string
    +
  • Defined in network/Discovery.ts:33
  • announceTimer: Timer
    +
  • Defined in network/Discovery.ts:38
  • broadcastAddress: string
    +
  • Defined in network/Discovery.ts:34
  • deviceId: DeviceId = null
    +
  • Defined in network/Discovery.ts:37
  • hasLooped: boolean = false
    +
  • Defined in network/Discovery.ts:39
  • options: DiscoveryMessageOptions = null
    +
  • Defined in network/Discovery.ts:35
  • peers: Map<string, ConnectionInfo> = ...
    +
  • Defined in network/Discovery.ts:36
  • socket: Socket
    +
  • Defined in network/Discovery.ts:32
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in network/Discovery.ts:107
    • @@ -235,7 +235,7 @@
      port: number
      address: string

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:152
  • Returns DiscoveryMessage

    +
  • Defined in network/Discovery.ts:217
  • +
  • Defined in network/Discovery.ts:252
    • @@ -320,7 +320,7 @@

      Parameters

      deviceId: DeviceId

    Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:54
  • +
  • Defined in network/Discovery.ts:62
  • +
  • Defined in network/Discovery.ts:70
  • Returns Promise<void>

    +
  • Defined in network/Discovery.ts:78
    • @@ -389,7 +389,7 @@
      callback: DeviceDiscoveryCallback

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:161
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:25
  • @@ -506,7 +506,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:26
  • @@ -529,7 +529,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:27
  • @@ -547,7 +547,7 @@
    listener: (Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:28
    • @@ -705,7 +705,7 @@
      ctx: string

    Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:184
  • +
  • Defined in network/Discovery.ts:129
  • Returns Buffer

    +
  • Defined in network/Discovery.ts:236
    • diff --git a/docs/classes/FileTransfer.html b/docs/classes/FileTransfer.html index 9ae55ad..671e0bd 100644 --- a/docs/classes/FileTransfer.html +++ b/docs/classes/FileTransfer.html @@ -22,8 +22,8 @@

      Hierarchy

      • FileTransfer
    +
  • Defined in services/FileTransfer.ts:58
  • +
  • Defined in services/FileTransfer.ts:64
  • @@ -36,7 +36,6 @@

    Constructors

    Properties

    Accessors

    -

    Methods

    @@ -66,6 +65,7 @@

    Methods

    eventNames getFile getMaxListeners +getSourceDirInfo getSources isAvailable listenerCount @@ -82,21 +82,23 @@

    Methods

    removeListener requestChunkRange requestFileTransferId +requestPathInfo requestSources requestStat sendNoSourcesReply setMaxListeners +signalMessageComplete signalTransferComplete start stop +swapWalMode updateSources +waitForFileMessage waitForMessage write writeWithLength fileTransferListener getEventListeners -getInstance -getInstances listenerCount on once @@ -117,77 +119,72 @@
    Optional deviceId: Returns FileTransfer
    +
  • Defined in services/FileTransfer.ts:71
  • Properties

    #isAvailable: boolean = true
    -
    - -
    #txid: number = 1
    +
  • Defined in services/FileTransfer.ts:69
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:24
  • name: string = "FileTransfer"
    +
  • Defined in services/FileTransfer.ts:65
  • receivedFile: WriteContext = null
    +
  • Defined in services/FileTransfer.ts:66
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    -
    - -
    #instances: Map<string, FileTransfer> = ...
    +
    + +
    #txid: number = 2
    +
  • Defined in services/FileTransfer.ts:68
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/FileTransfer.ts:67
  • errorMonitor: typeof errorMonitor
    @@ -231,17 +228,17 @@
    +
  • Defined in services/Service.ts:15
  • Accessors

    -
    - -
    +
  • Defined in services/FileTransfer.ts:80
  • Methods

    @@ -295,7 +292,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • Returns Promise<Uint8Array>

    +
  • Defined in services/FileTransfer.ts:299
    • @@ -379,6 +378,19 @@

      Returns numberInherited from Service.getMaxListeners

      • Defined in node_modules/@types/node/events.d.ts:526

    +
    + +
    +
  • Defined in services/FileTransfer.ts:389
  • +
  • Defined in services/FileTransfer.ts:594
  • +
  • Defined in services/FileTransfer.ts:262
  • @@ -568,7 +580,7 @@
    txid: number
  • Returns void

    Returns FileTransfer

    +
  • Defined in services/FileTransfer.ts:60
  • +
  • Defined in services/FileTransfer.ts:90
    • @@ -820,11 +832,11 @@
      chunkStartId: number
      chunkEndId: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:531
    • - +
    • Request TxId for file

      @@ -832,24 +844,46 @@

      Parameters

      • -
        filepath: string
      +
      filepath: string
    • +
    • +
      txid: number
    +

    Returns Promise<void>

    +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        path: string
      • +
      • +
        txid: number

      Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:500
    • - +
    • Request current sources attached to device

      +
      +

      Parameters

      +
        +
      • +
        txid: number

      Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:490
    • - +
    • Request fstat on file from Device

      @@ -857,10 +891,12 @@

      Parameters

      • -
        filepath: string
      +
      filepath: string
    • +
    • +
      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:477
  • Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:570
  • +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        txid: number
      +

      Returns Promise<void>

      - +
    • Signal Transfer Completed

      +
      +

      Parameters

      +
        +
      • +
        txid: number

      Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:549
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
  • +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        action: 0 | 1
      • +
      • +
        txid: number
      +

      Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:369
  • +
    + +
      @@ -966,7 +1052,7 @@
      messageId: number
    Returns Promise<FileTransferData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -1017,7 +1103,7 @@
      eventName: string
      Rest ...args: any

    Returns void

    +
  • Defined in services/FileTransfer.ts:86
    • @@ -1044,27 +1130,6 @@

      Returns Function<

      Inherited from Service.getEventListeners

      • Defined in node_modules/@types/node/events.d.ts:299

    -
    - -
    -
    - -
    +
  • Defined in utils/ReadContext.ts:10
  • @@ -79,7 +79,7 @@
    p_littleEndian: booleanReturns ReadContext
    +
  • Defined in utils/ReadContext.ts:11
  • Properties

    @@ -87,19 +87,19 @@
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -114,7 +114,7 @@

    Parameters

    p_bytes: number

    Returns string

    +
  • Defined in utils/ReadContext.ts:61
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
    • @@ -145,7 +145,7 @@

      Parameters

      p_bytes: number

    Returns Buffer

    +
  • Defined in utils/ReadContext.ts:27
    • @@ -158,7 +158,7 @@

      Parameters

      p_bytes: number

    Returns Uint8Array

    +
  • Defined in utils/ReadContext.ts:15
  • +
  • Defined in utils/ReadContext.ts:79
  • +
  • Defined in utils/ReadContext.ts:115
  • +
  • Defined in utils/ReadContext.ts:66
  • +
  • Defined in utils/ReadContext.ts:39
  • +
  • Defined in utils/ReadContext.ts:49
  • +
  • Defined in utils/ReadContext.ts:43
  • +
  • Defined in utils/ReadContext.ts:55
  • +
  • Defined in utils/ReadContext.ts:127
  • +
  • Defined in utils/ReadContext.ts:103
  • +
  • Defined in utils/ReadContext.ts:91
  • +
  • Defined in utils/ReadContext.ts:139
  • +
  • Defined in utils/Context.ts:42
    • @@ -269,7 +269,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -283,7 +283,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns Promise<void>

    +
  • Defined in services/Service.ts:113
  • Returns void

    +
  • Defined in services/Service.ts:258
    • @@ -512,7 +513,7 @@
      ctx: Socket

    Returns ServiceMessage<T>

    +
  • Defined in services/Service.ts:256
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:42
  • +
  • Defined in services/Service.ts:85
    • @@ -755,7 +756,7 @@

      Parameters

      buff: Buffer

    Returns Promise<boolean>

    +
  • Defined in services/Service.ts:94
    • @@ -773,7 +774,7 @@
      eventMessage: string
      messageId: number

    Returns Promise<T>

    +
  • Defined in services/Service.ts:195
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:215
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:227
    • diff --git a/docs/classes/Sources.html b/docs/classes/Sources.html index 3facf92..6d4a93a 100644 --- a/docs/classes/Sources.html +++ b/docs/classes/Sources.html @@ -22,8 +22,8 @@

      Hierarchy

      • Sources
    +
  • Defined in Sources/Sources.ts:19
  • +
  • Defined in Sources/Sources.ts:29
  • @@ -31,11 +31,11 @@

    Constructors

    -
    +
    -
    +
  • Defined in node_modules/@types/node/events.d.ts:111
  • Properties

    - -
    _sources: Map<string, Source> = ...
    +
  • Defined in Sources/Sources.ts:30
  • captureRejectionSymbol: typeof captureRejectionSymbol
    -
    - +
  • Defined in Sources/Sources.ts:91
  • +
    +
      - +
    • +

      Download DBs from source

      +

      Parameters

        @@ -184,7 +192,7 @@

        Parameters

        source: Source

      Returns Promise<void>

    +
  • Defined in Sources/Sources.ts:129
  • Returns Promise<Uint8Array>

    +
  • Defined in Sources/Sources.ts:112
    • @@ -241,6 +249,22 @@

      Since

      v6.0.0

      Returns (string | symbol)[]

    +
    + +
    +
  • Defined in Sources/Sources.ts:60
  • +
  • Defined in Sources/Sources.ts:69
  • +
  • Defined in Sources/Sources.ts:38
  • +
  • Defined in Sources/Sources.ts:48
    • @@ -657,7 +681,7 @@

      Parameters

      source: Source

    Returns void

    +
  • Defined in Sources/Sources.ts:81
  • Returns Sources

    +
  • Defined in Sources/Sources.ts:24
  • @@ -869,7 +893,7 @@
    deviceId: Returns void
  • Returns Sources

    +
  • Defined in Sources/Sources.ts:25
  • @@ -892,7 +916,7 @@
    source: Returns void
  • Returns Sources

    +
  • Defined in Sources/Sources.ts:26
  • Returns void

    +
  • Defined in StageLinq/index.ts:58
    • @@ -166,7 +166,7 @@

      Parameters

      serverName: string

    Returns void

    +
  • Defined in StageLinq/index.ts:66
    • @@ -177,7 +177,7 @@

      Returns IterableIterator<[string, Server]>

    +
  • Defined in StageLinq/index.ts:74
    • @@ -211,7 +211,7 @@

      Returns Optional deviceId: DeviceId

    Returns Promise<T>

    +
  • Defined in StageLinq/index.ts:45
  • +
  • Defined in services/Service.ts:15
  • Methods

    @@ -256,7 +256,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
  • Defined in services/StateMap.ts:175
  • +
  • Defined in services/StateMap.ts:123
    • @@ -690,7 +690,7 @@
      state: string
      socket: Socket

    Returns Promise<void>

    +
  • Defined in services/StateMap.ts:194
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
  • +
  • Defined in services/StateMap.ts:92
    • @@ -768,7 +768,7 @@
      interval: number
      socket: Socket

    Returns Promise<void>

    +
  • Defined in services/StateMap.ts:220
    • @@ -787,7 +787,7 @@
      messageId: number
    Returns Promise<StateData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -864,7 +864,7 @@
      eventName: string
      Rest ...args: any

    Returns void

    +
  • Defined in services/StateMap.ts:85
    • diff --git a/docs/classes/TimeSynchronization.html b/docs/classes/TimeSynchronization.html index 8088428..047ce78 100644 --- a/docs/classes/TimeSynchronization.html +++ b/docs/classes/TimeSynchronization.html @@ -22,7 +22,7 @@

      Hierarchy

      • TimeSynchronization
    +
  • Defined in services/TimeSync.ts:16
  • @@ -104,72 +104,72 @@
    Optional deviceId: Returns TimeSynchronization
    +
  • Defined in services/Service.ts:32
  • Properties

    avgTimeArray: bigint[] = []
    +
  • Defined in services/TimeSync.ts:21
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = false
    +
  • Defined in services/TimeSync.ts:18
  • localTime: bigint
    +
  • Defined in services/TimeSync.ts:19
  • name: "TimeSynchronization" = "TimeSynchronization"
    +
  • Defined in services/TimeSync.ts:17
  • remoteTime: bigint
    +
  • Defined in services/TimeSync.ts:20
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -262,7 +262,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
  • Defined in services/TimeSync.ts:50
  • +
  • Defined in services/TimeSync.ts:108
  • +
  • Defined in services/TimeSync.ts:71
    • @@ -702,7 +702,7 @@
      localTime: bigint
      remoteTime: bigint

    Returns void

    +
  • Defined in services/TimeSync.ts:55
  • +
  • Defined in services/TimeSync.ts:24
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
    • @@ -768,7 +768,7 @@

      Parameters

      time: bigint

    Returns void

    +
  • Defined in services/TimeSync.ts:96
    • @@ -783,7 +783,7 @@
      msgId: number
      msgs: bigint[]

    Returns Buffer

    +
  • Defined in services/TimeSync.ts:33
    • @@ -802,7 +802,7 @@
      messageId: number
    Returns Promise<TimeSyncData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • diff --git a/docs/classes/Track.html b/docs/classes/Track.html index 723eb22..1b13741 100644 --- a/docs/classes/Track.html +++ b/docs/classes/Track.html @@ -24,7 +24,7 @@

      Implements

      • Partial<ITrackData>
    +
  • Defined in types/models/Track.ts:44
  • @@ -72,14 +72,14 @@
    prefix: string

    Returns Track

    +
  • Defined in types/models/Track.ts:69
  • Properties

    #prefix: string
    +
  • Defined in types/models/Track.ts:45
  • #source: {
        location: DeviceId;
        name: string;
        path: string;
    } = null
    @@ -93,79 +93,79 @@
    name:
    path: string
    +
  • Defined in types/models/Track.ts:46
  • ArtistName: string = ""
    +
  • Defined in types/models/Track.ts:52
  • CurrentBPM: number = 0
    +
  • Defined in types/models/Track.ts:53
  • SampleRate: number = 0
    +
  • Defined in types/models/Track.ts:54
  • SongAnalyzed: boolean = false
    +
  • Defined in types/models/Track.ts:55
  • SongLoaded: boolean = false
    +
  • Defined in types/models/Track.ts:56
  • SongName: string = ""
    +
  • Defined in types/models/Track.ts:57
  • SoundSwitchGUID: string = ""
    +
  • Defined in types/models/Track.ts:58
  • TrackBytes: number = 0
    +
  • Defined in types/models/Track.ts:59
  • TrackLength: number = 0
    +
  • Defined in types/models/Track.ts:60
  • TrackName: string = ""
    +
  • Defined in types/models/Track.ts:61
  • TrackNetworkPath: string = ""
    +
  • Defined in types/models/Track.ts:62
  • TrackURI: string = ""
    +
  • Defined in types/models/Track.ts:63
  • Accessors

    @@ -177,7 +177,7 @@
    +
  • Defined in types/models/Track.ts:76
    • @@ -193,7 +193,7 @@
      name: : string
    +
  • Defined in types/models/Track.ts:80
  • Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -186,7 +186,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/WriteContext.ts:25
  • +
  • Defined in utils/Context.ts:18
    • @@ -219,7 +219,7 @@
      p_buffer: Uint8Array
      p_bytes: number = -1

    Returns number

    +
  • Defined in utils/WriteContext.ts:51
    • @@ -232,7 +232,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:63
    • @@ -245,7 +245,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:92
    • @@ -258,7 +258,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:70
    • @@ -271,7 +271,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:99
    • @@ -284,7 +284,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:85
    • @@ -297,7 +297,7 @@

      Parameters

      p_value: bigint

    Returns number

    +
  • Defined in utils/WriteContext.ts:78
    • @@ -310,7 +310,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:106
  • +
  • Defined in types/options.ts:26
  • Returns string

    +
  • Defined in utils/getTempFilePath.ts:11
  • +
  • Defined in utils/sleep.ts:1
  • +
  • Defined in types/messages.ts:8
  • source: string
    +
  • Defined in types/messages.ts:6
  • unit?: {
        decks: number;
        name: string;
        type: string;
    }
    @@ -101,7 +101,7 @@
    name:
    type: string
    +
  • Defined in types/messages.ts:17
  • +
  • Defined in types/messages.ts:6
  • +
  • Defined in Sources/Sources.ts:14
  • diff --git a/docs/interfaces/StageLinqOptions.html b/docs/interfaces/StageLinqOptions.html index 243029c..381c621 100644 --- a/docs/interfaces/StageLinqOptions.html +++ b/docs/interfaces/StageLinqOptions.html @@ -20,7 +20,7 @@

    Hierarchy

    • StageLinqOptions
    +
  • Defined in types/options.ts:13
  • @@ -40,27 +40,27 @@

    Properties

    +
  • Defined in types/options.ts:15
  • connectToMixer?: boolean
    +
  • Defined in types/options.ts:18
  • downloadDbSources?: boolean
    +
  • Defined in types/options.ts:16
  • maxRetries?: number
    +
  • Defined in types/options.ts:14
  • services?: ServiceList[]
    +
  • Defined in types/options.ts:17
  • +
  • Defined in services/StateMap.ts:51
  • +
  • Defined in types/messages.ts:32
  • +
  • Defined in types/messages.ts:33
  • +
  • Defined in types/options.ts:38
  • +
  • Defined in types/models/State.ts:1
  • +
  • Defined in types/models/Unit.ts:10
  • Returns Promise<void>

    +
  • Defined in services/Service.ts:246
    • @@ -287,7 +289,7 @@

      Parameters

      deviceId: DeviceId

    Returns void

    +
  • Defined in services/BeatInfo.ts:65
  • +
  • Defined in services/BeatInfo.ts:72
    • @@ -353,6 +355,22 @@

      Returns numberInherited from Service.getMaxListeners

      • Defined in node_modules/@types/node/events.d.ts:526

    +
    + +
    +
  • Defined in services/BeatInfo.ts:130
  • +
  • Defined in services/BeatInfo.ts:31
  • +
  • Defined in services/BeatInfo.ts:99
  • +
  • Defined in services/BeatInfo.ts:93
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/BeatInfo.ts:81
  • +
  • Defined in services/Service.ts:85
    • @@ -808,7 +826,7 @@
      messageId: number
    Returns Promise<BeatData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -855,7 +873,7 @@
    -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        eventName: string
      • -
      • -
        Rest ...args: any
      -

      Returns void

    +
  • Defined in services/BeatInfo.ts:61
    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

      Since

      v0.9.12

      @@ -927,14 +930,14 @@
    +
  • Defined in services/Broadcast.ts:22
  • @@ -30,7 +30,7 @@

    Constructors

    -
    +
    -
    +
  • Defined in services/Broadcast.ts:32
  • Properties

    @@ -105,49 +108,49 @@
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = false
    +
  • Defined in services/Broadcast.ts:24
  • name: "Broadcast" = "Broadcast"
    +
  • Defined in services/Broadcast.ts:23
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Broadcast.ts:25
  • errorMonitor: typeof errorMonitor
    @@ -191,7 +194,7 @@
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -245,7 +248,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
    + +
      @@ -326,7 +345,7 @@
    +
  • Defined in services/Broadcast.ts:60
  • +
  • Defined in services/Broadcast.ts:37
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
    • @@ -726,7 +745,7 @@
      messageId: number
    Returns Promise<BroadcastData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -773,7 +792,7 @@
    +
  • Defined in utils/Context.ts:3
  • @@ -65,24 +65,24 @@
    p_buffer: ArrayBuffer
    Optional p_littleEndian: boolean

    Returns Context

    +
  • Defined in utils/Context.ts:8
  • Properties

    buffer: ArrayBuffer
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -92,7 +92,7 @@
    +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
  • +
  • Defined in utils/Context.ts:42
    • @@ -121,7 +121,7 @@

      Parameters

      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -134,7 +134,7 @@

      Parameters

      p_offset: number

    Returns void

    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns Promise<TrackDBEntry>

    +
  • Defined in Sources/DbConnection.ts:57
  • +
  • Defined in Sources/DbConnection.ts:28
    • @@ -146,7 +164,7 @@

      Parameters

      data: Buffer

    Returns Promise<Buffer>

    +
  • Defined in Sources/DbConnection.ts:39
  • diff --git a/docs/classes/Device.html b/docs/classes/Device.html index fd973b4..a24e54b 100644 --- a/docs/classes/Device.html +++ b/docs/classes/Device.html @@ -20,7 +20,7 @@

    Hierarchy

    • Device
    +
  • Defined in devices/Devices.ts:109
  • @@ -32,15 +32,19 @@

    Constructors

    Properties

    -

    Methods

    Constructors

    @@ -56,24 +60,24 @@

    Parameters

    info: ConnectionInfo

    Returns Device

    +
  • Defined in devices/Devices.ts:118
  • Properties

    +
    + +
    #services: Map<string, Service<unknown>> = ...
    deviceId: DeviceId
    +
  • Defined in devices/Devices.ts:110
  • -
    - -
    services: Map<string, Service<unknown>> = ...
    +
  • Defined in devices/Devices.ts:111
  • Methods

    @@ -90,15 +94,18 @@

    Parameters

    service: Service<unknown>

    Returns void

    +
  • Defined in devices/Devices.ts:170
    • +

      Get # of decks on this device

      + +

      Returns

      Returns number

    +
  • Defined in devices/Devices.ts:127
    • @@ -113,7 +120,61 @@

      Parameters

      serviceName: string

    Returns void

    +
  • Defined in devices/Devices.ts:178
  • +
    + +
      + +
    • +

      Get an Array of names of all current Services on this Device

      + +

      Returns

      +

      Returns string[]

    +
    + +
    +
    + +
      + +
    • +

      Check if Device has Service

      + +

      Returns

      +
      +

      Parameters

      +
        +
      • +
        serviceName: string
      +

      Returns boolean

    +
    + +
      + +
    • +

      Get a service instance by name

      + +

      Returns

      +
      +

      Parameters

      +
        +
      • +
        serviceName: string
      +

      Returns Service<unknown>

    +
  • deleteService
  • +
  • getServiceNames
  • +
  • getServices
  • +
  • hasService
  • +
  • service
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/DeviceId.html b/docs/classes/DeviceId.html index 86ebd65..4b03193 100644 --- a/docs/classes/DeviceId.html +++ b/docs/classes/DeviceId.html @@ -20,7 +20,7 @@

    Hierarchy

    • DeviceId
    +
  • Defined in devices/DeviceId.ts:12
  • @@ -58,19 +58,19 @@
    deviceId: stringReturns DeviceId
    +
  • Defined in devices/DeviceId.ts:20
  • Properties

    m_array: Uint8Array
    +
  • Defined in devices/DeviceId.ts:14
  • m_str: string
    +
  • Defined in devices/DeviceId.ts:13
  • Accessors

    @@ -82,7 +82,7 @@
    +
  • Defined in devices/DeviceId.ts:54
  • +
  • Defined in devices/DeviceId.ts:47
  • Returns void

    +
  • Defined in devices/Devices.ts:92
    • @@ -200,7 +201,7 @@
      deviceId: string

    Returns void

    +
  • Defined in devices/Devices.ts:102
    • @@ -215,7 +216,7 @@

      Parameters

      deviceId: DeviceId

    Returns Device

    +
  • Defined in devices/Devices.ts:45
  • Returns Promise<Device>

    +
  • Defined in devices/Devices.ts:33
  • +
    + +
      + +
    • +

      Get an array of all current Service Instances

      + +

      Returns

      +

      Returns Promise<Service<unknown>[]>

      @@ -296,7 +308,7 @@

      Parameters

      deviceId: DeviceId

    Returns boolean

    +
  • Defined in devices/Devices.ts:54
  • Returns boolean

    +
  • Defined in devices/Devices.ts:64
    • @@ -339,7 +351,7 @@

    Returns Devices

    +
  • Defined in devices/Devices.ts:9
  • @@ -432,7 +444,7 @@
    service: Returns void
  • Returns Devices

    +
  • Defined in devices/Devices.ts:10
  • Returns Promise<void>

    +
  • Defined in devices/Devices.ts:73
    • @@ -692,7 +704,7 @@
    +
  • Defined in services/Directory.ts:29
  • @@ -30,7 +30,7 @@

    Constructors

    -
    +
    -
    +
  • Defined in services/Directory.ts:39
  • Properties

    @@ -107,54 +103,54 @@
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: false = false
    +
  • Defined in services/Directory.ts:32
  • name: "Directory" = 'Directory'
    +
  • Defined in services/Directory.ts:30
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeAlive: number
    +
  • Defined in services/Directory.ts:33
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -247,7 +243,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
    + +
      @@ -328,7 +333,7 @@
    +
  • Defined in services/Directory.ts:103
  • Returns ServiceMessage<DirectoryData>

    +
  • Defined in services/Directory.ts:43
  • Returns Promise<void>

    +
  • Defined in services/Directory.ts:117
    • - +
    • Send TimeStamp reply to Device

      @@ -697,10 +702,12 @@

      Parameters

    • token: Uint8Array

      Token from recepient Device

      -
    + +
  • +
    socket: Socket
  • Returns Promise<void>

    +
  • Defined in services/Directory.ts:174
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
    • @@ -764,7 +771,7 @@
      messageId: number
    Returns Promise<DirectoryData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -811,7 +818,7 @@
    +
  • Defined in network/Discovery.ts:24
  • +
  • Defined in network/Discovery.ts:31
  • @@ -90,53 +90,53 @@
    +
  • Defined in network/Discovery.ts:46
  • Properties

    address: string
    +
  • Defined in network/Discovery.ts:33
  • announceTimer: Timer
    +
  • Defined in network/Discovery.ts:38
  • broadcastAddress: string
    +
  • Defined in network/Discovery.ts:34
  • deviceId: DeviceId = null
    +
  • Defined in network/Discovery.ts:37
  • hasLooped: boolean = false
    +
  • Defined in network/Discovery.ts:39
  • options: DiscoveryMessageOptions = null
    +
  • Defined in network/Discovery.ts:35
  • peers: Map<string, ConnectionInfo> = ...
    +
  • Defined in network/Discovery.ts:36
  • socket: Socket
    +
  • Defined in network/Discovery.ts:32
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in network/Discovery.ts:108
    • @@ -235,7 +235,7 @@
      port: number
      address: string

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:153
  • Returns DiscoveryMessage

    +
  • Defined in network/Discovery.ts:219
  • +
  • Defined in network/Discovery.ts:254
    • @@ -320,7 +320,7 @@

      Parameters

      deviceId: DeviceId

    Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:55
  • +
  • Defined in network/Discovery.ts:63
  • +
  • Defined in network/Discovery.ts:71
  • Returns Promise<void>

    +
  • Defined in network/Discovery.ts:79
    • @@ -389,7 +389,7 @@
      callback: DeviceDiscoveryCallback

    Returns Promise<void>

    +
  • Defined in network/Discovery.ts:162
    • @@ -415,7 +415,7 @@

    Returns Discovery

    +
  • Defined in network/Discovery.ts:25
  • @@ -506,7 +506,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:26
  • @@ -529,7 +529,7 @@
    info: Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:27
  • @@ -547,7 +547,7 @@
    listener: (Returns void
  • Returns Discovery

    +
  • Defined in network/Discovery.ts:28
  • Returns ConnectionInfo

    +
  • Defined in network/Discovery.ts:185
  • +
  • Defined in network/Discovery.ts:130
  • Returns Buffer

    +
  • Defined in network/Discovery.ts:238
    • @@ -835,7 +835,7 @@
    +
  • Defined in services/FileTransfer.ts:56
  • +
  • Defined in services/FileTransfer.ts:62
  • @@ -54,10 +54,6 @@

    Properties

    instances
    -

    Accessors

    -
    -

    Methods

    +
  • Defined in services/FileTransfer.ts:74
  • Properties

    #isAvailable: boolean = true
    +
  • Defined in services/FileTransfer.ts:67
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:24
  • name: string = "FileTransfer"
    +
  • Defined in services/FileTransfer.ts:63
  • receivedFile: WriteContext = null
    +
  • Defined in services/FileTransfer.ts:64
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • #txid: number = 2
    +
  • Defined in services/FileTransfer.ts:66
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/FileTransfer.ts:65
  • errorMonitor: typeof errorMonitor
    @@ -228,17 +228,7 @@
    -
    -

    Accessors

    -
    - -
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -292,7 +282,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • Returns Promise<Uint8Array>

    +
  • Defined in services/FileTransfer.ts:314
  • +
  • Defined in services/FileTransfer.ts:436
    • @@ -403,11 +391,27 @@

      Parameters

      • sources: string[]
        -

        Array of sources

        +

        Array of sourceNames

      Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:401
  • +
    + +
    +
  • Defined in services/FileTransfer.ts:467
  • +
  • Defined in services/FileTransfer.ts:270
  • +
    + +
      @@ -506,18 +521,18 @@

      Returns

        - +
      • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

        -
        server.on('connection', (stream) => {
        console.log('someone connected!');
        }); +
        server.on('connection', (stream) => {
        console.log('someone connected!');
        });

        Returns a reference to the EventEmitter, so that calls can be chained.

        By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

        -
        const myEE = new EventEmitter();
        myEE.on('foo', () => console.log('a'));
        myEE.prependListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a +
        const myEE = new EventEmitter();
        myEE.on('foo', () => console.log('a'));
        myEE.prependListener('foo', () => console.log('b'));
        myEE.emit('foo');
        // Prints:
        // b
        // a

        Since

        v0.1.101

        @@ -530,19 +545,19 @@
        event: "fileTransferProgress"

        The name of the event.

      • -
        listener: ((source: Source, fileName: string, txid: number, progress: FileTransferProgress) => void)
        +
        listener: ((source: Source, fileName: string, txid: number, progress: FileTransferProgress) => void)

        The callback function

    +
  • Defined in services/FileTransfer.ts:58
  • +
  • Defined in services/FileTransfer.ts:97
  • +
    + +

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:569
    • @@ -849,7 +874,7 @@
      filepath: string
      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:552
    • @@ -864,7 +889,18 @@
      path: string
      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:538
  • +
    + +
      + +
    • +

      Promise will resolve when service is available +and will set service as unavailable.

      +
      +

      Returns Promise<void>

      @@ -879,7 +915,7 @@

      Parameters

      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:528
    • @@ -896,7 +932,7 @@
      filepath: string
      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:515
  • Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:608
    • @@ -946,7 +982,7 @@

      Parameters

      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:596
    • @@ -961,7 +997,7 @@

      Parameters

      txid: number

    Returns Promise<void>

    +
  • Defined in services/FileTransfer.ts:587
  • +
  • Defined in services/Service.ts:77
  • -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        action: 0 | 1
      • -
      • -
        txid: number
      -

      Returns Promise<void>

    +
  • Defined in services/Service.ts:85
  • +
  • Defined in services/FileTransfer.ts:381
    • @@ -1033,7 +1054,7 @@
      messageId: number
      txid: number

    Returns Promise<FileTransferData>

    +
  • Defined in services/FileTransfer.ts:495
    • @@ -1052,7 +1073,7 @@
      messageId: number
    Returns Promise<FileTransferData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        eventName: string
      • -
      • -
        Rest ...args: any
      -

      Returns void

    +
  • Defined in services/Service.ts:227
    • @@ -1114,7 +1120,7 @@
    +
  • Defined in utils/ReadContext.ts:10
  • @@ -68,7 +68,9 @@

    Constructors

    +
  • Defined in utils/ReadContext.ts:18
  • Properties

    @@ -87,19 +89,19 @@
    +
  • Defined in utils/Context.ts:4
  • littleEndian: boolean
    +
  • Defined in utils/Context.ts:6
  • pos: number
    +
  • Defined in utils/Context.ts:5
  • Methods

    @@ -114,7 +116,7 @@

    Parameters

    p_bytes: number

    Returns string

    +
  • Defined in utils/ReadContext.ts:68
  • +
  • Defined in utils/Context.ts:34
  • +
  • Defined in utils/Context.ts:38
    • @@ -145,7 +147,7 @@

      Parameters

      p_bytes: number

    Returns Buffer

    +
  • Defined in utils/ReadContext.ts:34
    • @@ -158,7 +160,7 @@

      Parameters

      p_bytes: number

    Returns Uint8Array

    +
  • Defined in utils/ReadContext.ts:22
  • +
  • Defined in utils/ReadContext.ts:86
  • +
  • Defined in utils/ReadContext.ts:122
  • +
  • Defined in utils/ReadContext.ts:73
  • +
  • Defined in utils/ReadContext.ts:46
  • +
  • Defined in utils/ReadContext.ts:56
  • +
  • Defined in utils/ReadContext.ts:50
  • +
  • Defined in utils/ReadContext.ts:62
  • +
  • Defined in utils/ReadContext.ts:134
  • +
  • Defined in utils/ReadContext.ts:110
  • +
  • Defined in utils/ReadContext.ts:98
  • +
  • Defined in utils/ReadContext.ts:146
  • +
  • Defined in utils/Context.ts:42
    • @@ -269,7 +271,7 @@
      p_bytes: number

    Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -283,7 +285,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/Context.ts:14
  • +
  • Defined in utils/Context.ts:18
  • Returns Promise<void>

    +
  • Defined in services/Service.ts:113
  • +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        eventName: string
      • +
      • +
        Rest ...args: any
      +

      Returns void

      @@ -353,7 +369,7 @@

    Returns void

    +
  • Defined in services/Service.ts:258
  • Returns ServiceMessage<T>

    +
  • Defined in services/Service.ts:256
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:42
  • +
  • Defined in services/Service.ts:85
    • @@ -756,7 +772,7 @@

      Parameters

      buff: Buffer

    Returns Promise<boolean>

    +
  • Defined in services/Service.ts:94
    • @@ -774,7 +790,7 @@
      eventMessage: string
      messageId: number

    Returns Promise<T>

    +
  • Defined in services/Service.ts:195
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:215
  • Returns Promise<boolean>

    +
  • Defined in services/Service.ts:227
    • @@ -819,7 +835,7 @@
    +
  • Defined in Sources/Sources.ts:12
  • +
  • Defined in Sources/Sources.ts:22
  • @@ -95,9 +95,9 @@

    Returns

    -
    #sources: Map<string, Source> = ...
    +
  • Defined in Sources/Sources.ts:23
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in Sources/Sources.ts:89
  • Returns Promise<void>

    +
  • Defined in Sources/Sources.ts:127
    • - +
    • Download a file from Source

      @@ -205,12 +205,12 @@

      Returns

      Parameters

      Returns Promise<Uint8Array>

    +
  • Defined in Sources/Sources.ts:110
  • +
  • Defined in Sources/Sources.ts:99
  • +
  • Defined in Sources/Sources.ts:58
    • - +
    • Get all Sources

      @@ -316,9 +316,9 @@

      Parameters

      Optional deviceId: DeviceId

      Optional narrow results by DeviceId

    -

    Returns Source[]

    +
  • Defined in Sources/Sources.ts:67
  • +
  • Defined in Sources/Sources.ts:36
  • +
  • Defined in Sources/Sources.ts:46
  • Returns void

    +
  • Defined in Sources/Sources.ts:79
    • @@ -692,7 +692,7 @@

    Returns Sources

    +
  • Defined in Sources/Sources.ts:17
  • @@ -893,8 +893,8 @@
    deviceId: Returns void
  • Returns Sources

    - +
  • Defined in Sources/Sources.ts:18
  • +
  • Parameters

    @@ -902,21 +902,21 @@

    Parameters

  • event: "dbDownloaded"
  • -
    listener: ((source: Source) => void)
    +
    listener: ((source: Source) => void)
  • Returns Sources

    +
  • Defined in Sources/Sources.ts:19
  • Properties

    -
    @@ -48,9 +47,6 @@

    Properties

    Methods

    @@ -58,64 +54,50 @@

    Constructors

    +

    Returns StageLinq

    Properties

    -
    - -
    logger: Logger = Logger.instance
    devices: Devices = ...
    +
  • Defined in StageLinq/index.ts:21
  • directory: Directory = null
    +
  • Defined in StageLinq/index.ts:25
  • discovery: Discovery = ...
    +
  • Defined in StageLinq/index.ts:22
  • +
    + +
    logger: Logger = Logger.instance
    -
    -
    - -
    servers: Map<string, Server> = ...
    +
  • Defined in StageLinq/index.ts:19
  • sources: Sources = ...
    +
  • Defined in StageLinq/index.ts:23
  • status: Status = ...
    +
  • Defined in StageLinq/index.ts:24
  • Methods

    - +
    +
  • Defined in StageLinq/index.ts:49
  • - +
    -
    - -
      - -
    • -

      Add a Server to the Server Register

      -
      -
      -

      Parameters

      -
        -
      • -
        serverName: string
      • -
      • -
        server: Server
      -

      Returns void

    -
    - -
      - -
    • -

      Remove a Server from the Server Register

      -
      -
      -

      Parameters

      -
        -
      • -
        serverName: string
      -

      Returns void

    -
    - -
      - -
    • -

      Get All Servers

      - -

      Returns

      -

      Returns IterableIterator<[string, Server]>

    +
  • Defined in StageLinq/index.ts:64
    • @@ -211,7 +150,7 @@

      Returns Optional deviceId: DeviceId

    Returns Promise<T>

    +
  • Defined in StageLinq/index.ts:34
  • Generated using TypeDoc

    diff --git a/docs/classes/StateMap.html b/docs/classes/StateMap.html index 67ff026..1371ac3 100644 --- a/docs/classes/StateMap.html +++ b/docs/classes/StateMap.html @@ -25,7 +25,7 @@

    Hierarchy

    • StateMap
    +
  • Defined in services/StateMap.ts:66
  • @@ -60,6 +60,7 @@

    Methods

    emit eventNames getMaxListeners +instanceListener listenerCount listeners messageHandler @@ -82,7 +83,6 @@

    Methods

    write writeWithLength getEventListeners -instanceListener listenerCount on once @@ -93,17 +93,19 @@

    Constructors

    Returns StateMap

    +
  • Defined in services/StateMap.ts:78
  • Properties

    @@ -111,54 +113,54 @@
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = true
    +
  • Defined in services/Service.ts:24
  • name: "StateMap" = "StateMap"
    +
  • Defined in services/StateMap.ts:67
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • #instances: Map<string, StateMap> = ...
    +
  • Defined in services/StateMap.ts:69
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/StateMap.ts:68
  • errorMonitor: typeof errorMonitor
    @@ -202,7 +204,7 @@
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -256,7 +258,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
    + +
      @@ -337,7 +355,7 @@
    +
  • Defined in services/StateMap.ts:176
  • +
  • Defined in services/StateMap.ts:124
  • Returns Promise<void>

    +
  • Defined in services/StateMap.ts:195
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
  • +
  • Defined in services/StateMap.ts:93
    • @@ -768,7 +786,7 @@
      interval: number
      socket: Socket

    Returns Promise<void>

    +
  • Defined in services/StateMap.ts:221
    • @@ -787,7 +805,7 @@
      messageId: number
    Returns Promise<StateData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -834,7 +852,7 @@
    -
    - -
      - -
    • -
      -

      Parameters

      -
        -
      • -
        eventName: string
      • -
      • -
        Rest ...args: any
      -

      Returns void

    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      -
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

      Since

      v0.9.12

      @@ -898,14 +901,14 @@
    +
  • Defined in services/TimeSync.ts:16
  • @@ -30,7 +30,7 @@

    Constructors

    -
    +
    -
    +
  • Defined in services/TimeSync.ts:29
  • Properties

    avgTimeArray: bigint[] = []
    +
  • Defined in services/TimeSync.ts:21
  • device: Device
    +
  • Defined in services/Service.ts:17
  • deviceId: DeviceId = null
    +
  • Defined in services/Service.ts:19
  • isBufferedService: boolean = false
    +
  • Defined in services/TimeSync.ts:18
  • localTime: bigint
    +
  • Defined in services/TimeSync.ts:19
  • name: "TimeSynchronization" = "TimeSynchronization"
    +
  • Defined in services/TimeSync.ts:17
  • remoteTime: bigint
    +
  • Defined in services/TimeSync.ts:20
  • server: Server = null
    +
  • Defined in services/Service.ts:20
  • serverInfo: AddressInfo
    +
  • Defined in services/Service.ts:21
  • socket: Socket = null
    +
  • Defined in services/Service.ts:22
  • timeout: Timer
    +
  • Defined in services/Service.ts:25
  • captureRejectionSymbol: typeof captureRejectionSymbol
    +
  • Defined in services/Service.ts:15
  • Methods

    @@ -262,7 +265,7 @@
    server: Server

    Returns Promise<void>

    +
  • Defined in services/Service.ts:246
  • +
  • Defined in services/TimeSync.ts:59
  • +
    + +
      @@ -351,7 +363,7 @@
    +
  • Defined in services/TimeSync.ts:117
  • +
  • Defined in services/TimeSync.ts:80
  • Returns void

    +
  • Defined in services/TimeSync.ts:64
  • +
  • Defined in services/TimeSync.ts:33
  • +
  • Defined in services/Service.ts:77
  • +
  • Defined in services/Service.ts:85
    • @@ -768,7 +780,7 @@

      Parameters

      time: bigint

    Returns void

    +
  • Defined in services/TimeSync.ts:105
    • @@ -783,7 +795,7 @@
      msgId: number
      msgs: bigint[]

    Returns Buffer

    +
  • Defined in services/TimeSync.ts:42
    • @@ -802,7 +814,7 @@
      messageId: number
    Returns Promise<TimeSyncData>
    +
  • Defined in services/Service.ts:195
  • +
  • Defined in services/Service.ts:215
  • +
  • Defined in services/Service.ts:227
    • @@ -849,7 +861,7 @@
    +
  • Defined in types/models/Track.ts:44
  • @@ -63,6 +63,8 @@

    Returns Track

    +
  • Defined in types/models/Track.ts:70
  • Properties

    #prefix: string
    +
  • Defined in types/models/Track.ts:45
  • #source: {
        location: DeviceId;
        name: string;
        path: string;
    } = null
    @@ -93,79 +95,79 @@
    name:
    path: string
    +
  • Defined in types/models/Track.ts:46
  • ArtistName: string = ""
    +
  • Defined in types/models/Track.ts:52
  • CurrentBPM: number = 0
    +
  • Defined in types/models/Track.ts:53
  • SampleRate: number = 0
    +
  • Defined in types/models/Track.ts:54
  • SongAnalyzed: boolean = false
    +
  • Defined in types/models/Track.ts:55
  • SongLoaded: boolean = false
    +
  • Defined in types/models/Track.ts:56
  • SongName: string = ""
    +
  • Defined in types/models/Track.ts:57
  • SoundSwitchGUID: string = ""
    +
  • Defined in types/models/Track.ts:58
  • TrackBytes: number = 0
    +
  • Defined in types/models/Track.ts:59
  • TrackLength: number = 0
    +
  • Defined in types/models/Track.ts:60
  • TrackName: string = ""
    +
  • Defined in types/models/Track.ts:61
  • TrackNetworkPath: string = ""
    +
  • Defined in types/models/Track.ts:62
  • TrackURI: string = ""
    +
  • Defined in types/models/Track.ts:63
  • Accessors

    @@ -177,7 +179,7 @@
    +
  • Defined in types/models/Track.ts:77
    • @@ -193,7 +195,7 @@
      name: : string
    +
  • Defined in types/models/Track.ts:81
  • Returns void

    +
  • Defined in utils/Context.ts:22
    • @@ -186,7 +188,7 @@
      p_offset: number
    Returns void
    +
  • Defined in utils/Context.ts:29
  • +
  • Defined in utils/WriteContext.ts:30
  • +
  • Defined in utils/Context.ts:18
    • @@ -219,7 +221,7 @@
      p_buffer: Uint8Array
      p_bytes: number = -1

    Returns number

    +
  • Defined in utils/WriteContext.ts:56
    • @@ -232,7 +234,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:68
    • @@ -245,7 +247,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:97
    • @@ -258,7 +260,7 @@

      Parameters

      p_string: string

    Returns number

    +
  • Defined in utils/WriteContext.ts:75
    • @@ -271,7 +273,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:104
    • @@ -284,7 +286,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:90
    • @@ -297,7 +299,7 @@

      Parameters

      p_value: bigint

    Returns number

    +
  • Defined in utils/WriteContext.ts:83
    • @@ -310,7 +312,7 @@

      Parameters

      p_value: number

    Returns number

    +
  • Defined in utils/WriteContext.ts:111
  • +
  • BeatInfo
  • +
  • Broadcast
  • +
  • Directory
  • +
  • FileTransfer
  • +
  • StateMap
  • +
  • TimeSynchronization
  • Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/getTempFilePath.html b/docs/functions/getTempFilePath.html index fdd34aa..5a4ecaa 100644 --- a/docs/functions/getTempFilePath.html +++ b/docs/functions/getTempFilePath.html @@ -32,7 +32,7 @@
    p_path: string

    Returns string

    +
  • Defined in utils/getTempFilePath.ts:10
  • +

    Returns Promise<void>

    +
  • Defined in utils/sleep.ts:6
  • +
  • Defined in types/messages.ts:8
  • source: string
    +
  • Defined in types/messages.ts:6
  • unit?: {
        decks: number;
        name: string;
        type: string;
    }
    @@ -101,7 +101,7 @@
    name:
    type: string
    +
  • Defined in types/messages.ts:17
  • +
  • Defined in types/messages.ts:6
  • +
  • Defined in services/StateMap.ts:51
  • +
  • Defined in services/Broadcast.ts:9
  • +
  • Defined in types/messages.ts:32
  • +
  • Defined in types/messages.ts:33
  • +
  • Defined in types/options.ts:38
  • +
  • Defined in types/models/State.ts:1
  • +
  • Defined in types/models/Unit.ts:10