{"version":3,"file":"index.mjs","sources":["../../src/EventEmitter.ts","../../src/PlatformPrivateEventEmitter.ts","../../src/PlatformAppEventEmitter.ts","../../src/DMEventsBridge.ts"],"sourcesContent":["export class EventEmitter<TEvent = any> {\n  static biEvents = {\n    PLATFORM_WORKER_SPAWN: 123,\n    PLATFORM_APP_RUNNER_INIT_APP_API: 124,\n    PLATFORM_APP_RUNNER_RUN_APP: 125,\n    PLATFORM_APP_RUNNER_REMOVE_APP: 126,\n    PLATFORM_WORKER_APP_BUNDLE_LOAD: 127,\n    PLATFORM_WORKER_APP_BUNDLE_EXECUTE: 128,\n    PLATFORM_IFRAME_INIT: 129,\n    PLATFORM_APP_API_INIT: 130,\n    PLATFORM_APP_API_GET: 131,\n  };\n\n  static EventSteps = {\n    Start: 'start',\n    End: 'end',\n    Error: 'error',\n  };\n\n  private uid = 0;\n  private callbacks: Map<any, (event: TEvent) => void> = new Map();\n  private inTransaction = false;\n  private isSilent = false;\n  private queue: TEvent[] = [];\n\n  silent(isSilent = true) {\n    this.isSilent = isSilent;\n  }\n\n  startTransaction() {\n    this.inTransaction = true;\n  }\n\n  commit() {\n    this.inTransaction = false;\n\n    const queue = this.queue;\n    this.queue = [];\n\n    if (!this.isSilent) {\n      queue.forEach((event) => {\n        this.notify(event);\n      });\n    }\n  }\n\n  notify(event: TEvent) {\n    if (this.isSilent) {\n      return;\n    }\n\n    if (this.inTransaction) {\n      this.queue.push(event);\n    } else {\n      this.callbacks.forEach((callback) => {\n        callback(event);\n      });\n    }\n  }\n\n  subscribe(callback: (event: TEvent) => void) {\n    const uid = this.uid++;\n\n    this.callbacks.set(uid, callback);\n\n    return () => {\n      this.callbacks.delete(uid);\n    };\n  }\n\n  notifyWithStep(event: TEvent, step: string) {\n    this.notify({\n      ...event,\n      meta: {\n        ...(event as any).meta,\n        step,\n      },\n    });\n  }\n\n  async withEvent<TResult = any>(\n    event: TEvent,\n    cb: () => TResult | Promise<TResult>,\n  ): Promise<TResult> {\n    // TODO: wrap with try/catch\n    let result = cb();\n\n    if (result && result.hasOwnProperty('then')) {\n      try {\n        this.notifyWithStep(event, EventEmitter.EventSteps.Start);\n\n        result = await result;\n\n        this.notifyWithStep(event, EventEmitter.EventSteps.End);\n\n        return result;\n      } catch (e) {\n        this.notifyWithStep(\n          {\n            ...event,\n            meta: {\n              ...(event as any).meta,\n              error: e,\n            },\n          },\n          EventEmitter.EventSteps.Error,\n        );\n\n        throw e;\n      }\n    } else {\n      this.notify(event);\n\n      return result;\n    }\n  }\n}\n","import { EventEmitter } from './EventEmitter';\nimport { IPlatformPrivateEventBase } from './events';\n\nexport enum PlatformPrivateEvent {\n  WorkerSpawn = 'WorkerSpawn',\n  HostEvent = 'HostEvent',\n  ApplicationsSpecsReceived = 'ApplicationsSpecsReceived',\n  InitApplicationApi = 'InitApplicationApi',\n  RunApplication = 'RunApplication',\n  getApplicationApi = 'getApplicationApi',\n  IframeInit = 'IframeInit',\n}\n\nexport enum PlatformLifecycleEvent {\n  EditorReady = 'EditorReady',\n}\n\nexport type IPlatformWorkerSpawnEvent = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.WorkerSpawn,\n  { url: string },\n  {\n    bi: {\n      workerId: string;\n      strategy: string;\n    };\n  }\n>;\n\nexport type IPlatformEditorReadyLifecycleEvent = IPlatformPrivateEventBase<\n  PlatformLifecycleEvent.EditorReady,\n  {},\n  {}\n>;\n\nexport type IPlatformHostEvent = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.HostEvent,\n  {\n    type: string;\n  },\n  { appDefinitionId: string; intent: string }\n>;\n\nexport type IPlatformApplicationsSpecsReceived = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.ApplicationsSpecsReceived,\n  {\n    appDefinitionIds: string[];\n  },\n  {}\n>;\n\nexport type IPlatformRunApplication = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.RunApplication,\n  {\n    appDefinitionId: string;\n  },\n  {\n    bi: {\n      appType?: string;\n      appDefId?: string;\n    };\n  }\n>;\n\nexport type IPlatformGetApplicationApi = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.getApplicationApi,\n  {},\n  {\n    bi: {\n      targetAppDefId: string;\n      scope: 'private' | 'public';\n      editorType?: string;\n    };\n  }\n>;\n\nexport type IPlatformInitApplicationApi = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.InitApplicationApi,\n  {\n    appDefinitionId: string;\n  },\n  {\n    bi: {\n      appDefId: string;\n    };\n  }\n>;\n\nexport type IPlatformIframeInit = IPlatformPrivateEventBase<\n  PlatformPrivateEvent.IframeInit,\n  {},\n  {\n    bi: {\n      frameUrl: string;\n      iframeId: string;\n    };\n  }\n>;\n\nexport type IPlatformPrivateEvent =\n  | IPlatformWorkerSpawnEvent\n  | IPlatformEditorReadyLifecycleEvent\n  | IPlatformHostEvent\n  | IPlatformApplicationsSpecsReceived\n  | IPlatformRunApplication\n  | IPlatformGetApplicationApi\n  | IPlatformInitApplicationApi\n  | IPlatformIframeInit;\n\nclass PlatformPrivateEventFactories {\n  public createWorkerSpawnEvent({\n    url,\n    workerId,\n    strategy,\n  }: {\n    url: string;\n    workerId: string;\n    strategy: string;\n  }): IPlatformWorkerSpawnEvent {\n    return {\n      type: PlatformPrivateEvent.WorkerSpawn,\n      payload: {\n        url,\n      },\n      meta: {\n        bi: {\n          evid: PlatformPrivateEventEmitter.biEvents.PLATFORM_WORKER_SPAWN,\n          workerId,\n          strategy,\n        },\n      },\n    };\n  }\n\n  public createRunApplicationEvent(app: {\n    appDefinitionId: string;\n    type: string;\n  }): IPlatformRunApplication {\n    return {\n      type: PlatformPrivateEvent.RunApplication,\n      payload: {\n        appDefinitionId: app.appDefinitionId,\n      },\n      meta: {\n        bi: {\n          appType: app.type,\n          appDefId: app.appDefinitionId,\n          evid: PlatformPrivateEventEmitter.biEvents\n            .PLATFORM_APP_RUNNER_RUN_APP,\n        },\n      },\n    };\n  }\n\n  public createGetApplicationApiEvent(\n    targetAppDefId: string,\n    scope: 'private' | 'public',\n  ): IPlatformGetApplicationApi {\n    return {\n      type: PlatformPrivateEvent.getApplicationApi,\n      payload: {},\n      meta: {\n        bi: {\n          targetAppDefId,\n          scope,\n          evid: PlatformPrivateEventEmitter.biEvents.PLATFORM_APP_API_GET,\n        },\n      },\n    };\n  }\n\n  public createInitApplicationApiEvent(\n    appDefinitionId: string,\n  ): IPlatformInitApplicationApi {\n    return {\n      type: PlatformPrivateEvent.InitApplicationApi,\n      payload: {\n        appDefinitionId,\n      },\n      meta: {\n        bi: {\n          appDefId: appDefinitionId,\n          evid: PlatformPrivateEventEmitter.biEvents.PLATFORM_APP_API_INIT,\n        },\n      },\n    };\n  }\n\n  public createIframeInitEvent(\n    frameUrl: string,\n    iframeId: string,\n  ): IPlatformIframeInit {\n    return {\n      type: PlatformPrivateEvent.IframeInit,\n      payload: {},\n      meta: {\n        bi: {\n          frameUrl,\n          iframeId,\n          evid: PlatformPrivateEventEmitter.biEvents.PLATFORM_IFRAME_INIT,\n        },\n      },\n    };\n  }\n}\n\nexport class PlatformPrivateEventEmitter extends EventEmitter<IPlatformPrivateEvent> {\n  public factories = new PlatformPrivateEventFactories();\n\n  notify(event: IPlatformPrivateEvent) {\n    super.notify(event);\n  }\n}\n","import { EventEmitter } from './EventEmitter';\n\nimport { IPlatformAppEventBase, IPlatformEventBase } from './events';\n\nexport enum PlatformAppEvent {\n  ApplicationInit = 'ApplicationInit',\n  ApplicationExecute = 'ApplicationExecute',\n  ApplicationRemoved = 'ApplicationRemoved',\n  ApplicationLoad = 'ApplicationLoad',\n  ApplicationApiInit = 'ApplicationApiInit',\n  CustomEvent = 'CustomEvent',\n  HostEvent = 'HostEvent',\n\n  EditorReady = 'EditorReady',\n}\n\nexport type IPlatformAppInitEvent = IPlatformAppEventBase<\n  PlatformAppEvent.ApplicationInit,\n  {},\n  {}\n>;\n\nexport type IPlatformAppCustomEvent = IPlatformAppEventBase<\n  PlatformAppEvent.CustomEvent,\n  {\n    type: string;\n  } & Record<string, string>,\n  {}\n>;\n\nexport type IPlatformAppHostEvent = IPlatformAppEventBase<\n  PlatformAppEvent.HostEvent,\n  {\n    type: string;\n  } & Record<string, string>,\n  {}\n>;\n\nexport type IPlatformAppExecuteEvent = IPlatformAppEventBase<\n  PlatformAppEvent.ApplicationExecute,\n  {\n    url: string;\n    appDefinitionId: string;\n  },\n  {\n    bi: {\n      appDefId: string;\n      appType: string;\n      bundleUrl: string;\n    };\n  }\n>;\n\nexport type IPlatformEditorReadyEvent = IPlatformEventBase<\n  PlatformAppEvent.EditorReady,\n  {},\n  {}\n>;\n\nexport type IPlatformApplicationRemovedEvent = IPlatformAppEventBase<\n  PlatformAppEvent.ApplicationRemoved,\n  {},\n  {\n    bi: {\n      appDefId: string;\n    };\n  }\n>;\n\nexport type IPlatformAppLoadEvent = IPlatformAppEventBase<\n  PlatformAppEvent.ApplicationLoad,\n  {\n    url: string;\n    appDefinitionId: string;\n  },\n  {\n    bi: {\n      appDefId: string;\n      appType: string;\n      bundleUrl: string;\n    };\n  }\n>;\n\nexport type IPlatformApplicationApiInitEvent = IPlatformAppEventBase<\n  PlatformAppEvent.ApplicationApiInit,\n  {},\n  {\n    bi: {\n      appDefId: string;\n      scope: 'private' | 'public';\n    };\n  }\n>;\n\nexport type IPlatformAppEvent =\n  | IPlatformAppInitEvent\n  | IPlatformAppCustomEvent\n  | IPlatformAppHostEvent\n  | IPlatformAppExecuteEvent\n  | IPlatformAppLoadEvent\n  | IPlatformApplicationRemovedEvent\n  | IPlatformApplicationApiInitEvent;\n\nclass PlatformAppEventsFactories {\n  public createApplicationRemovedEvent(\n    appDefinitionId: string,\n  ): IPlatformApplicationRemovedEvent {\n    return {\n      type: PlatformAppEvent.ApplicationRemoved,\n      payload: {\n        appDefinitionId,\n      },\n      meta: {\n        bi: {\n          evid: PlatformAppEventEmitter.biEvents.PLATFORM_WORKER_SPAWN,\n          appDefId: appDefinitionId,\n        },\n      },\n    };\n  }\n\n  public createApplicationLoadEvent(\n    app: {\n      appDefinitionId: string;\n      appType: string;\n    },\n    url: string,\n  ): IPlatformAppLoadEvent {\n    return {\n      type: PlatformAppEvent.ApplicationLoad,\n      payload: {\n        appDefinitionId: app.appDefinitionId,\n        url,\n      },\n      meta: {\n        bi: {\n          evid: PlatformAppEventEmitter.biEvents\n            .PLATFORM_WORKER_APP_BUNDLE_LOAD,\n          appDefId: app.appDefinitionId,\n          appType: app.appType,\n          bundleUrl: url,\n        },\n      },\n    };\n  }\n\n  public createApplicationExecuteEvent(\n    app: {\n      appDefinitionId: string;\n      appType: string;\n    },\n    url: string,\n  ): IPlatformAppExecuteEvent {\n    return {\n      type: PlatformAppEvent.ApplicationExecute,\n      payload: {\n        appDefinitionId: app.appDefinitionId,\n        url,\n      },\n      meta: {\n        bi: {\n          evid: PlatformAppEventEmitter.biEvents\n            .PLATFORM_WORKER_APP_BUNDLE_EXECUTE,\n          appDefId: app.appDefinitionId,\n          appType: app.appType,\n          bundleUrl: url,\n        },\n      },\n    };\n  }\n\n  public createApplicationApiInitEvent(\n    appDefinitionId: string,\n    scope: 'private' | 'public',\n  ): IPlatformApplicationApiInitEvent {\n    return {\n      type: PlatformAppEvent.ApplicationApiInit,\n      payload: { appDefinitionId },\n      meta: {\n        bi: {\n          evid: PlatformAppEventEmitter.biEvents.PLATFORM_APP_API_INIT,\n          appDefId: appDefinitionId,\n          scope,\n        },\n      },\n    };\n  }\n}\n\nexport class PlatformAppEventEmitter extends EventEmitter<IPlatformAppEvent> {\n  public factories = new PlatformAppEventsFactories();\n}\n","import { EventType } from '@wix/public-editor-platform-interfaces';\nimport {\n  IPlatformHostEvent,\n  PlatformPrivateEvent,\n  PlatformPrivateEventEmitter,\n} from './PlatformPrivateEventEmitter';\n\n/**\n * The events bridge between DM and private events\n */\nexport class DMEventsBridge {\n  static allowedEvents = [\n    EventType.componentSelectionChanged,\n    EventType.appInstalled,\n    EventType.appUpdateCompleted,\n    EventType.removeAppCompleted,\n  ];\n\n  private mapToPlatformHostEvent(event: any): IPlatformHostEvent {\n    if (typeof event === 'string') {\n      try {\n        event = JSON.parse(event);\n      } catch (e) {\n        // TODO: log error\n      }\n    }\n\n    return {\n      type: PlatformPrivateEvent.HostEvent,\n      payload: {\n        type: event.args.eventType,\n        ...event.args.eventPayload,\n      },\n      meta: {\n        appDefinitionId: event.appDefinitionId ?? null,\n        intent: event.intent,\n      },\n    };\n  }\n\n  constructor(private events: PlatformPrivateEventEmitter) {}\n\n  /**\n   * Notify by event from Worker Manager (platform infrastructure)\n   */\n  public notify(_event: any) {\n    const event = this.mapToPlatformHostEvent(_event);\n    if (\n      DMEventsBridge.allowedEvents.includes(event.payload.type as EventType)\n    ) {\n      this.events.notify(event);\n    }\n  }\n}\n"],"names":["PlatformPrivateEvent","PlatformLifecycleEvent","PlatformAppEvent"],"mappings":";;AAAO,MAAM,YAA2B,CAAA;AAAA,EACtC,OAAO,QAAW,GAAA;AAAA,IAChB,qBAAuB,EAAA,GAAA;AAAA,IACvB,gCAAkC,EAAA,GAAA;AAAA,IAClC,2BAA6B,EAAA,GAAA;AAAA,IAC7B,8BAAgC,EAAA,GAAA;AAAA,IAChC,+BAAiC,EAAA,GAAA;AAAA,IACjC,kCAAoC,EAAA,GAAA;AAAA,IACpC,oBAAsB,EAAA,GAAA;AAAA,IACtB,qBAAuB,EAAA,GAAA;AAAA,IACvB,oBAAsB,EAAA,GAAA;AAAA,GACxB,CAAA;AAAA,EAEA,OAAO,UAAa,GAAA;AAAA,IAClB,KAAO,EAAA,OAAA;AAAA,IACP,GAAK,EAAA,KAAA;AAAA,IACL,KAAO,EAAA,OAAA;AAAA,GACT,CAAA;AAAA,EAEQ,GAAM,GAAA,CAAA,CAAA;AAAA,EACN,SAAA,uBAAmD,GAAI,EAAA,CAAA;AAAA,EACvD,aAAgB,GAAA,KAAA,CAAA;AAAA,EAChB,QAAW,GAAA,KAAA,CAAA;AAAA,EACX,QAAkB,EAAC,CAAA;AAAA,EAE3B,MAAA,CAAO,WAAW,IAAM,EAAA;AACtB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA,CAAA;AAAA,GAClB;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAA,IAAA,CAAK,aAAgB,GAAA,IAAA,CAAA;AAAA,GACvB;AAAA,EAEA,MAAS,GAAA;AACP,IAAA,IAAA,CAAK,aAAgB,GAAA,KAAA,CAAA;AAErB,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA,CAAA;AACnB,IAAA,IAAA,CAAK,QAAQ,EAAC,CAAA;AAEd,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACvB,QAAA,IAAA,CAAK,OAAO,KAAK,CAAA,CAAA;AAAA,OAClB,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,OAAO,KAAe,EAAA;AACpB,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,KAAK,aAAe,EAAA;AACtB,MAAK,IAAA,CAAA,KAAA,CAAM,KAAK,KAAK,CAAA,CAAA;AAAA,KAChB,MAAA;AACL,MAAK,IAAA,CAAA,SAAA,CAAU,OAAQ,CAAA,CAAC,QAAa,KAAA;AACnC,QAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,OACf,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,UAAU,QAAmC,EAAA;AAC3C,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,EAAA,CAAA;AAEjB,IAAK,IAAA,CAAA,SAAA,CAAU,GAAI,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAEhC,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA,SAAA,CAAU,OAAO,GAAG,CAAA,CAAA;AAAA,KAC3B,CAAA;AAAA,GACF;AAAA,EAEA,cAAA,CAAe,OAAe,IAAc,EAAA;AAC1C,IAAA,IAAA,CAAK,MAAO,CAAA;AAAA,MACV,GAAG,KAAA;AAAA,MACH,IAAM,EAAA;AAAA,QACJ,GAAI,KAAc,CAAA,IAAA;AAAA,QAClB,IAAA;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,SACJ,CAAA,KAAA,EACA,EACkB,EAAA;AAElB,IAAA,IAAI,SAAS,EAAG,EAAA,CAAA;AAEhB,IAAA,IAAI,MAAU,IAAA,MAAA,CAAO,cAAe,CAAA,MAAM,CAAG,EAAA;AAC3C,MAAI,IAAA;AACF,QAAA,IAAA,CAAK,cAAe,CAAA,KAAA,EAAO,YAAa,CAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAExD,QAAA,MAAA,GAAS,MAAM,MAAA,CAAA;AAEf,QAAA,IAAA,CAAK,cAAe,CAAA,KAAA,EAAO,YAAa,CAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAEtD,QAAO,OAAA,MAAA,CAAA;AAAA,eACA,CAAG,EAAA;AACV,QAAK,IAAA,CAAA,cAAA;AAAA,UACH;AAAA,YACE,GAAG,KAAA;AAAA,YACH,IAAM,EAAA;AAAA,cACJ,GAAI,KAAc,CAAA,IAAA;AAAA,cAClB,KAAO,EAAA,CAAA;AAAA,aACT;AAAA,WACF;AAAA,UACA,aAAa,UAAW,CAAA,KAAA;AAAA,SAC1B,CAAA;AAEA,QAAM,MAAA,CAAA,CAAA;AAAA,OACR;AAAA,KACK,MAAA;AACL,MAAA,IAAA,CAAK,OAAO,KAAK,CAAA,CAAA;AAEjB,MAAO,OAAA,MAAA,CAAA;AAAA,KACT;AAAA,GACF;AACF;;ACjHY,IAAA,oBAAA,qBAAAA,qBAAL,KAAA;AACL,EAAAA,sBAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AACd,EAAAA,sBAAA,WAAY,CAAA,GAAA,WAAA,CAAA;AACZ,EAAAA,sBAAA,2BAA4B,CAAA,GAAA,2BAAA,CAAA;AAC5B,EAAAA,sBAAA,oBAAqB,CAAA,GAAA,oBAAA,CAAA;AACrB,EAAAA,sBAAA,gBAAiB,CAAA,GAAA,gBAAA,CAAA;AACjB,EAAAA,sBAAA,mBAAoB,CAAA,GAAA,mBAAA,CAAA;AACpB,EAAAA,sBAAA,YAAa,CAAA,GAAA,YAAA,CAAA;AAPH,EAAAA,OAAAA,qBAAAA,CAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA,EAAA;AAUA,IAAA,sBAAA,qBAAAC,uBAAL,KAAA;AACL,EAAAA,wBAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AADJ,EAAAA,OAAAA,uBAAAA,CAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA,EAAA;AA+FZ,MAAM,6BAA8B,CAAA;AAAA,EAC3B,sBAAuB,CAAA;AAAA,IAC5B,GAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,GAK4B,EAAA;AAC5B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,aAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,GAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,IAAA,EAAM,4BAA4B,QAAS,CAAA,qBAAA;AAAA,UAC3C,QAAA;AAAA,UACA,QAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,0BAA0B,GAGL,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,gBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,iBAAiB,GAAI,CAAA,eAAA;AAAA,OACvB;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,SAAS,GAAI,CAAA,IAAA;AAAA,UACb,UAAU,GAAI,CAAA,eAAA;AAAA,UACd,IAAA,EAAM,4BAA4B,QAC/B,CAAA,2BAAA;AAAA,SACL;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,4BAAA,CACL,gBACA,KAC4B,EAAA;AAC5B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,mBAAA;AAAA,MACN,SAAS,EAAC;AAAA,MACV,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,cAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA,EAAM,4BAA4B,QAAS,CAAA,oBAAA;AAAA,SAC7C;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,8BACL,eAC6B,EAAA;AAC7B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,oBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,eAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,QAAU,EAAA,eAAA;AAAA,UACV,IAAA,EAAM,4BAA4B,QAAS,CAAA,qBAAA;AAAA,SAC7C;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,qBAAA,CACL,UACA,QACqB,EAAA;AACrB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,YAAA;AAAA,MACN,SAAS,EAAC;AAAA,MACV,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,QAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA,EAAM,4BAA4B,QAAS,CAAA,oBAAA;AAAA,SAC7C;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;AAEO,MAAM,oCAAoC,YAAoC,CAAA;AAAA,EAC5E,SAAA,GAAY,IAAI,6BAA8B,EAAA,CAAA;AAAA,EAErD,OAAO,KAA8B,EAAA;AACnC,IAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAAA,GACpB;AACF;;AC/MY,IAAA,gBAAA,qBAAAC,iBAAL,KAAA;AACL,EAAAA,kBAAA,iBAAkB,CAAA,GAAA,iBAAA,CAAA;AAClB,EAAAA,kBAAA,oBAAqB,CAAA,GAAA,oBAAA,CAAA;AACrB,EAAAA,kBAAA,oBAAqB,CAAA,GAAA,oBAAA,CAAA;AACrB,EAAAA,kBAAA,iBAAkB,CAAA,GAAA,iBAAA,CAAA;AAClB,EAAAA,kBAAA,oBAAqB,CAAA,GAAA,oBAAA,CAAA;AACrB,EAAAA,kBAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AACd,EAAAA,kBAAA,WAAY,CAAA,GAAA,WAAA,CAAA;AAEZ,EAAAA,kBAAA,aAAc,CAAA,GAAA,aAAA,CAAA;AATJ,EAAAA,OAAAA,iBAAAA,CAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA,EAAA;AAoGZ,MAAM,0BAA2B,CAAA;AAAA,EACxB,8BACL,eACkC,EAAA;AAClC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,oBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,eAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,IAAA,EAAM,wBAAwB,QAAS,CAAA,qBAAA;AAAA,UACvC,QAAU,EAAA,eAAA;AAAA,SACZ;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,0BAAA,CACL,KAIA,GACuB,EAAA;AACvB,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,iBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,iBAAiB,GAAI,CAAA,eAAA;AAAA,QACrB,GAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,IAAA,EAAM,wBAAwB,QAC3B,CAAA,+BAAA;AAAA,UACH,UAAU,GAAI,CAAA,eAAA;AAAA,UACd,SAAS,GAAI,CAAA,OAAA;AAAA,UACb,SAAW,EAAA,GAAA;AAAA,SACb;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,6BAAA,CACL,KAIA,GAC0B,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,oBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,iBAAiB,GAAI,CAAA,eAAA;AAAA,QACrB,GAAA;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,IAAA,EAAM,wBAAwB,QAC3B,CAAA,kCAAA;AAAA,UACH,UAAU,GAAI,CAAA,eAAA;AAAA,UACd,SAAS,GAAI,CAAA,OAAA;AAAA,UACb,SAAW,EAAA,GAAA;AAAA,SACb;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAAA,EAEO,6BAAA,CACL,iBACA,KACkC,EAAA;AAClC,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,oBAAA;AAAA,MACN,OAAA,EAAS,EAAE,eAAgB,EAAA;AAAA,MAC3B,IAAM,EAAA;AAAA,QACJ,EAAI,EAAA;AAAA,UACF,IAAA,EAAM,wBAAwB,QAAS,CAAA,qBAAA;AAAA,UACvC,QAAU,EAAA,eAAA;AAAA,UACV,KAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;AAEO,MAAM,gCAAgC,YAAgC,CAAA;AAAA,EACpE,SAAA,GAAY,IAAI,0BAA2B,EAAA,CAAA;AACpD;;ACtLO,MAAM,cAAe,CAAA;AAAA,EA8B1B,YAAoB,MAAqC,EAAA;AAArC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAAA,GAAsC;AAAA,EA7B1D,OAAO,aAAgB,GAAA;AAAA,IACrB,SAAU,CAAA,yBAAA;AAAA,IACV,SAAU,CAAA,YAAA;AAAA,IACV,SAAU,CAAA,kBAAA;AAAA,IACV,SAAU,CAAA,kBAAA;AAAA,GACZ,CAAA;AAAA,EAEQ,uBAAuB,KAAgC,EAAA;AAC7D,IAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,MAAI,IAAA;AACF,QAAQ,KAAA,GAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,eACjB,CAAG,EAAA;AAAA,OAEZ;AAAA,KACF;AAEA,IAAO,OAAA;AAAA,MACL,MAAM,oBAAqB,CAAA,SAAA;AAAA,MAC3B,OAAS,EAAA;AAAA,QACP,IAAA,EAAM,MAAM,IAAK,CAAA,SAAA;AAAA,QACjB,GAAG,MAAM,IAAK,CAAA,YAAA;AAAA,OAChB;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,eAAA,EAAiB,MAAM,eAAmB,IAAA,IAAA;AAAA,QAC1C,QAAQ,KAAM,CAAA,MAAA;AAAA,OAChB;AAAA,KACF,CAAA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA,EAOO,OAAO,MAAa,EAAA;AACzB,IAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,sBAAA,CAAuB,MAAM,CAAA,CAAA;AAChD,IAAA,IACE,eAAe,aAAc,CAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAiB,CACrE,EAAA;AACA,MAAK,IAAA,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AACF;;;;"}