@ethlete/query 4.20.5 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,9 +48,9 @@ export class QueryCreator {
48
48
  return _signal;
49
49
  };
50
50
  /**
51
- * @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v5.
51
+ * @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v6.
52
52
  */
53
53
  this.behaviorSubject = (initialValue) => new BehaviorSubject(initialValue ?? null);
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1jcmVhdG9yL3F1ZXJ5LWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVWxGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUF3Qix5QkFBeUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUczRSxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUNVLFlBRXVELEVBQ3ZELE9BQW9CLEVBQ3BCLE1BQWtCO1FBSmxCLGlCQUFZLEdBQVosWUFBWSxDQUUyQztRQUN2RCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFHNUIsNkRBQTZEO1FBQzdELGFBQWE7UUFDYixZQUFPLEdBQWdFLENBQ3JFLElBQTJDLEVBQzNDLEVBQUU7WUFDRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7Z0JBQzVCLFdBQVcsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMvRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVzthQUMzRCxDQUFVLENBQUM7WUFFWixNQUFNLFFBQVEsR0FDWixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO2dCQUN4QyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUYsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUU7Z0JBQy9FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFxRCxRQUFRLENBQUMsQ0FBQztnQkFFcEcsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLE9BQU8sYUFBYSxDQUFDO2lCQUN0QjthQUNGO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxFQUNMLElBQUksSUFBSyxFQUFnQixFQUN6QixRQUFRLENBQ1QsQ0FBQztZQUVGLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDbEM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsa0JBQWEsR0FBRyxDQUFDLFlBQXFELEVBQUUsTUFBNkIsRUFBRSxFQUFFO1lBQ3ZHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUU3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBeUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBRWxHLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFckUsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsaUJBQVksR0FBRyxDQUFDLFlBQXFELEVBQUUsTUFBNkIsRUFBRSxFQUFFO1lBQ3RHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQXlDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUVyRix5QkFBeUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFMUUsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLENBQUMsWUFBcUQsRUFBRSxFQUFFLENBQzFFLElBQUksZUFBZSxDQUF5QyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7SUFwRWpGLENBQUM7Q0FxRUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4uL2VudGl0eSc7XG5pbXBvcnQgeyBRdWVyeSwgY29tcHV0ZVF1ZXJ5UXVlcnlQYXJhbXMsIGlzR3FsUXVlcnlDb25maWcgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgYnVpbGRHcWxDYWNoZUtleSwgc2hvdWxkQ2FjaGVRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlIH0gZnJvbSAnLi4vcXVlcnktc3RvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxuICBXaXRoQ29uZmlnLFxuICBXaXRoSGVhZGVycyxcbn0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRSb3V0ZSB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDb250YWluZXJDb25maWcsIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBRdWVyeVByZXBhcmVGbiB9IGZyb20gJy4vcXVlcnktY3JlYXRvci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNyZWF0b3I8XG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFF1ZXJ5U3RvcmUsXG4gICkge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJlcGFyZTogUXVlcnlQcmVwYXJlRm48QXJndW1lbnRzLCBSZXNwb25zZSwgUm91dGUsIFN0b3JlLCBEYXRhLCBJZD4gPSAoXG4gICAgYXJncz86IEFyZ3VtZW50cyAmIFdpdGhIZWFkZXJzICYgV2l0aENvbmZpZyxcbiAgKSA9PiB7XG4gICAgY29uc3Qgcm91dGUgPSBidWlsZFJvdXRlKHtcbiAgICAgIGJhc2U6IHRoaXMuX2NsaWVudC5jb25maWcuYmFzZVJvdXRlLFxuICAgICAgcm91dGU6IHRoaXMuX3F1ZXJ5Q29uZmlnLnJvdXRlLFxuICAgICAgcGF0aFBhcmFtczogYXJncz8ucGF0aFBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb21wdXRlUXVlcnlRdWVyeVBhcmFtcyh7IGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50LCBhcmdzIH0pLFxuICAgICAgcXVlcnlQYXJhbUNvbmZpZzogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5xdWVyeVBhcmFtcyxcbiAgICB9KSBhcyBSb3V0ZTtcblxuICAgIGNvbnN0IGNhY2hlS2V5ID1cbiAgICAgIChhcmdzPy5jb25maWc/LnF1ZXJ5U3RvcmVDYWNoZUtleSA/PyAnJykgK1xuICAgICAgKGlzR3FsUXVlcnlDb25maWcodGhpcy5fcXVlcnlDb25maWcpID8gYnVpbGRHcWxDYWNoZUtleSh0aGlzLl9xdWVyeUNvbmZpZywgYXJncykgOiByb3V0ZSk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeSh0aGlzLl9xdWVyeUNvbmZpZy5tZXRob2QpICYmICFhcmdzPy5jb25maWc/LnNraXBRdWVyeVN0b3JlKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1F1ZXJ5ID0gdGhpcy5fc3RvcmUuZ2V0PFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+PihjYWNoZUtleSk7XG5cbiAgICAgIGlmIChleGlzdGluZ1F1ZXJ5KSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1F1ZXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+KFxuICAgICAgdGhpcy5fY2xpZW50LFxuICAgICAgdGhpcy5fcXVlcnlDb25maWcsXG4gICAgICByb3V0ZSxcbiAgICAgIGFyZ3MgPz8gKHt9IGFzIEFyZ3VtZW50cyksXG4gICAgICBjYWNoZUtleSxcbiAgICApO1xuXG4gICAgaWYgKHNob3VsZENhY2hlUXVlcnkodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSAmJiAhYXJncz8uY29uZmlnPy5za2lwUXVlcnlTdG9yZSkge1xuICAgICAgdGhpcy5fc3RvcmUuYWRkKGNhY2hlS2V5LCBxdWVyeSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RvcmUuX2Rpc3BhdGNoUXVlcnlDcmVhdGVkKHF1ZXJ5KTtcblxuICAgIHJldHVybiBxdWVyeTtcbiAgfTtcblxuICBjcmVhdGVTdWJqZWN0ID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsLCBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZykgPT4ge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmNyZWF0ZVN1YmplY3QpO1xuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsKTtcblxuICAgIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcoc3ViamVjdCwgKCkgPT4gc3ViamVjdC5nZXRWYWx1ZSgpLCBjb25maWcpO1xuXG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH07XG5cbiAgY3JlYXRlU2lnbmFsID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsLCBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZykgPT4ge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmNyZWF0ZVNpZ25hbCk7XG5cbiAgICBjb25zdCBfc2lnbmFsID0gc2lnbmFsPFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsPihpbml0aWFsVmFsdWUgPz8gbnVsbCk7XG5cbiAgICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKHRvT2JzZXJ2YWJsZShfc2lnbmFsKSwgKCkgPT4gX3NpZ25hbCgpLCBjb25maWcpO1xuXG4gICAgcmV0dXJuIF9zaWduYWw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbXlRdWVyeS5jcmVhdGVTdWJqZWN0KClgIG9yIGBteVF1ZXJ5LmNyZWF0ZVNpZ25hbCgpYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuXG4gICAqL1xuICBiZWhhdmlvclN1YmplY3QgPSAoaW5pdGlhbFZhbHVlPzogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGwpID0+XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLnByZXBhcmU+IHwgbnVsbD4oaW5pdGlhbFZhbHVlID8/IG51bGwpO1xufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1jcmVhdG9yL3F1ZXJ5LWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVWxGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUF3Qix5QkFBeUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUczRSxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUNVLFlBRXVELEVBQ3ZELE9BQW9CLEVBQ3BCLE1BQWtCO1FBSmxCLGlCQUFZLEdBQVosWUFBWSxDQUUyQztRQUN2RCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFHNUIsNkRBQTZEO1FBQzdELGFBQWE7UUFDYixZQUFPLEdBQWdFLENBQ3JFLElBQTJDLEVBQzNDLEVBQUU7WUFDRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7Z0JBQzVCLFdBQVcsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMvRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVzthQUMzRCxDQUFVLENBQUM7WUFFWixNQUFNLFFBQVEsR0FDWixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO2dCQUN4QyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUYsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUU7Z0JBQy9FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFxRCxRQUFRLENBQUMsQ0FBQztnQkFFcEcsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLE9BQU8sYUFBYSxDQUFDO2lCQUN0QjthQUNGO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxFQUNMLElBQUksSUFBSyxFQUFnQixFQUN6QixRQUFRLENBQ1QsQ0FBQztZQUVGLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDbEM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsa0JBQWEsR0FBRyxDQUFDLFlBQXFELEVBQUUsTUFBNkIsRUFBRSxFQUFFO1lBQ3ZHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUU3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBeUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBRWxHLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFckUsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsaUJBQVksR0FBRyxDQUFDLFlBQXFELEVBQUUsTUFBNkIsRUFBRSxFQUFFO1lBQ3RHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQXlDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUVyRix5QkFBeUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFMUUsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLENBQUMsWUFBcUQsRUFBRSxFQUFFLENBQzFFLElBQUksZUFBZSxDQUF5QyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7SUFwRWpGLENBQUM7Q0FxRUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4uL2VudGl0eSc7XG5pbXBvcnQgeyBRdWVyeSwgY29tcHV0ZVF1ZXJ5UXVlcnlQYXJhbXMsIGlzR3FsUXVlcnlDb25maWcgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgYnVpbGRHcWxDYWNoZUtleSwgc2hvdWxkQ2FjaGVRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlIH0gZnJvbSAnLi4vcXVlcnktc3RvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxuICBXaXRoQ29uZmlnLFxuICBXaXRoSGVhZGVycyxcbn0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRSb3V0ZSB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDb250YWluZXJDb25maWcsIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBRdWVyeVByZXBhcmVGbiB9IGZyb20gJy4vcXVlcnktY3JlYXRvci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNyZWF0b3I8XG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFF1ZXJ5U3RvcmUsXG4gICkge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJlcGFyZTogUXVlcnlQcmVwYXJlRm48QXJndW1lbnRzLCBSZXNwb25zZSwgUm91dGUsIFN0b3JlLCBEYXRhLCBJZD4gPSAoXG4gICAgYXJncz86IEFyZ3VtZW50cyAmIFdpdGhIZWFkZXJzICYgV2l0aENvbmZpZyxcbiAgKSA9PiB7XG4gICAgY29uc3Qgcm91dGUgPSBidWlsZFJvdXRlKHtcbiAgICAgIGJhc2U6IHRoaXMuX2NsaWVudC5jb25maWcuYmFzZVJvdXRlLFxuICAgICAgcm91dGU6IHRoaXMuX3F1ZXJ5Q29uZmlnLnJvdXRlLFxuICAgICAgcGF0aFBhcmFtczogYXJncz8ucGF0aFBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb21wdXRlUXVlcnlRdWVyeVBhcmFtcyh7IGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50LCBhcmdzIH0pLFxuICAgICAgcXVlcnlQYXJhbUNvbmZpZzogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5xdWVyeVBhcmFtcyxcbiAgICB9KSBhcyBSb3V0ZTtcblxuICAgIGNvbnN0IGNhY2hlS2V5ID1cbiAgICAgIChhcmdzPy5jb25maWc/LnF1ZXJ5U3RvcmVDYWNoZUtleSA/PyAnJykgK1xuICAgICAgKGlzR3FsUXVlcnlDb25maWcodGhpcy5fcXVlcnlDb25maWcpID8gYnVpbGRHcWxDYWNoZUtleSh0aGlzLl9xdWVyeUNvbmZpZywgYXJncykgOiByb3V0ZSk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeSh0aGlzLl9xdWVyeUNvbmZpZy5tZXRob2QpICYmICFhcmdzPy5jb25maWc/LnNraXBRdWVyeVN0b3JlKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1F1ZXJ5ID0gdGhpcy5fc3RvcmUuZ2V0PFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+PihjYWNoZUtleSk7XG5cbiAgICAgIGlmIChleGlzdGluZ1F1ZXJ5KSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1F1ZXJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5PFJlc3BvbnNlLCBBcmd1bWVudHMsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+KFxuICAgICAgdGhpcy5fY2xpZW50LFxuICAgICAgdGhpcy5fcXVlcnlDb25maWcsXG4gICAgICByb3V0ZSxcbiAgICAgIGFyZ3MgPz8gKHt9IGFzIEFyZ3VtZW50cyksXG4gICAgICBjYWNoZUtleSxcbiAgICApO1xuXG4gICAgaWYgKHNob3VsZENhY2hlUXVlcnkodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSAmJiAhYXJncz8uY29uZmlnPy5za2lwUXVlcnlTdG9yZSkge1xuICAgICAgdGhpcy5fc3RvcmUuYWRkKGNhY2hlS2V5LCBxdWVyeSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RvcmUuX2Rpc3BhdGNoUXVlcnlDcmVhdGVkKHF1ZXJ5KTtcblxuICAgIHJldHVybiBxdWVyeTtcbiAgfTtcblxuICBjcmVhdGVTdWJqZWN0ID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsLCBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZykgPT4ge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmNyZWF0ZVN1YmplY3QpO1xuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsKTtcblxuICAgIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcoc3ViamVjdCwgKCkgPT4gc3ViamVjdC5nZXRWYWx1ZSgpLCBjb25maWcpO1xuXG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH07XG5cbiAgY3JlYXRlU2lnbmFsID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsLCBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZykgPT4ge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmNyZWF0ZVNpZ25hbCk7XG5cbiAgICBjb25zdCBfc2lnbmFsID0gc2lnbmFsPFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsPihpbml0aWFsVmFsdWUgPz8gbnVsbCk7XG5cbiAgICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKHRvT2JzZXJ2YWJsZShfc2lnbmFsKSwgKCkgPT4gX3NpZ25hbCgpLCBjb25maWcpO1xuXG4gICAgcmV0dXJuIF9zaWduYWw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbXlRdWVyeS5jcmVhdGVTdWJqZWN0KClgIG9yIGBteVF1ZXJ5LmNyZWF0ZVNpZ25hbCgpYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjYuXG4gICAqL1xuICBiZWhhdmlvclN1YmplY3QgPSAoaW5pdGlhbFZhbHVlPzogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGwpID0+XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLnByZXBhcmU+IHwgbnVsbD4oaW5pdGlhbFZhbHVlID8/IG51bGwpO1xufVxuIl19
@@ -249,4 +249,4 @@ export const shouldRetryRequest = (config) => {
249
249
  }
250
250
  return { retry: false };
251
251
  };
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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RUFBRSxDQUFDO0tBQ2xEO0lBRUQsc0JBQXNCO0lBQ3RCLElBQUksTUFBTSw2Q0FBbUMsRUFBRTtRQUM3QyxNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxDLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hGO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLENBQUM7S0FDbEQ7SUFFRCwrRUFBK0U7SUFDL0UsK0VBQStFO0lBQy9FLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUNsRDtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YWxpZEJhc2VSb3V0ZUVycm9yLCBpbnZhbGlkUm91dGVFcnJvciwgcGF0aFBhcmFtc01pc3NpbmdJblJvdXRlRnVuY3Rpb25FcnJvciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBpc1N5bWZvbnlQYWdlcmZhbnRhT3V0T2ZSYW5nZUVycm9yIH0gZnJvbSAnLi4vc3ltZm9ueSc7XG5pbXBvcnQge1xuICBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnLFxuICBNZXRob2QsXG4gIFF1ZXJ5UGFyYW1zLFxuICBSZXF1ZXN0RXJyb3IsXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0UmV0cnlGbixcbn0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmFOID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc05hTih2YWx1ZSk7XG5leHBvcnQgY29uc3QgaXNFbXB0eVN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnO1xuXG5leHBvcnQgY29uc3QgaXNSZXF1ZXN0RXJyb3IgPSA8VCA9IHVua25vd24+KGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yPFQ+ID0+XG4gIGVycm9yIGluc3RhbmNlb2YgT2JqZWN0ICYmICdzdGF0dXMnIGluIGVycm9yICYmICdzdGF0dXNUZXh0JyBpbiBlcnJvciAmJiAndXJsJyBpbiBlcnJvcjtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUm91dGUgPSAob3B0aW9uczoge1xuICBiYXNlOiBzdHJpbmc7XG4gIHJvdXRlOiAoKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcpIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xuICBxdWVyeVBhcmFtQ29uZmlnPzogQnVpbGRRdWVyeVN0cmluZ0NvbmZpZztcbn0pID0+IHtcbiAgaWYgKG9wdGlvbnMuYmFzZS5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZEJhc2VSb3V0ZUVycm9yKG9wdGlvbnMuYmFzZSk7XG4gIH1cblxuICBsZXQgcm91dGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICghb3B0aW9ucy5wYXRoUGFyYW1zKSB7XG4gICAgICB0aHJvdyBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yKG9wdGlvbnMucm91dGUoe30pKTtcbiAgICB9XG5cbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUob3B0aW9ucy5wYXRoUGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUgPz8gbnVsbDtcbiAgfVxuXG4gIGlmIChyb3V0ZSAmJiAhcm91dGUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZFJvdXRlRXJyb3Iocm91dGUpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucXVlcnlQYXJhbXMpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGJ1aWxkUXVlcnlTdHJpbmcob3B0aW9ucy5xdWVyeVBhcmFtcywgb3B0aW9ucy5xdWVyeVBhcmFtQ29uZmlnKTtcblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgcm91dGUgPSByb3V0ZSA/IGAke3JvdXRlfT8ke3F1ZXJ5U3RyaW5nfWAgOiBgLz8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke29wdGlvbnMuYmFzZX0ke3JvdXRlID8/ICcnfWA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRRdWVyeVN0cmluZyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zLCBjb25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IG9iamVjdE5vdGF0aW9uID0gY29uZmlnPy5vYmplY3ROb3RhdGlvbiA/PyAnYnJhY2tldCc7XG4gIGNvbnN0IHdyaXRlQXJyYXlJbmRleGVzID0gY29uZmlnPy53cml0ZUFycmF5SW5kZXhlcyA/PyBmYWxzZTtcbiAgY29uc3QgaWdub3JlZFZhbHVlcyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlcyA/PyBbdW5kZWZpbmVkLCBudWxsLCBJbmZpbml0eSwgLUluZmluaXR5XTtcbiAgY29uc3QgaWdub3JlZFZhbHVlc0ZucyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlc0ZucyA/PyBbaXNOYU4sIGlzRW1wdHlTdHJpbmddO1xuXG4gIGNvbnN0IHF1ZXJ5UGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHByb2Nlc3NWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGxldCBjdXJyZW50RmlsdGVyZWRJbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGFycmF5VmFsdWUgb2YgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gd3JpdGVBcnJheUluZGV4ZXMgPyBgJHtrZXl9WyR7Y3VycmVudEZpbHRlcmVkSW5kZXh9XWAgOiBgJHtrZXl9W11gO1xuXG4gICAgICAgIGNvbnN0IGRpZEFkZFZhbHVlID0gcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgYXJyYXlWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGRpZEFkZFZhbHVlKSB7XG4gICAgICAgICAgY3VycmVudEZpbHRlcmVkSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgW29iaktleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gb2JqZWN0Tm90YXRpb24gPT09ICdkb3QnID8gYCR7a2V5fS4ke29iaktleX1gIDogYCR7a2V5fVske29iaktleX1dYDtcbiAgICAgICAgcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgdmFsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzRm5zLnNvbWUoKGZuKSA9PiBmbih2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgICAgY29uc3QgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlIGFzIHN0cmluZyk7XG5cbiAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7ZW5jb2RlZEtleX09JHtlbmNvZGVkVmFsdWV9YCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgcHJvY2Vzc1ZhbHVlKGtleSwgdmFsKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyeVBhcmFtcy5sZW5ndGggPyBxdWVyeVBhcmFtcy5qb2luKCcmJykgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzKSA9PiB7XG4gIGNvbnN0IGNhY2hlQ29udHJvbCA9IGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXTtcbiAgY29uc3QgYWdlID0gaGVhZGVyc1snYWdlJ107XG4gIGNvbnN0IGV4cGlyZXMgPSBoZWFkZXJzWydleHBpcmVzJ107XG5cbiAgLy8gSW4gc2Vjb25kc1xuICBsZXQgZXhwaXJlc0luOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IG1heEFnZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ25vLWNhY2hlJykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjYWNoZUNvbnRyb2w/LmluY2x1ZGVzKCdtYXgtYWdlJykpIHtcbiAgICBjb25zdCBtID0gY2FjaGVDb250cm9sLnNwbGl0KCdtYXgtYWdlPScpWzFdO1xuXG4gICAgaWYgKG0pIHtcbiAgICAgIG1heEFnZSA9IHBhcnNlSW50KG0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjYWNoZUNvbnRyb2w/LmluY2x1ZGVzKCdzLW1heGFnZScpKSB7XG4gICAgY29uc3QgbSA9IGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV07XG5cbiAgICBpZiAobSkge1xuICAgICAgbWF4QWdlID0gcGFyc2VJbnQobSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAobWF4QWdlKSB7XG4gICAgZXhwaXJlc0luID0gbWF4QWdlIC8gMjsgLy8gV2UgYXNzdW1lIHRoZSByZXNwb25zZSBpcyBoYWxmIHdheSB0byBpdHMgZXhwaXJhdGlvblxuICB9IGVsc2UgaWYgKGV4cGlyZXMpIHtcbiAgICAvLyBVc2VkIGJ5IHNvbWUgYXBpcyB0byB0ZWxsIHRoZSByZXNwb25zZSB3aWxsIG5ldmVyIGV4cGlyZVxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBsZXQgdGhlIHJlc3BvbnNlIGV4cGlyZSBhZnRlciAxIGhvdXJcbiAgICBpZiAoZXhwaXJlcyA9PT0gJy0xJykge1xuICAgICAgZXhwaXJlc0luID0gMzYwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgdmFsaWRcbiAgICAgIGlmIChleHBpcmVzRGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICBleHBpcmVzSW4gPSBNYXRoLmZsb29yKChleHBpcmVzRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpKSAvIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBpcmVzSW47XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gIGlmIChzZWNvbmRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIHNlY29uZHMgKiAxMDAwKS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplQm9keSA9IChib2R5OiB1bmtub3duKTogQXJyYXlCdWZmZXIgfCBVUkxTZWFyY2hQYXJhbXMgfCBCbG9iIHwgRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoXG4gICAgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIEJsb2IgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8XG4gICAgdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYm9keSA9PT0gJ2Jvb2xlYW4nIHx8IEFycmF5LmlzQXJyYXkoYm9keSkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gKGJvZHkgYXMgYW55KS50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IChjb25maWc6IHsgbWV0aG9kOiBNZXRob2Q7IHRyYW5zZmVyVmlhPzogJ0dFVCcgfCAnUE9TVCcgfSkgPT4ge1xuICBpZiAoY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9NVVRBVEUnKSB7XG4gICAgaWYgKCFjb25maWcudHJhbnNmZXJWaWEpIHtcbiAgICAgIHJldHVybiAnUE9TVCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZy50cmFuc2ZlclZpYTtcbiAgfVxuXG4gIHJldHVybiBjb25maWcubWV0aG9kO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdENvbnRlbnRUeXBlSGVhZGVyID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgLy8gQW4gZW1wdHkgYm9keSBoYXMgbm8gY29udGVudCB0eXBlLlxuICBpZiAoYm9keSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEZvcm1EYXRhIGJvZGllcyByZWx5IG9uIHRoZSBicm93c2VyJ3MgY29udGVudCB0eXBlIGFzc2lnbm1lbnQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBCbG9icyB1c3VhbGx5IGhhdmUgdGhlaXIgb3duIGNvbnRlbnQgdHlwZS4gSWYgaXQgZG9lc24ndCwgdGhlblxuICAvLyBubyB0eXBlIGNhbiBiZSBpbmZlcnJlZC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgcmV0dXJuIGJvZHkudHlwZSB8fCBudWxsO1xuICB9XG4gIC8vIEFycmF5IGJ1ZmZlcnMgaGF2ZSB1bmtub3duIGNvbnRlbnRzIGFuZCB0aHVzIG5vIHR5cGUgY2FuIGJlIGluZmVycmVkLlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gVGVjaG5pY2FsbHksIHN0cmluZ3MgY291bGQgYmUgYSBmb3JtIG9mIEpTT04gZGF0YSwgYnV0IGl0J3Mgc2FmZSBlbm91Z2hcbiAgLy8gdG8gYXNzdW1lIHRoZXkncmUgcGxhaW4gc3RyaW5ncy5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAndGV4dC9wbGFpbic7XG4gIH1cblxuICAvLyBBcnJheXMsIG9iamVjdHMsIGJvb2xlYW4gYW5kIG51bWJlcnMgd2lsbCBiZSBlbmNvZGVkIGFzIEpTT04uXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGJvZHkgPT09ICdudW1iZXInIHx8IHR5cGVvZiBib2R5ID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICB9XG4gIC8vIE5vIHR5cGUgY291bGQgYmUgaW5mZXJyZWQuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0hlYWRlciA9IChoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycywgaGVhZGVyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGhlYWRlcnMpLnNvbWUoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlci50b0xvd2VyQ2FzZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JFYWNoSGVhZGVyID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLCBjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNhbGxiYWNrKGtleSwgdmFsdWUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyA9ICh4aHI6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XG4gIGNvbnN0IHBhcnNlZEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge307XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGhlYWRlcnMuc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBuYW1lID0gbGluZS5zbGljZSgwLCBpbmRleCk7XG4gICAgICBjb25zdCBrZXkgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG5cbiAgICAgIHBhcnNlZEhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRIZWFkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc3BvbnNlVXJsID0gKHhocjogWE1MSHR0cFJlcXVlc3QpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyICYmIHhoci5yZXNwb25zZVVSTCkge1xuICAgIHJldHVybiB4aHIucmVzcG9uc2VVUkw7XG4gIH1cbiAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmV0cnlSZXF1ZXN0OiBSZXF1ZXN0UmV0cnlGbiA9IChjb25maWcpID0+IHtcbiAgY29uc3QgZGVmYXVsdFJldHJ5RGVsYXkgPSAxMDAwICsgMTAwMCAqIGNvbmZpZy5jdXJyZW50UmV0cnlDb3VudDtcblxuICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUNvdW50ID4gMykge1xuICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICB9XG5cbiAgaWYgKCFpc1JlcXVlc3RFcnJvcihjb25maWcuZXJyb3IpKSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gIH1cblxuICBjb25zdCB7IHN0YXR1cywgZGV0YWlsIH0gPSBjb25maWcuZXJyb3I7XG5cbiAgLy8gUmV0cnkgb24gNXh4IGVycm9yc1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIC8vIERvbid0IHJldHJ5IGlmIGEgcmVxdWVzdGVkIHBhZ2UgaXMgb3V0IG9mIHJhbmdlXG4gICAgaWYgKGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IoZGV0YWlsKSkge1xuICAgICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gUmV0cnkgb24gNDA4IG9yIDQyNSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQgfHwgc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseSkge1xuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIC8vIFJldHJ5IG9uIDQyOSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9XG4gICAgICBjb25maWcuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ1JldHJ5LUFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWyd4LXJldHJ5LWFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWydYLVJldHJ5LUFmdGVyJ107XG5cbiAgICBpZiAocmV0cnlBZnRlcikge1xuICAgICAgY29uc3QgZGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyKSAqIDEwMDA7XG4gICAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IE51bWJlci5pc05hTihkZWxheSkgPyBkZWZhdWx0UmV0cnlEZWxheSA6IGRlbGF5IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gQ29kZSAwIHVzdWFsbHkgbWVhbnMgdGhlIGludGVybmV0IGNvbm5lY3Rpb24gaXMgZG93bi4gV2UgcmV0cnkgaW4gdGhpcyBjYXNlLlxuICAvLyBJdCBjb3VsZCBhbHNvIGJlIGEgQ09SUyBpc3N1ZSBidXQgdGhhdCBzaG91bGQgbm90IGJlIHRoZSBjYXNlIGluIHByb2R1Y3Rpb24uXG4gIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnVtIEh0dHBTdGF0dXNDb2RlIHtcbiAgVW5rbm93biA9IDAsXG5cbiAgQ29udGludWUgPSAxMDAsXG4gIFN3aXRjaGluZ1Byb3RvY29scyA9IDEwMSxcbiAgUHJvY2Vzc2luZyA9IDEwMixcbiAgRWFybHlIaW50cyA9IDEwMyxcblxuICBPayA9IDIwMCxcbiAgQ3JlYXRlZCA9IDIwMSxcbiAgQWNjZXB0ZWQgPSAyMDIsXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbiA9IDIwMyxcbiAgTm9Db250ZW50ID0gMjA0LFxuICBSZXNldENvbnRlbnQgPSAyMDUsXG4gIFBhcnRpYWxDb250ZW50ID0gMjA2LFxuICBNdWx0aVN0YXR1cyA9IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkID0gMjA4LFxuICBJbVVzZWQgPSAyMjYsXG5cbiAgTXVsdGlwbGVDaG9pY2VzID0gMzAwLFxuICBNb3ZlZFBlcm1hbmVudGx5ID0gMzAxLFxuICBGb3VuZCA9IDMwMixcbiAgU2VlT3RoZXIgPSAzMDMsXG4gIE5vdE1vZGlmaWVkID0gMzA0LFxuICBVc2VQcm94eSA9IDMwNSxcbiAgVW51c2VkID0gMzA2LFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG5cbiAgQmFkUmVxdWVzdCA9IDQwMCxcbiAgVW5hdXRob3JpemVkID0gNDAxLFxuICBQYXltZW50UmVxdWlyZWQgPSA0MDIsXG4gIEZvcmJpZGRlbiA9IDQwMyxcbiAgTm90Rm91bmQgPSA0MDQsXG4gIE1ldGhvZE5vdEFsbG93ZWQgPSA0MDUsXG4gIE5vdEFjY2VwdGFibGUgPSA0MDYsXG4gIFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDQwNyxcbiAgUmVxdWVzdFRpbWVvdXQgPSA0MDgsXG4gIENvbmZsaWN0ID0gNDA5LFxuICBHb25lID0gNDEwLFxuICBMZW5ndGhSZXF1aXJlZCA9IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkID0gNDEyLFxuICBQYXlsb2FkVG9vTGFyZ2UgPSA0MTMsXG4gIFVyaVRvb0xvbmcgPSA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlID0gNDE1LFxuICBSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2LFxuICBFeHBlY3RhdGlvbkZhaWxlZCA9IDQxNyxcbiAgSW1BVGVhcG90ID0gNDE4LFxuICBNaXNkaXJlY3RlZFJlcXVlc3QgPSA0MjEsXG4gIFVucHJvY2Vzc2FibGVFbnRpdHkgPSA0MjIsXG4gIExvY2tlZCA9IDQyMyxcbiAgRmFpbGVkRGVwZW5kZW5jeSA9IDQyNCxcbiAgVG9vRWFybHkgPSA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZCA9IDQyNixcbiAgUHJlY29uZGl0aW9uUmVxdWlyZWQgPSA0MjgsXG4gIFRvb01hbnlSZXF1ZXN0cyA9IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlID0gNDMxLFxuICBVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29ucyA9IDQ1MSxcblxuICBJbnRlcm5hbFNlcnZlckVycm9yID0gNTAwLFxuICBOb3RJbXBsZW1lbnRlZCA9IDUwMSxcbiAgQmFkR2F0ZXdheSA9IDUwMixcbiAgU2VydmljZVVuYXZhaWxhYmxlID0gNTAzLFxuICBHYXRld2F5VGltZW91dCA9IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQgPSA1MDUsXG4gIFZhcmlhbnRBbHNvTmVnb3RpYXRlcyA9IDUwNixcbiAgSW5zdWZmaWNpZW50U3RvcmFnZSA9IDUwNyxcbiAgTG9vcERldGVjdGVkID0gNTA4LFxuICBOb3RFeHRlbmRlZCA9IDUxMCxcbiAgTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQgPSA1MTEsXG59XG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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QixFQUFFLENBQUM7S0FDbEQ7SUFFRCxzQkFBc0I7SUFDdEIsSUFBSSxNQUFNLDZDQUFtQyxFQUFFO1FBQzdDLE1BQU0sVUFBVSxHQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEY7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUNsRDtJQUVELCtFQUErRTtJQUMvRSwrRUFBK0U7SUFDL0UsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhbGlkQmFzZVJvdXRlRXJyb3IsIGludmFsaWRSb3V0ZUVycm9yLCBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IgfSBmcm9tICcuLi9zeW1mb255JztcbmltcG9ydCB7XG4gIEJ1aWxkUXVlcnlTdHJpbmdDb25maWcsXG4gIE1ldGhvZCxcbiAgUXVlcnlQYXJhbXMsXG4gIFJlcXVlc3RFcnJvcixcbiAgUmVxdWVzdEhlYWRlcnMsXG4gIFJlcXVlc3RSZXRyeUZuLFxufSBmcm9tICcuL3JlcXVlc3QudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNOYU4gPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTmFOKHZhbHVlKTtcbmV4cG9ydCBjb25zdCBpc0VtcHR5U3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJyc7XG5cbmV4cG9ydCBjb25zdCBpc1JlcXVlc3RFcnJvciA9IDxUID0gdW5rbm93bj4oZXJyb3I6IHVua25vd24pOiBlcnJvciBpcyBSZXF1ZXN0RXJyb3I8VD4gPT5cbiAgZXJyb3IgaW5zdGFuY2VvZiBPYmplY3QgJiYgJ3N0YXR1cycgaW4gZXJyb3IgJiYgJ3N0YXR1c1RleHQnIGluIGVycm9yICYmICd1cmwnIGluIGVycm9yO1xuXG5leHBvcnQgY29uc3QgYnVpbGRSb3V0ZSA9IChvcHRpb25zOiB7XG4gIGJhc2U6IHN0cmluZztcbiAgcm91dGU6ICgoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHN0cmluZykgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXRoUGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXM7XG4gIHF1ZXJ5UGFyYW1Db25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnO1xufSkgPT4ge1xuICBpZiAob3B0aW9ucy5iYXNlLmVuZHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkQmFzZVJvdXRlRXJyb3Iob3B0aW9ucy5iYXNlKTtcbiAgfVxuXG4gIGxldCByb3V0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhdGhQYXJhbXMpIHtcbiAgICAgIHRocm93IHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3Iob3B0aW9ucy5yb3V0ZSh7fSkpO1xuICAgIH1cblxuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZShvcHRpb25zLnBhdGhQYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZSA/PyBudWxsO1xuICB9XG5cbiAgaWYgKHJvdXRlICYmICFyb3V0ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkUm91dGVFcnJvcihyb3V0ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYnVpbGRRdWVyeVN0cmluZyhvcHRpb25zLnF1ZXJ5UGFyYW1zLCBvcHRpb25zLnF1ZXJ5UGFyYW1Db25maWcpO1xuXG4gICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICByb3V0ZSA9IHJvdXRlID8gYCR7cm91dGV9PyR7cXVlcnlTdHJpbmd9YCA6IGAvPyR7cXVlcnlTdHJpbmd9YDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYCR7b3B0aW9ucy5iYXNlfSR7cm91dGUgPz8gJyd9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5U3RyaW5nID0gKHBhcmFtczogUXVlcnlQYXJhbXMsIGNvbmZpZz86IEJ1aWxkUXVlcnlTdHJpbmdDb25maWcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgb2JqZWN0Tm90YXRpb24gPSBjb25maWc/Lm9iamVjdE5vdGF0aW9uID8/ICdicmFja2V0JztcbiAgY29uc3Qgd3JpdGVBcnJheUluZGV4ZXMgPSBjb25maWc/LndyaXRlQXJyYXlJbmRleGVzID8/IGZhbHNlO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzID8/IFt1bmRlZmluZWQsIG51bGwsIEluZmluaXR5LCAtSW5maW5pdHldO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzRm5zID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzRm5zID8/IFtpc05hTiwgaXNFbXB0eVN0cmluZ107XG5cbiAgY29uc3QgcXVlcnlQYXJhbXM6IHN0cmluZ1tdID0gW107XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgbGV0IGN1cnJlbnRGaWx0ZXJlZEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgYXJyYXlWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSB3cml0ZUFycmF5SW5kZXhlcyA/IGAke2tleX1bJHtjdXJyZW50RmlsdGVyZWRJbmRleH1dYCA6IGAke2tleX1bXWA7XG5cbiAgICAgICAgY29uc3QgZGlkQWRkVmFsdWUgPSBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCBhcnJheVZhbHVlKTtcblxuICAgICAgICBpZiAoZGlkQWRkVmFsdWUpIHtcbiAgICAgICAgICBjdXJyZW50RmlsdGVyZWRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBbb2JqS2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSBvYmplY3ROb3RhdGlvbiA9PT0gJ2RvdCcgPyBgJHtrZXl9LiR7b2JqS2V5fWAgOiBgJHtrZXl9WyR7b2JqS2V5fV1gO1xuICAgICAgICBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXNGbnMuc29tZSgoZm4pID0+IGZuKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XG4gICAgICBjb25zdCBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUgYXMgc3RyaW5nKTtcblxuICAgICAgcXVlcnlQYXJhbXMucHVzaChgJHtlbmNvZGVkS2V5fT0ke2VuY29kZWRWYWx1ZX1gKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBwcm9jZXNzVmFsdWUoa2V5LCB2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5UGFyYW1zLmxlbmd0aCA/IHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKSA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdEV4cGlyZXNJblNlY29uZHMgPSAoaGVhZGVyczogUmVxdWVzdEhlYWRlcnMpID0+IHtcbiAgY29uc3QgY2FjaGVDb250cm9sID0gaGVhZGVyc1snY2FjaGUtY29udHJvbCddO1xuICBjb25zdCBhZ2UgPSBoZWFkZXJzWydhZ2UnXTtcbiAgY29uc3QgZXhwaXJlcyA9IGhlYWRlcnNbJ2V4cGlyZXMnXTtcblxuICAvLyBJbiBzZWNvbmRzXG4gIGxldCBleHBpcmVzSW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4QWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygnbm8tY2FjaGUnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ21heC1hZ2UnKSkge1xuICAgIGNvbnN0IG0gPSBjYWNoZUNvbnRyb2wuc3BsaXQoJ21heC1hZ2U9JylbMV07XG5cbiAgICBpZiAobSkge1xuICAgICAgbWF4QWdlID0gcGFyc2VJbnQobSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ3MtbWF4YWdlJykpIHtcbiAgICBjb25zdCBtID0gY2FjaGVDb250cm9sLnNwbGl0KCdzLW1heGFnZT0nKVsxXTtcblxuICAgIGlmIChtKSB7XG4gICAgICBtYXhBZ2UgPSBwYXJzZUludChtKTtcbiAgICB9XG4gIH1cblxuICBpZiAobWF4QWdlICYmIGFnZSkge1xuICAgIGNvbnN0IGFnZVNlY29uZHMgPSBwYXJzZUludChhZ2UpO1xuXG4gICAgZXhwaXJlc0luID0gbWF4QWdlIC0gYWdlU2Vjb25kcztcbiAgfSBlbHNlIGlmIChtYXhBZ2UpIHtcbiAgICBleHBpcmVzSW4gPSBtYXhBZ2UgLyAyOyAvLyBXZSBhc3N1bWUgdGhlIHJlc3BvbnNlIGlzIGhhbGYgd2F5IHRvIGl0cyBleHBpcmF0aW9uXG4gIH0gZWxzZSBpZiAoZXhwaXJlcykge1xuICAgIC8vIFVzZWQgYnkgc29tZSBhcGlzIHRvIHRlbGwgdGhlIHJlc3BvbnNlIHdpbGwgbmV2ZXIgZXhwaXJlXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGxldCB0aGUgcmVzcG9uc2UgZXhwaXJlIGFmdGVyIDEgaG91clxuICAgIGlmIChleHBpcmVzID09PSAnLTEnKSB7XG4gICAgICBleHBpcmVzSW4gPSAzNjAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleHBpcmVzRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xuXG4gICAgICAvLyBjaGVjayBpZiB0aGUgZGF0ZSBpcyB2YWxpZFxuICAgICAgaWYgKGV4cGlyZXNEYXRlLnRvU3RyaW5nKCkgIT09ICdJbnZhbGlkIERhdGUnKSB7XG4gICAgICAgIGV4cGlyZXNJbiA9IE1hdGguZmxvb3IoKGV4cGlyZXNEYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cGlyZXNJbjtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzID0gKHNlY29uZHM6IG51bWJlciB8IG51bGwpID0+IHtcbiAgaWYgKHNlY29uZHMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDApLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVCb2R5ID0gKGJvZHk6IHVua25vd24pOiBBcnJheUJ1ZmZlciB8IFVSTFNlYXJjaFBhcmFtcyB8IEJsb2IgfCBGb3JtRGF0YSB8IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChcbiAgICBib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgQmxvYiB8fFxuICAgIGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fFxuICAgIGJvZHkgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgfHxcbiAgICB0eXBlb2YgYm9keSA9PT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGJvZHkgYXMgQXJyYXlCdWZmZXIgfCBVUkxTZWFyY2hQYXJhbXMgfCBCbG9iIHwgRm9ybURhdGEgfCBzdHJpbmc7XG4gIH1cblxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBib2R5ID09PSAnYm9vbGVhbicgfHwgQXJyYXkuaXNBcnJheShib2R5KSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJldHVybiAoYm9keSBhcyBhbnkpLnRvU3RyaW5nKCk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTWV0aG9kID0gKGNvbmZpZzogeyBtZXRob2Q6IE1ldGhvZDsgdHJhbnNmZXJWaWE/OiAnR0VUJyB8ICdQT1NUJyB9KSA9PiB7XG4gIGlmIChjb25maWcubWV0aG9kID09PSAnR1FMX1FVRVJZJyB8fCBjb25maWcubWV0aG9kID09PSAnR1FMX01VVEFURScpIHtcbiAgICBpZiAoIWNvbmZpZy50cmFuc2ZlclZpYSkge1xuICAgICAgcmV0dXJuICdQT1NUJztcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnLnRyYW5zZmVyVmlhO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZy5tZXRob2Q7XG59O1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIgPSAoYm9keTogdW5rbm93bikgPT4ge1xuICAvLyBBbiBlbXB0eSBib2R5IGhhcyBubyBjb250ZW50IHR5cGUuXG4gIGlmIChib2R5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gRm9ybURhdGEgYm9kaWVzIHJlbHkgb24gdGhlIGJyb3dzZXIncyBjb250ZW50IHR5cGUgYXNzaWdubWVudC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEJsb2JzIHVzdWFsbHkgaGF2ZSB0aGVpciBvd24gY29udGVudCB0eXBlLiBJZiBpdCBkb2Vzbid0LCB0aGVuXG4gIC8vIG5vIHR5cGUgY2FuIGJlIGluZmVycmVkLlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICByZXR1cm4gYm9keS50eXBlIHx8IG51bGw7XG4gIH1cbiAgLy8gQXJyYXkgYnVmZmVycyBoYXZlIHVua25vd24gY29udGVudHMgYW5kIHRodXMgbm8gdHlwZSBjYW4gYmUgaW5mZXJyZWQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBUZWNobmljYWxseSwgc3RyaW5ncyBjb3VsZCBiZSBhIGZvcm0gb2YgSlNPTiBkYXRhLCBidXQgaXQncyBzYWZlIGVub3VnaFxuICAvLyB0byBhc3N1bWUgdGhleSdyZSBwbGFpbiBzdHJpbmdzLlxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICd0ZXh0L3BsYWluJztcbiAgfVxuXG4gIC8vIEFycmF5cywgb2JqZWN0cywgYm9vbGVhbiBhbmQgbnVtYmVycyB3aWxsIGJlIGVuY29kZWQgYXMgSlNPTi5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYm9keSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGJvZHkgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiAnYXBwbGljYXRpb24vanNvbic7XG4gIH1cbiAgLy8gTm8gdHlwZSBjb3VsZCBiZSBpbmZlcnJlZC5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzSGVhZGVyID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoaGVhZGVycykuc29tZSgoa2V5KSA9PiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gaGVhZGVyLnRvTG93ZXJDYXNlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvckVhY2hIZWFkZXIgPSAoaGVhZGVyczogUmVxdWVzdEhlYWRlcnMsIGNhbGxiYWNrOiAodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgT2JqZWN0LmVudHJpZXMoaGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgY2FsbGJhY2soa2V5LCB2YWx1ZSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQWxsWGhyUmVzcG9uc2VIZWFkZXJzID0gKHhocjogWE1MSHR0cFJlcXVlc3QpID0+IHtcbiAgY29uc3QgaGVhZGVycyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTtcbiAgY29uc3QgcGFyc2VkSGVhZGVyczogUmVxdWVzdEhlYWRlcnMgPSB7fTtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgaGVhZGVycy5zcGxpdCgnXFxuJykpIHtcbiAgICBjb25zdCBpbmRleCA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBsaW5lLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgIGNvbnN0IGtleSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbGluZS5zbGljZShpbmRleCArIDEpLnRyaW0oKTtcblxuICAgICAgcGFyc2VkSGVhZGVyc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZEhlYWRlcnM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVzcG9uc2VVcmwgPSAoeGhyOiBYTUxIdHRwUmVxdWVzdCk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgJiYgeGhyLnJlc3BvbnNlVVJMKSB7XG4gICAgcmV0dXJuIHhoci5yZXNwb25zZVVSTDtcbiAgfVxuICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkge1xuICAgIHJldHVybiB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1gtUmVxdWVzdC1VUkwnKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZXRyeVJlcXVlc3Q6IFJlcXVlc3RSZXRyeUZuID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBkZWZhdWx0UmV0cnlEZWxheSA9IDEwMDAgKyAxMDAwICogY29uZmlnLmN1cnJlbnRSZXRyeUNvdW50O1xuXG4gIGlmIChjb25maWcuY3VycmVudFJldHJ5Q291bnQgPiAzKSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gIH1cblxuICBpZiAoIWlzUmVxdWVzdEVycm9yKGNvbmZpZy5lcnJvcikpIHtcbiAgICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbiAgfVxuXG4gIGNvbnN0IHsgc3RhdHVzLCBkZXRhaWwgfSA9IGNvbmZpZy5lcnJvcjtcblxuICAvLyBSZXRyeSBvbiA1eHggZXJyb3JzXG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgLy8gRG9uJ3QgcmV0cnkgaWYgYSByZXF1ZXN0ZWQgcGFnZSBpcyBvdXQgb2YgcmFuZ2VcbiAgICBpZiAoaXNTeW1mb255UGFnZXJmYW50YU91dE9mUmFuZ2VFcnJvcihkZXRhaWwpKSB7XG4gICAgICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICAvLyBSZXRyeSBvbiA0MDggb3IgNDI1IGVycm9yc1xuICBpZiAoc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0VGltZW91dCB8fCBzdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLlRvb0Vhcmx5KSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gUmV0cnkgb24gNDI5IGVycm9yc1xuICBpZiAoc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Ub29NYW55UmVxdWVzdHMpIHtcbiAgICBjb25zdCByZXRyeUFmdGVyID1cbiAgICAgIGNvbmZpZy5oZWFkZXJzWydyZXRyeS1hZnRlciddIHx8XG4gICAgICBjb25maWcuaGVhZGVyc1snUmV0cnktQWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ3gtcmV0cnktYWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ1gtUmV0cnktQWZ0ZXInXTtcblxuICAgIGlmIChyZXRyeUFmdGVyKSB7XG4gICAgICBjb25zdCBkZWxheSA9IHBhcnNlSW50KHJldHJ5QWZ0ZXIpICogMTAwMDtcbiAgICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogTnVtYmVyLmlzTmFOKGRlbGF5KSA/IGRlZmF1bHRSZXRyeURlbGF5IDogZGVsYXkgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICAvLyBDb2RlIDAgdXN1YWxseSBtZWFucyB0aGUgaW50ZXJuZXQgY29ubmVjdGlvbiBpcyBkb3duLiBXZSByZXRyeSBpbiB0aGlzIGNhc2UuXG4gIC8vIEl0IGNvdWxkIGFsc28gYmUgYSBDT1JTIGlzc3VlIGJ1dCB0aGF0IHNob3VsZCBub3QgYmUgdGhlIGNhc2UgaW4gcHJvZHVjdGlvbi5cbiAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGVudW0gSHR0cFN0YXR1c0NvZGUge1xuICBVbmtub3duID0gMCxcblxuICBDb250aW51ZSA9IDEwMCxcbiAgU3dpdGNoaW5nUHJvdG9jb2xzID0gMTAxLFxuICBQcm9jZXNzaW5nID0gMTAyLFxuICBFYXJseUhpbnRzID0gMTAzLFxuXG4gIE9rID0gMjAwLFxuICBDcmVhdGVkID0gMjAxLFxuICBBY2NlcHRlZCA9IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uID0gMjAzLFxuICBOb0NvbnRlbnQgPSAyMDQsXG4gIFJlc2V0Q29udGVudCA9IDIwNSxcbiAgUGFydGlhbENvbnRlbnQgPSAyMDYsXG4gIE11bHRpU3RhdHVzID0gMjA3LFxuICBBbHJlYWR5UmVwb3J0ZWQgPSAyMDgsXG4gIEltVXNlZCA9IDIyNixcblxuICBNdWx0aXBsZUNob2ljZXMgPSAzMDAsXG4gIE1vdmVkUGVybWFuZW50bHkgPSAzMDEsXG4gIEZvdW5kID0gMzAyLFxuICBTZWVPdGhlciA9IDMwMyxcbiAgTm90TW9kaWZpZWQgPSAzMDQsXG4gIFVzZVByb3h5ID0gMzA1LFxuICBVbnVzZWQgPSAzMDYsXG4gIFRlbXBvcmFyeVJlZGlyZWN0ID0gMzA3LFxuICBQZXJtYW5lbnRSZWRpcmVjdCA9IDMwOCxcblxuICBCYWRSZXF1ZXN0ID0gNDAwLFxuICBVbmF1dGhvcml6ZWQgPSA0MDEsXG4gIFBheW1lbnRSZXF1aXJlZCA9IDQwMixcbiAgRm9yYmlkZGVuID0gNDAzLFxuICBOb3RGb3VuZCA9IDQwNCxcbiAgTWV0aG9kTm90QWxsb3dlZCA9IDQwNSxcbiAgTm90QWNjZXB0YWJsZSA9IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkID0gNDA3LFxuICBSZXF1ZXN0VGltZW91dCA9IDQwOCxcbiAgQ29uZmxpY3QgPSA0MDksXG4gIEdvbmUgPSA0MTAsXG4gIExlbmd0aFJlcXVpcmVkID0gNDExLFxuICBQcmVjb25kaXRpb25GYWlsZWQgPSA0MTIsXG4gIFBheWxvYWRUb29MYXJnZSA9IDQxMyxcbiAgVXJpVG9vTG9uZyA9IDQxNCxcbiAgVW5zdXBwb3J0ZWRNZWRpYVR5cGUgPSA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGUgPSA0MTYsXG4gIEV4cGVjdGF0aW9uRmFpbGVkID0gNDE3LFxuICBJbUFUZWFwb3QgPSA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdCA9IDQyMSxcbiAgVW5wcm9jZXNzYWJsZUVudGl0eSA9IDQyMixcbiAgTG9ja2VkID0gNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5ID0gNDI0LFxuICBUb29FYXJseSA9IDQyNSxcbiAgVXBncmFkZVJlcXVpcmVkID0gNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZCA9IDQyOCxcbiAgVG9vTWFueVJlcXVlc3RzID0gNDI5LFxuICBSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2UgPSA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zID0gNDUxLFxuXG4gIEludGVybmFsU2VydmVyRXJyb3IgPSA1MDAsXG4gIE5vdEltcGxlbWVudGVkID0gNTAxLFxuICBCYWRHYXRld2F5ID0gNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGUgPSA1MDMsXG4gIEdhdGV3YXlUaW1lb3V0ID0gNTA0LFxuICBIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZCA9IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzID0gNTA2LFxuICBJbnN1ZmZpY2llbnRTdG9yYWdlID0gNTA3LFxuICBMb29wRGV0ZWN0ZWQgPSA1MDgsXG4gIE5vdEV4dGVuZGVkID0gNTEwLFxuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDUxMSxcbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import * as i1$1 from '@ethlete/core';
2
2
  import { createDestroy, getCookie, setCookie, deleteCookie, nextFrame, DelayableDirective, RouterStateService, clone, equal, ET_PROPERTY_REMOVED } from '@ethlete/core';
3
3
  import { Observable, takeUntil, startWith, pairwise, tap, switchMap, of, BehaviorSubject, Subject, fromEvent, timer, take, filter, takeWhile, map, shareReplay, ReplaySubject, interval, skip, combineLatest, withLatestFrom, debounceTime, merge } from 'rxjs';
4
4
  import * as i0 from '@angular/core';
5
- import { assertInInjectionContext, inject, Injector, computed, signal, isDevMode, Pipe, InjectionToken, ChangeDetectorRef, untracked, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone } from '@angular/core';
5
+ import { assertInInjectionContext, inject, Injector, computed, signal, isDevMode, untracked, Pipe, InjectionToken, ChangeDetectorRef, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone } from '@angular/core';
6
6
  import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { NgIf, NgFor, AsyncPipe, JsonPipe, NgClass } from '@angular/common';
8
8
  import * as i1 from '@angular/forms';
@@ -667,7 +667,7 @@ class QueryCreator {
667
667
  return _signal;
668
668
  };
669
669
  /**
670
- * @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v5.
670
+ * @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v6.
671
671
  */
672
672
  this.behaviorSubject = (initialValue) => new BehaviorSubject(initialValue ?? null);
673
673
  }
@@ -1049,7 +1049,7 @@ const isQueryCollection = (query) => {
1049
1049
  return true;
1050
1050
  };
1051
1051
  /**
1052
- * @deprecated Use `createQueryCollectionSubject` instead. Will be removed in v5.
1052
+ * @deprecated Use `createQueryCollectionSubject` instead. Will be removed in v6.
1053
1053
  */
1054
1054
  const createQueryCollection = (
1055
1055
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1314,7 +1314,7 @@ class Query {
1314
1314
  return this;
1315
1315
  }
1316
1316
  }
1317
- this._state$.next({ type: "LOADING" /* QueryStateType.Loading */, meta });
1317
+ this._updateState({ type: "LOADING" /* QueryStateType.Loading */, meta });
1318
1318
  const method = computeQueryMethod({ config: queryConfig, client: this._client });
1319
1319
  const body = computeQueryBody({ config: queryConfig, client: this._client, args: this._arguments, method });
1320
1320
  const headers = computeQueryHeaders({ client: this._client, config: queryConfig, args: this._arguments });
@@ -1338,7 +1338,7 @@ class Query {
1338
1338
  return this;
1339
1339
  }
1340
1340
  this._onAbort$.next();
1341
- this._state$.next({
1341
+ this._updateState({
1342
1342
  type: "CANCELLED" /* QueryStateType.Cancelled */,
1343
1343
  meta: { id: this.rawState.meta.id, triggeredVia: this.rawState.meta.triggeredVia },
1344
1344
  });
@@ -1389,7 +1389,7 @@ class Query {
1389
1389
  case 'delay-retry': {
1390
1390
  const { type, retryDelay, retryNumber } = requestEvent;
1391
1391
  const newMeta = { ...meta, isWaitingForRetry: type === 'delay-retry', retryDelay, retryNumber };
1392
- this._state$.next({
1392
+ this._updateState({
1393
1393
  type: "LOADING" /* QueryStateType.Loading */,
1394
1394
  meta: newMeta,
1395
1395
  });
@@ -1397,7 +1397,7 @@ class Query {
1397
1397
  }
1398
1398
  case 'upload-progress':
1399
1399
  case 'download-progress': {
1400
- this._state$.next({
1400
+ this._updateState({
1401
1401
  type: "LOADING" /* QueryStateType.Loading */,
1402
1402
  progress: requestEvent.progress,
1403
1403
  partialText: 'partialText' in requestEvent ? requestEvent.partialText : undefined,
@@ -1420,7 +1420,7 @@ class Query {
1420
1420
  store: this._queryConfig.entity.store,
1421
1421
  });
1422
1422
  }
1423
- this._state$.next({
1423
+ this._updateState({
1424
1424
  type: "SUCCESS" /* QueryStateType.Success */,
1425
1425
  response: responseData,
1426
1426
  meta: { ...meta, expiresAt: expiresInTimestamp },
@@ -1429,7 +1429,7 @@ class Query {
1429
1429
  }
1430
1430
  case 'failure': {
1431
1431
  const { error } = requestEvent;
1432
- const failure = () => this._state$.next({ type: "FAILURE" /* QueryStateType.Failure */, error, meta });
1432
+ const failure = () => this._updateState({ type: "FAILURE" /* QueryStateType.Failure */, error, meta });
1433
1433
  const bearerAuthProvider = this._getBearerAuthProvider();
1434
1434
  if (!bearerAuthProvider ||
1435
1435
  options?._isUnauthorizedRetry ||
@@ -1446,7 +1446,7 @@ class Query {
1446
1446
  break;
1447
1447
  }
1448
1448
  case 'cancel': {
1449
- this._state$.next({
1449
+ this._updateState({
1450
1450
  type: "CANCELLED" /* QueryStateType.Cancelled */,
1451
1451
  meta,
1452
1452
  });
@@ -1463,6 +1463,10 @@ class Query {
1463
1463
  .get({ args: this._arguments, id, response: s.response, store: this._queryConfig.entity.store })
1464
1464
  .pipe(map((v) => ({ ...s, response: v })));
1465
1465
  }
1466
+ _updateState(s) {
1467
+ // We need to use untracked here to avoid Angular's "allowSignalWrites is false" error when executing queries inside Angular's computed/effect signal functions.
1468
+ untracked(() => this._state$.next(s));
1469
+ }
1466
1470
  /**
1467
1471
  * @internal
1468
1472
  */
@@ -1700,10 +1704,10 @@ class QueryShortNamePipe {
1700
1704
  console.log(route);
1701
1705
  return route;
1702
1706
  }
1703
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1704
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
1707
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1708
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
1705
1709
  }
1706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryShortNamePipe, decorators: [{
1710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryShortNamePipe, decorators: [{
1707
1711
  type: Pipe,
1708
1712
  args: [{ name: 'queryShortName', standalone: true }]
1709
1713
  }] });
@@ -1922,10 +1926,10 @@ class QueryDevtoolsComponent {
1922
1926
  clearQueryHistory() {
1923
1927
  this.queryHistory$.next([]);
1924
1928
  }
1925
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1926
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory$ | async; trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
1929
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1930
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory$ | async; trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
1927
1931
  }
1928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
1932
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
1929
1933
  type: Component,
1930
1934
  args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
1931
1935
  class: 'et-query-devtools',
@@ -2033,10 +2037,10 @@ class QueryDirective {
2033
2037
  this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
2034
2038
  }
2035
2039
  }
2036
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2037
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.10", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
2040
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2041
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
2038
2042
  }
2039
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: QueryDirective, decorators: [{
2043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: QueryDirective, decorators: [{
2040
2044
  type: Directive,
2041
2045
  args: [{
2042
2046
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -2365,10 +2369,10 @@ class InfinityQueryDirective {
2365
2369
  this._viewContext.currentQuery = null;
2366
2370
  this._data$.next([]);
2367
2371
  }
2368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2369
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.10", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1$1.DelayableDirective }], ngImport: i0 }); }
2372
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2373
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1$1.DelayableDirective }], ngImport: i0 }); }
2370
2374
  }
2371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: InfinityQueryDirective, decorators: [{
2375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: InfinityQueryDirective, decorators: [{
2372
2376
  type: Directive,
2373
2377
  args: [{
2374
2378
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -2421,10 +2425,10 @@ class InfinityQueryTriggerDirective {
2421
2425
  });
2422
2426
  this._observer.observe(this._elementRef.nativeElement);
2423
2427
  }
2424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2425
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.10", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
2428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2429
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
2426
2430
  }
2427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
2431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
2428
2432
  type: Directive,
2429
2433
  args: [{
2430
2434
  // eslint-disable-next-line @angular-eslint/directive-selector