@serve.zone/interfaces 31.5.0 → 31.7.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.
- package/changelog.md +68 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/backup.d.ts +13 -0
- package/dist_ts/data/clusternode.d.ts +49 -0
- package/dist_ts/data/clusternode.js +47 -1
- package/dist_ts/data/corestore.d.ts +27 -0
- package/dist_ts/data/corestore.js +11 -0
- package/dist_ts/data/index.d.ts +1 -0
- package/dist_ts/data/index.js +2 -1
- package/dist_ts/data/isolatedrestore.js +42 -2
- package/dist_ts/requests/backup.d.ts +223 -0
- package/dist_ts/requests/corestore.d.ts +57 -0
- package/dist_ts/requests/corestore.js +102 -1
- package/dist_ts/requests/node.d.ts +31 -0
- package/dist_ts/requests/platform.d.ts +30 -0
- package/dist_ts/runtime.corestore.d.ts +7 -10
- package/dist_ts/runtime.corestore.js +1 -1
- package/dist_ts/runtime.corestore.relay.d.ts +47 -0
- package/dist_ts/runtime.corestore.relay.js +57 -0
- package/dist_ts/runtime.d.ts +1 -0
- package/dist_ts/runtime.js +2 -1
- package/package.json +1 -1
- package/readme.md +112 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/backup.ts +14 -0
- package/ts/data/clusternode.ts +93 -0
- package/ts/data/corestore.ts +28 -0
- package/ts/data/index.ts +1 -0
- package/ts/data/isolatedrestore.ts +53 -1
- package/ts/requests/backup.ts +253 -0
- package/ts/requests/corestore.ts +183 -0
- package/ts/requests/node.ts +35 -0
- package/ts/requests/platform.ts +36 -0
- package/ts/runtime.corestore.relay.ts +111 -0
- package/ts/runtime.corestore.ts +7 -8
- package/ts/runtime.ts +1 -0
package/dist_ts/runtime.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from './runtime.workloadinit.js';
|
|
|
7
7
|
export * from './runtime.networkprojection.js';
|
|
8
8
|
export * from './runtime.corestore.js';
|
|
9
9
|
export * from './runtime.corestore.databaseexportpackage.js';
|
|
10
|
+
export * from './runtime.corestore.relay.js';
|
|
10
11
|
export * from './runtime.cloudlylegacydeploymentsettlement.js';
|
|
11
12
|
export * from './runtime.cloudlylegacydeploymentsettlement.offlineexport.js';
|
|
12
13
|
/**
|
|
@@ -903,4 +904,4 @@ export const validateSecretDeploymentReportRequest = async (requestArg, expected
|
|
|
903
904
|
return ['secret deployment report request must be safely inspectable'];
|
|
904
905
|
}
|
|
905
906
|
};
|
|
906
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFjeEMsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQywrQ0FBK0MsRUFDL0MscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFNMUQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyw4Q0FBOEMsR0FDL0MsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw4REFBOEQsQ0FBQztBQW1DN0U7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEtBQUssRUFDckQsV0FBb0IsRUFDcEIsV0FBdUMsRUFDckIsRUFBRTtJQUNwQixJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hHLE1BQU0sUUFBUSxHQUFHLFdBQXFELENBQUM7SUFDdkUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2xFLFNBQVM7UUFDVCxVQUFVO1FBQ1YsZUFBZTtLQUNoQixDQUFDLEVBQUUsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztXQUMzRCxDQUFDLE1BQU0sa0NBQWtDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsS0FBSyxXQUFXLENBQUMsY0FBYztXQUM5RCxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsU0FBUztXQUNyRCxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsU0FBUztXQUNyRCxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsS0FBSyxXQUFXLENBQUMsY0FBYztXQUMvRCxRQUFRLENBQUMsUUFBUSxDQUFDLHNCQUFzQixLQUFLLFdBQVcsQ0FBQyxzQkFBc0I7V0FDL0UsUUFBUSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsS0FBSyxXQUFXLENBQUMsb0JBQW9CO1dBQzNFLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxLQUFLLFdBQVcsQ0FBQyxlQUFlO1dBQ2pFLFFBQVEsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEtBQUssV0FBVyxDQUFDLHVCQUF1QjtXQUNqRixRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsVUFBVTtXQUMvQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxHQUFHO1dBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1NBQ2pELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUMzQyxJQUFJLEVBQUUsQ0FBQztJQUNWLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0RixJQUFJLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLE1BQU07V0FDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQzdFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUNuRixRQUFRLENBQUMsZUFBZTtRQUN4QixRQUFRO0tBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDSixLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxlQUFlLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25HLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvRCxVQUFVO1lBQ1YsaUJBQWlCO1NBQ2xCLENBQUMsRUFBRSxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBK0MsQ0FBQztRQUNwRCxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxXQUFXLENBQUMsc0JBQXNCO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakYsTUFBTSxPQUFPLEdBQUcsMkNBQTJDLENBQUM7WUFDMUQsY0FBYyxFQUFFLFdBQVcsQ0FBQyxzQkFBc0I7WUFDbEQsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYztZQUNoRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ3RDLFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDdEMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYztZQUNoRCxzQkFBc0IsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLHNCQUFzQjtZQUNoRSxvQkFBb0IsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQjtZQUM1RCxlQUFlLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlO1lBQ2xELHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsdUJBQXVCO1lBQ2xFLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUN4QyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7WUFDaEMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxlQUFlO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUMxRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFzRUYsTUFBTSx3QkFBd0IsR0FBRyxxQ0FBcUMsQ0FBQztBQUN2RSxNQUFNLHVCQUF1QixHQUFHLHVDQUF1QyxDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLDZDQUE2QyxHQUFHLENBQzNELFVBQW1CLEVBQ1QsRUFBRTtJQUNaLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMvRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBcUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pFLG9CQUFvQjtRQUNwQixVQUFVO1FBQ1YsbUJBQW1CO1FBQ25CLHdCQUF3QjtLQUN6QixDQUFDLEVBQUUsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVE7V0FDeEQsT0FBUSxPQUFPLENBQUMsUUFBb0MsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixLQUFLLFFBQVE7V0FDakQsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELElBQUksT0FBTyxPQUFPLENBQUMsaUJBQWlCLEtBQUssUUFBUTtXQUM1QyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMscUVBQXFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1dBQy9DLE9BQU8sQ0FBQyxrQkFBNkIsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLEtBQUssRUFDN0QsWUFBcUIsRUFDRixFQUFFO0lBQ3JCLElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNyRixPQUFPLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsWUFBdUMsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ25FLFdBQVc7UUFDWCxjQUFjO1FBQ2QsVUFBVTtRQUNWLFdBQVc7UUFDWCxZQUFZO1FBQ1osV0FBVztRQUNYLGdCQUFnQjtRQUNoQixlQUFlO0tBQ2hCLENBQUMsRUFBRSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBVSxFQUFFLENBQUM7UUFDN0UsSUFBSSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRO2VBQ25DLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsYUFBYSxLQUFLLENBQUM7UUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDL0YsSUFBSSxPQUFPLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUTtXQUN0QyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxNQUFNLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSyxTQUFTLENBQUMsVUFBcUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4RixNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSyxTQUFTLENBQUMsU0FBb0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RixNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksUUFBMkQsQ0FBQztJQUNoRSxJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLCtDQUErQyxDQUFDO2dCQUM5RCxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQXNCO2dCQUM5QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQW1CO2dCQUN4QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQXdCO2dCQUNsRCxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQW1CO2dCQUN4QyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQW9CO2dCQUMxQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQW1CO2FBQ3pDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0RBQWdELEdBQUcsQ0FDOUQsVUFBbUIsRUFDVCxFQUFFO0lBQ1osSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxVQUFxQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakUsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixVQUFVO1FBQ1YsVUFBVTtLQUNYLENBQUMsRUFBRSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUTtXQUN4RCxPQUFRLE9BQU8sQ0FBQyxRQUFvQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFFBQVE7V0FDdkMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7V0FDL0MsT0FBTyxDQUFDLGtCQUE2QixHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMscUVBQXFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLENBQUM7QUFFM0MsTUFBTSxzQkFBc0IsR0FBRyxxQ0FBcUMsQ0FBQztBQUNyRSxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDO0FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQThCO0lBQzVELGFBQWE7SUFDYixhQUFhO0NBQ2QsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFakMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFpQixFQUF1QyxFQUFFLENBQUMsQ0FDbEYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQzlFLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQzFCLFFBQWlDLEVBQ2pDLE9BQWlCLEVBQ1IsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFFbkcsTUFBTSxrQkFBa0IsR0FBRyxDQUN6QixRQUFpQyxFQUNqQyxPQUFpQixFQUNSLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFpQixFQUFzQixFQUFFLENBQUMsQ0FDckUsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDdEUsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFpQixFQUFzQixFQUFFLENBQUMsQ0FDdkUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSyxRQUFtQixHQUFHLENBQUMsQ0FDM0QsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUFFLFFBQWdCLEVBQTBCLEVBQUU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ2pFLFNBQVMsRUFDVCxLQUFLLENBQUMsTUFBcUIsQ0FDNUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDekIsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFtQixDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUNyQyxRQUFvQixFQUNJLEVBQUU7SUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ2pFLFNBQVMsRUFDVCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDekIsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFtQixDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQWNGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzdDLFdBQW9CLEVBQ1osRUFBRTtJQUNWLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3BCLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtRQUNyQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87UUFDekIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO1FBQ3ZDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7UUFDL0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1FBQ3JCLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtRQUMvQixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7UUFDakIsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO0tBQ3RDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFDOUMsV0FBb0IsRUFDSSxFQUFFLENBQUMsb0JBQW9CLENBQUMsK0JBQStCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxLQUFLLEVBQ3BELFVBQXNCLEVBQ0UsRUFBRTtJQUMxQixJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8seUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsQ0FDcEQsVUFBbUIsRUFDVCxFQUFFO0lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7V0FDM0IsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDbEMsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixxQkFBcUI7WUFDckIsZ0JBQWdCO1lBQ2hCLHNCQUFzQjtTQUN2QixDQUFDLEVBQUUsQ0FBQztRQUNMLE9BQU8sQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxVQUFVLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7V0FDOUMsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsSUFBSSxPQUFPLFVBQVUsQ0FBQyxjQUFjLEtBQUssUUFBUTtXQUM1QyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1dBQzFDLE9BQU8sVUFBVSxDQUFDLG9CQUFvQixLQUFLLFFBQVE7V0FDbkQsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEtBQUssRUFDdkQsWUFBNEMsRUFDNUMsV0FBb0IsRUFDcEIsaUJBQTZCLEVBQ2UsRUFBRTtJQUM5QyxJQUFJLCtCQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1dBQ3ZELFlBQVksQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsY0FBYztXQUN0RCxDQUFDLE1BQU0sMkJBQTJCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE9BQU87UUFDTCxhQUFhLEVBQUUsQ0FBQztRQUNoQixjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7UUFDM0MsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLFVBQVU7UUFDNUMsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUMsUUFBUSxDQUFDO1FBQzNELG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUMsaUJBQWlCLENBQUM7S0FDakYsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEtBQUssRUFDdkQsVUFBbUIsRUFDbkIsV0FBb0IsRUFDcEIsaUJBQTZCLEVBQ1gsRUFBRTtJQUNwQixJQUFJLENBQUM7UUFDSCxJQUFJLHNDQUFzQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEYsTUFBTSxPQUFPLEdBQUcsVUFBK0MsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sUUFBUSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsY0FBYztlQUNwRCxNQUFNLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztlQUM5RCxPQUFPLENBQUMsY0FBYyxLQUFLLE1BQU0sMkJBQTJCLENBQUMsUUFBUSxDQUFDO2VBQ3RFLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxNQUFNLGlDQUFpQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsQ0FBQztBQTJCRixNQUFNLENBQUMsTUFBTSxnREFBZ0QsR0FBRyxDQUM5RCxVQUFtQixFQUNULEVBQUU7SUFDWixJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztlQUMzQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2VBQzlDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7ZUFDckMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7ZUFDbEQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRO2VBQzNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsNEVBQTRFLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ3BELFFBQWlCLEVBQ1AsRUFBRTtJQUNaLElBQUksQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2VBQ3pCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkYsT0FBTyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUF3QyxDQUFDO1lBQ3JFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDLCtFQUErRSxDQUFDLENBQUM7WUFDL0YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7SUFDMUUsQ0FBQztBQUNILENBQUMsQ0FBQztBQW9CRiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQ2pELG1DQUE0QyxDQUFDO0FBNkIvQyxNQUFNLENBQUMsTUFBTSw4REFBOEQsR0FBRyxDQUM1RSxVQUFtQixFQUNULEVBQUU7SUFDWixJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztlQUMzQixDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2VBQzlDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7ZUFDckMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7ZUFDbEQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRO2VBQzNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7SUFDeEYsQ0FBQztBQUNILENBQUMsQ0FBQztBQWlCRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLE9BQTJDLEVBQzNDLFFBQTRDLEVBQ3BDLEVBQUU7SUFDVixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDMUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDL0MsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDakQsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDM0MsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDckMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUM7S0FDdEMsRUFBRSxDQUFDO1FBQ0YsSUFBSSxJQUFJLEdBQUcsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsU0FBNkMsRUFDVCxFQUFFLENBQUMsQ0FBQztJQUN4QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7SUFDdEMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxjQUFjO0lBQ3hDLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztJQUNsQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7SUFDNUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO0NBQzdCLENBQUMsQ0FBQztBQUVILE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsWUFBNEMsRUFDWixFQUFFLENBQUMsQ0FBQztJQUNwQyxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7SUFDekMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjO0lBQzNDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztJQUNqQyxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7SUFDbkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO0lBQ3JDLGNBQWMsRUFBRSxZQUFZLENBQUMsY0FBYztDQUM1QyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw2REFBNkQsR0FBRyxDQUMzRSxjQUErRCxFQUN2RCxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixhQUFhLEVBQUUsQ0FBQztJQUNoQixPQUFPLEVBQUUsZ0RBQWdEO0lBQ3pELGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxpQkFBaUI7SUFDbkQsZUFBZSxFQUFFO1FBQ2YsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0I7UUFDakUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxlQUFlLENBQUMsY0FBYztRQUM3RCxVQUFVLEVBQUUsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVO1FBQ3JELGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxDQUFDLGVBQWU7S0FDaEU7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCO1FBQ3ZFLG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUI7UUFDN0UsY0FBYyxFQUFFLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO0tBQ3BFO0lBQ0QsZUFBZSxFQUFFLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7Q0FDMUUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seURBQXlELEdBQUcsS0FBSyxFQUM1RSxjQUErRCxFQUN2QyxFQUFFLENBQUMsb0JBQW9CLENBQy9DLDZEQUE2RCxDQUFDLGNBQWMsQ0FBQyxDQUM5RSxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixVQUFtQixFQUNuQixPQUFlLEVBQ0wsRUFBRTtJQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztXQUN6QixVQUFVLENBQUMsTUFBTSxLQUFLLENBQUM7V0FDdkIsVUFBVSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sb0NBQW9DLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksUUFBd0QsQ0FBQztJQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNwQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7ZUFDMUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pDLGVBQWU7Z0JBQ2YsZ0JBQWdCO2dCQUNoQixhQUFhO2dCQUNiLFVBQVU7Z0JBQ1YsVUFBVTthQUNYLENBQUMsRUFBRSxDQUFDO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxLQUFLLDZCQUE2QixDQUFDLENBQUM7WUFDOUQsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztlQUM1QyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7ZUFDOUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO2VBQzNDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxLQUFLLG1DQUFtQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQXVDLENBQUMsRUFBRSxDQUFDO1lBQzdFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7ZUFDM0MsbUJBQW1CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztlQUM3QyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO2VBQzFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7ZUFDdkMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUF1QyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLE1BQU0sR0FBRyxTQUEwRCxDQUFDO1lBQzFFLElBQUksUUFBUSxJQUFJLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sOENBQThDLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixNQUFNLGNBQWMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sZ0NBQWdDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLHFDQUFxQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLDJCQUEyQixDQUFDLENBQUM7WUFDdkYsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxZQUE0QyxFQUFVLEVBQUUsQ0FBQyxDQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQ3ZELENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvREFBb0QsR0FBRyxLQUFLLEVBQ3ZFLGNBQXVCLEVBQ3ZCLGFBQXFCLEVBQ0YsRUFBRTtJQUNyQixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7ZUFDL0IsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RDLG9CQUFvQjtnQkFDcEIsbUJBQW1CO2dCQUNuQixtQkFBbUI7Z0JBQ25CLGlCQUFpQjtnQkFDakIsdUJBQXVCO2dCQUN2QixpQkFBaUI7YUFDbEIsQ0FBQyxFQUFFLENBQUM7WUFDTCxPQUFPLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsSUFBSSxjQUFjLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELE1BQU0scUJBQXFCLEdBQUcsTUFBTSwrQkFBK0IsQ0FDakUsY0FBYyxDQUFDLGVBQWUsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUkscUJBQXFCLENBQUMsTUFBTSxLQUFLLENBQUM7ZUFDakMsQ0FBQyw4QkFBOEIsQ0FDaEMsY0FBYyxDQUFDLGVBQWtELEVBQ2pFLGFBQWEsQ0FDZCxFQUFFLENBQUM7WUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7ZUFDOUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUNuQyxjQUFjLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFDdEMsa0JBQWtCLENBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSwyQ0FBMkMsQ0FDOUQsY0FBYyxDQUFDLHFCQUFxQixDQUNyQyxDQUFDLENBQUM7UUFDSCxNQUFNLHVCQUF1QixHQUFHLCtCQUErQixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQ2pDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7ZUFDaEQsY0FBYyxDQUFDLGVBQWUsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7ZUFDcEQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7ZUFDOUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztlQUN0RSxlQUFlLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztlQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUMvQixjQUFjLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQzNFLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNoRSxDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQzFFLENBQUMsRUFBRSxDQUFDO2dCQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMseUVBQXlFLENBQUMsQ0FBQztZQUN6RixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksT0FBTyxjQUFjLENBQUMsaUJBQWlCLEtBQUssUUFBUTtlQUNuRCxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7ZUFDekIsY0FBYyxDQUFDLGlCQUFpQjtvQkFDN0IsTUFBTSx5REFBeUQsQ0FDakUsY0FBNEUsQ0FDN0UsRUFBRSxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLEtBQUssRUFDNUQsZUFBd0IsRUFDeEIsY0FBdUIsRUFDdkIsYUFBcUIsRUFDRixFQUFFO0lBQ3JCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sb0RBQW9ELENBQ3ZFLGNBQWMsRUFDZCxhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDekUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7ZUFDaEMsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUU7Z0JBQ3ZDLHFCQUFxQjtnQkFDckIsbUJBQW1CO2dCQUNuQixtQkFBbUI7Z0JBQ25CLGNBQWM7Z0JBQ2Qsa0JBQWtCO2dCQUNsQixpQkFBaUI7Z0JBQ2pCLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxjQUFjO2dCQUNkLGlCQUFpQjtnQkFDakIsdUJBQXVCO2dCQUN2Qiw4QkFBOEI7YUFDL0IsQ0FBQyxFQUFFLENBQUM7WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDckUsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLG1CQUFtQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsaUJBQWlCLEtBQUssY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDcEUsQ0FBQzthQUFNLElBQUksZUFBZSxDQUFDLGlCQUFpQixLQUFLLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xGLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FDckQsZUFBZSxDQUFDLE9BQU8sRUFDdkIsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztRQUN6QyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsZUFBNkQsQ0FBQztRQUNyRyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsS0FBSyxlQUFlLENBQUMsVUFBVTtlQUM5RCxlQUFlLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6RSxNQUFNLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELElBQUksT0FBTyxlQUFlLENBQUMsNEJBQTRCLEtBQUssUUFBUTtlQUMvRCxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsTUFBTSwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckcsTUFBTSx1QkFBdUIsR0FBRywrQkFBK0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEcsSUFBSSwyQkFBMkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUNyQyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO2VBQ2pELGVBQWUsQ0FBQyxlQUFlLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsTUFBTSwyQkFBMkIsR0FBRyw4Q0FBOEMsQ0FDaEYsZUFBZSxDQUFDLHFCQUFxQixDQUN0QyxDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLDJCQUEyQixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO2VBQzdDLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtnQkFDbkQsaUNBQWlDO2dCQUNqQywyQkFBMkI7Z0JBQzNCLHVCQUF1QjtnQkFDdkIsNkJBQTZCO2dCQUM3QixrQ0FBa0M7Z0JBQ2xDLGdDQUFnQztnQkFDaEMsK0JBQStCO2FBQ2hDLENBQUM7ZUFDQyxlQUFlLENBQUMsWUFBWSxDQUFDLCtCQUErQixLQUFLLENBQUM7ZUFDbEUsZUFBZSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsS0FBSyxDQUFDO2VBQ3hELGVBQWUsQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEtBQUssQ0FBQztlQUM5RCxlQUFlLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxLQUFLLENBQUM7ZUFDbkUsZUFBZSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsS0FBSyxDQUFDO2VBQ2pFLGVBQWUsQ0FBQyxZQUFZLENBQUMsNkJBQTZCLEtBQUssQ0FBQztlQUNoRSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMseUJBQXlCLEtBQUssU0FBUzttQkFDbkUsZUFBZSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0VBQXdFLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztlQUMzQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO2VBQ3pDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxlQUFlLEdBQXlDLEVBQUUsQ0FBQztZQUNqRSxNQUFNLGlCQUFpQixHQUFzQyxFQUFFLENBQUM7WUFDaEUsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7dUJBQzVCLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFO3dCQUNuQyxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixVQUFVO3dCQUNWLFVBQVU7d0JBQ1Ysb0NBQW9DO3dCQUNwQyw4QkFBOEI7cUJBQy9CLENBQUMsRUFBRSxDQUFDO29CQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEtBQUssNkJBQTZCLENBQUMsQ0FBQztvQkFDL0UsU0FBUztnQkFDWCxDQUFDO2dCQUNELGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLGFBQWEsRUFBRSxXQUFXLENBQUMsYUFBdUI7b0JBQ2xELGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBd0I7b0JBQ3BELFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBcUI7b0JBQzlDLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBa0I7b0JBQ3hDLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBdUM7aUJBQzlELENBQUMsQ0FBQztnQkFDSCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBdUM7b0JBQzdELGtDQUFrQyxFQUNoQyxXQUFXLENBQUMsa0NBQW1EO29CQUNqRSw0QkFBNEIsRUFBRSxXQUFXLENBQUMsNEJBQTZDO2lCQUN4RixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxPQUFPLFdBQVcsQ0FBQyxrQ0FBa0MsS0FBSyxRQUFRO3VCQUNqRSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsa0NBQWtDLENBQUM7dUJBQy9ELE9BQU8sV0FBVyxDQUFDLDRCQUE0QixLQUFLLFFBQVE7dUJBQzVELENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUM7b0JBQy9ELE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEtBQUssNkJBQTZCLENBQUMsQ0FBQztnQkFDakYsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsZUFBZSxFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztZQUMzRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsTUFBTSxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUcvQixDQUFFLGNBQWMsQ0FBQyxxQkFBMkU7aUJBQzNGLFFBQVEsQ0FBQyxTQUFTLENBQUM7aUJBQ25CLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsZ0JBQWdCO3VCQUNoQixnQkFBZ0IsQ0FBQyxrQ0FBa0M7NEJBQ2hELFdBQVcsQ0FBQyxrQ0FBa0M7dUJBQ2pELGdCQUFnQixDQUFDLDRCQUE0Qjs0QkFDMUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEtBQUssd0NBQXdDLENBQUMsQ0FBQztnQkFDNUYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMscUJBQ0wsQ0FBQztRQUN6QyxJQUFJLGVBQWUsQ0FBQyw0QkFBNEI7Z0JBQzFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDO2VBQ3JELENBQ0QsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQjtvQkFDaEQscUJBQXFCLENBQUMsZ0JBQWdCO21CQUN6QyxlQUFlLENBQUMscUJBQXFCLENBQUMsbUJBQW1CO3dCQUN0RCxxQkFBcUIsQ0FBQyxtQkFBbUI7bUJBQzVDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO3dCQUNqRCxxQkFBcUIsQ0FBQyxjQUFjLENBQzNDLEVBQUUsQ0FBQztZQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSwyQkFBMkIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sS0FBSyxDQUFDO2VBQy9FLDBCQUEwQixDQUMzQixlQUFlLENBQUMsZUFBNEQsQ0FDN0UsS0FBSywwQkFBMEIsQ0FDOUIsY0FBYyxDQUFDLGVBQTRELENBQzVFLEVBQUUsQ0FBQztZQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7QUFDSCxDQUFDLENBQUM7QUFnRUYsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxZQUE4QyxFQUNaLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtJQUNuQyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7SUFDM0MsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTO0lBQ2pDLGNBQWMsRUFBRSxZQUFZLENBQUMsY0FBYztJQUMzQyxzQkFBc0IsRUFBRSxZQUFZLENBQUMsc0JBQXNCO0lBQzNELG9CQUFvQixFQUFFLFlBQVksQ0FBQyxvQkFBb0I7SUFDdkQsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQjtJQUMvQyxlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWU7SUFDN0MsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLHVCQUF1QjtDQUM5RCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxDQUNyRCxTQUE2RSxFQUNyRSxFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQUc7UUFDYixhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7UUFDdEMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLGlCQUFpQjtRQUM5QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWM7UUFDeEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1FBQzlCLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0I7UUFDcEQsZUFBZSxFQUFFLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDdEUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0tBQ3pCLENBQUM7SUFDRixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEdBQUcsTUFBTTtZQUNULGVBQWUsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO1lBQ3RFLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixHQUFHLE1BQU07WUFDVCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtnQkFDNUIsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQzlFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDbEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEdBQUcsTUFBTTtZQUNULFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxLQUFLLEVBQ3RELFNBQTZFLEVBQ3JELEVBQUUsQ0FBQyxvQkFBb0IsQ0FDL0MsdUNBQXVDLENBQUMsU0FBUyxDQUFDLENBQ25ELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxLQUFLLEVBQ3JELFNBQWtCLEVBQ0EsRUFBRTtJQUNwQixJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztlQUMxQixPQUFPLFNBQVMsQ0FBQyxZQUFZLEtBQUssUUFBUTtlQUMxQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxZQUFZLEtBQUssTUFBTSxtQ0FBbUMsQ0FDekUsU0FBaUQsQ0FDbEQsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxLQUFLLEVBQ3hELFVBQW1CLEVBQ25CLG9CQUE0QixFQUM1Qiw0QkFBb0MsRUFDakIsRUFBRTtJQUNyQixJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQUc7WUFDakIsVUFBVTtZQUNWLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxzQkFBc0I7WUFDdEIsaUJBQWlCO1lBQ2pCLFFBQVE7WUFDUixZQUFZO1lBQ1osY0FBYztTQUNmLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLEtBQUssU0FBUztZQUN2QyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztZQUNwQyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLGdCQUFnQixLQUFLLFNBQVM7d0JBQzVFLENBQUMsQ0FBQyxFQUFFO3dCQUNKLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRO29CQUNuQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxhQUFhLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFnQixDQUFDO2VBQ3ZFLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7ZUFDcEMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7ZUFDbEQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRO2VBQzNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7ZUFDakQsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDNUUsQ0FBQzthQUFNLElBQUksVUFBVSxDQUFDLGlCQUFpQixLQUFLLDRCQUE0QixFQUFFLENBQUM7WUFDekUsTUFBTSxDQUFDLElBQUksQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztlQUNoRCxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztlQUN2RCxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsdUZBQXVGLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHVDQUF1QyxDQUNwRCxVQUFVLENBQUMsZUFBZSxFQUMxQixvQkFBb0IsQ0FDckIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHVDQUF1QyxDQUNwRCxVQUFVLENBQUMsZUFBZSxFQUMxQixvQkFBb0IsQ0FDckIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLHFDQUFxQyxDQUN4QyxVQUFVLENBQUMsZUFBbUQsRUFDOUQsVUFBVSxDQUFDLGVBQW1ELENBQy9ELEVBQUUsQ0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7WUFDbEYsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyx1Q0FBdUMsQ0FDcEQsVUFBVSxDQUFDLGdCQUFnQixFQUMzQixvQkFBb0IsQ0FDckIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUM7ZUFDNUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxXQUFXLEtBQUssUUFBUTttQkFDekMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5RCxNQUFNLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFFBQVE7ZUFDMUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztlQUN4QyxDQUFDLE1BQU0sa0NBQWtDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUN6RSxDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0=
|
|
907
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFjeEMsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQywrQ0FBK0MsRUFDL0MscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFNMUQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyw4Q0FBOEMsR0FDL0MsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhEQUE4RCxDQUFDO0FBbUM3RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsS0FBSyxFQUNyRCxXQUFvQixFQUNwQixXQUF1QyxFQUNyQixFQUFFO0lBQ3BCLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDaEcsTUFBTSxRQUFRLEdBQUcsV0FBcUQsQ0FBQztJQUN2RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJ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
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -1118,6 +1118,8 @@ answers with the block Cloudly published, and `disableClusterRelayV1` removes it
|
|
|
1118
1118
|
an explicit `relay: null`. The caller names only the cluster: Cloudly derives the origin itself
|
|
1119
1119
|
from that cluster and its own public hostname, and refuses the request when no DNS zone it
|
|
1120
1120
|
manages matches the derived name, so a relay name that nothing can publish is never written.
|
|
1121
|
+
Both requests push the cluster configuration to the connected relay afterwards, so a relay learns
|
|
1122
|
+
the change without reconnecting.
|
|
1121
1123
|
|
|
1122
1124
|
Once its socket is authenticated with `registerCloudlyClientSessionV1`, the relay sends
|
|
1123
1125
|
`registerClusterRelayV1` carrying `IClusterRelayRegistrationV1`: the relay build, the cluster node
|
|
@@ -1169,6 +1171,9 @@ const registration: data.IClusterRelayRegistrationV1 = {
|
|
|
1169
1171
|
const registrationReasons = data.validateClusterRelayRegistrationV1(registration); // []
|
|
1170
1172
|
```
|
|
1171
1173
|
|
|
1174
|
+
How the relay reaches each node's Corestore is part of the same document: see
|
|
1175
|
+
[Corestore Through The Relay](#corestore-through-the-relay).
|
|
1176
|
+
|
|
1172
1177
|
### Cluster Ingress
|
|
1173
1178
|
|
|
1174
1179
|
A cluster's ingress terminates TLS for the hostnames its services publish and forwards to the
|
|
@@ -1735,6 +1740,113 @@ bytes and digests exactly.
|
|
|
1735
1740
|
payload, one-byte-larger framed snapshot-original, 128 MiB verified closure
|
|
1736
1741
|
plaintext, and 256 MiB closure boundaries used by Corestore.
|
|
1737
1742
|
|
|
1743
|
+
### Corestore Through The Relay
|
|
1744
|
+
|
|
1745
|
+
A serve.zone cluster is outbound-only and Corestore is node-local, so Cloudly never reaches a
|
|
1746
|
+
Corestore itself: every Cloudly-owned operation against one travels through the cluster relay, and
|
|
1747
|
+
the relay is told which node it means. These contracts carry no version suffix and no schema
|
|
1748
|
+
field: the protocol version is the installed `@serve.zone/interfaces` version.
|
|
1749
|
+
|
|
1750
|
+
**The node is a field, never a connection.** One relay serves every node of its cluster, so the
|
|
1751
|
+
connection that answers proves the cluster and nothing more. `backupClusterService`,
|
|
1752
|
+
`restoreClusterService`, `pruneClusterNodeArchive` and `getClusterCorestoreInventory` each name
|
|
1753
|
+
`nodeId`, and they supersede `executeServiceBackup`, `executeServiceRestore`,
|
|
1754
|
+
`coreflowPruneNodeArchive` and `coreflowGetCorestoreInventory`, which were dispatched at whichever
|
|
1755
|
+
coreflow had tagged itself with a node hostname. The superseded four stay declared until the
|
|
1756
|
+
coordinated major so a mixed fleet keeps compiling; nothing new should use them.
|
|
1757
|
+
|
|
1758
|
+
`IClusterCorestoreInventory { nodeId, checkedAt, reachable, errorCode?, services }` is what one
|
|
1759
|
+
node's Corestore holds, and `validateClusterCorestoreInventory(value, path?)` returns one named
|
|
1760
|
+
reason per violation. A reachable inventory with an empty `services` list is the proof that a
|
|
1761
|
+
namespace is blank — the answer a greenfield cluster gives. An unreachable node proves nothing, so
|
|
1762
|
+
`reachable: false` is refused without an `errorCode` and refused with any service, and a reachable
|
|
1763
|
+
answer is refused with one: the two states can never be read as each other.
|
|
1764
|
+
|
|
1765
|
+
| Method | Direction | Body |
|
|
1766
|
+
| --- | --- | --- |
|
|
1767
|
+
| `backupClusterService` | Cloudly → relay | `{ nodeId, backupId, service, tags?, replication? }` → `{ snapshots, replication? }` |
|
|
1768
|
+
| `restoreClusterService` | Cloudly → relay | `{ nodeId, backupId, service, snapshots, clear?, resourceTypes?, replication? }` → `{ restored }` |
|
|
1769
|
+
| `pruneClusterNodeArchive` | Cloudly → relay | `{ nodeId, retention, dryRun? }` → `{ found, result? }` |
|
|
1770
|
+
| `getClusterCorestoreInventory` | Cloudly → relay | `{ nodeId }` → `{ inventory }` |
|
|
1771
|
+
| `getClusterPlatformDesiredState` | relay → Cloudly | `{}` → `{ capabilities, providerConfigs, bindings }` |
|
|
1772
|
+
| `backupServiceDatabaseClosure` | relay → Cloudly | `{ backupId, serviceId, nodeId, descriptor, closure }` → `{ accepted }` |
|
|
1773
|
+
| `restoreServiceDatabaseClosure` | relay → Cloudly | `{ backupId, serviceId, nodeId }` → `{ descriptor, closure }` |
|
|
1774
|
+
| `stageIsolatedRestoreArchive` | Cloudly → relay | `{ restoreGrant, clusterId, targetNodeName, restoreId, expectedRevision, object, archive }` → `{ state }` |
|
|
1775
|
+
|
|
1776
|
+
**Placement is a field too.** `getClusterPlatformDesiredState` answers with
|
|
1777
|
+
`IClusterPlatformBindingPlacement { nodeId, binding }` rather than a bare binding list: a database
|
|
1778
|
+
binding without a node is a database nobody can place once one relay serves the whole cluster.
|
|
1779
|
+
Cloudly derives the placement from where the service is assigned; the relay never guesses it.
|
|
1780
|
+
|
|
1781
|
+
**Closures stream; they are never base64.** A database backup larger than the portable handoff
|
|
1782
|
+
envelope moves as a Corestore closure, and the bytes travel as a directional VirtualStream on the
|
|
1783
|
+
relay's own session, exactly like `pushImageVersion` and `pullImageVersion`. Neither method
|
|
1784
|
+
carries an identity: the cluster is the one the verified machine identity on that session names,
|
|
1785
|
+
and a request-level identity would be a second, weaker authority for the same fact. The relay is
|
|
1786
|
+
the requesting peer in both directions, because only outbound requests exist:
|
|
1787
|
+
`backupServiceDatabaseClosure` sends (`TVirtualStream<'send'>` in its request) and
|
|
1788
|
+
`restoreServiceDatabaseClosure` receives (`TVirtualStream<'receive'>` in its response). `accepted`
|
|
1789
|
+
permits sending and never confirms storage; the stream's acceptance receipt does. The base64
|
|
1790
|
+
`uploadBackupArchiveObject` and `downloadBackupArchiveObject` contracts are retiring with this
|
|
1791
|
+
path — Corestore already documents its repository-wide archive object routes as legacy — and are
|
|
1792
|
+
removed in the coordinated major.
|
|
1793
|
+
|
|
1794
|
+
`ICorestoreDatabaseClosureDescriptor { size, sha256, receipt }` from the Node-only `/runtime`
|
|
1795
|
+
export travels in the parent request, and `validateCorestoreDatabaseClosureDescriptor(value,
|
|
1796
|
+
path?)` refuses it by name. **`size` is mandatory, and it is why the descriptor exists**:
|
|
1797
|
+
Corestore's database backup restore requires one exact `Content-Length`, identity transfer
|
|
1798
|
+
encoding and no content encoding, and refuses a body whose byte length differs from its receipt, so
|
|
1799
|
+
the receiver must open its Corestore request before the first byte arrives. A stream that only
|
|
1800
|
+
learned its length at EOF could never be restored. `size` and `sha256` are cross-checked against
|
|
1801
|
+
`receipt.closure.archiveBytes` and `receipt.closure.sha256`, so a descriptor can never describe a
|
|
1802
|
+
closure its own receipt contradicts.
|
|
1803
|
+
|
|
1804
|
+
**Isolated restore carries its grant.** Corestore accepts exactly one authority on
|
|
1805
|
+
`/isolated-restore/*`: a compact RS256 grant that names one operation, expires within minutes and
|
|
1806
|
+
binds the cluster, the node, the canonical resource mappings and the archive manifest. So
|
|
1807
|
+
`coreflowPrepareIsolatedRestore`, `coreflowExecuteIsolatedRestore`,
|
|
1808
|
+
`coreflowGetIsolatedRestoreStatus`, `coreflowCleanupIsolatedRestore` and
|
|
1809
|
+
`stageIsolatedRestoreArchive` each carry `restoreGrant`, which the relay forwards untouched and can
|
|
1810
|
+
neither widen nor mint. Each is sensitive ephemeral input: exclude the complete request from hooks,
|
|
1811
|
+
logs and journals on every hop. Staging is one archive object per call — the manifest entry is the
|
|
1812
|
+
descriptor — because Corestore writes staged objects one bounded chunk at a time under a
|
|
1813
|
+
`write-object` grant, and turning a stream into those chunks is the relay's work.
|
|
1814
|
+
|
|
1815
|
+
`IIsolatedRestoreDatabaseMapping.target.databaseAllocation` carries Corestore's safe allocation
|
|
1816
|
+
reference, present exactly when the target database is allocation-managed. It lives inside the
|
|
1817
|
+
mapping rather than beside it because the canonical mapping digest is what a grant binds: an
|
|
1818
|
+
allocation reference outside it would be authority nobody signed. This is what an allocated
|
|
1819
|
+
isolated restore was missing — Corestore refuses one whose exact reference its authority never
|
|
1820
|
+
covered. The reference itself is declared once, as `data.ICorestoreDatabaseAllocationReference`,
|
|
1821
|
+
and re-exported from `/runtime` so both trees name one structure.
|
|
1822
|
+
|
|
1823
|
+
**The endpoint comes from the cluster document.** `IClusterNode.data.corestore { endpoint }` is
|
|
1824
|
+
where one node's Corestore control API answers, owned by Cloudly and read by the relay, stored in
|
|
1825
|
+
Cloudly's database like every other field of the cluster document — never an alias, a file or a
|
|
1826
|
+
relay environment variable. `validateClusterNodeCorestore(value, path?)` admits a canonical `http:`
|
|
1827
|
+
or `https:` origin with no userinfo, path, query, fragment or trailing slash. `http:` is admitted
|
|
1828
|
+
because Corestore terminates no TLS today and the hop is cluster-private by construction; `https:`
|
|
1829
|
+
is admitted so putting TLS in front of Corestore needs no contract change. Absent means the node
|
|
1830
|
+
runs no Corestore the relay may reach, which an inventory reports as
|
|
1831
|
+
`errorCode: 'CORESTORE_ENDPOINT_UNKNOWN'` rather than guessing a hostname.
|
|
1832
|
+
|
|
1833
|
+
An administrator sets it with `setClusterNodeCorestoreEndpoint { identity; nodeId; endpoint }`,
|
|
1834
|
+
answered by Cloudly with the node as it now stands. Cloudly validates the endpoint with
|
|
1835
|
+
`validateClusterNodeCorestore` before it writes, takes the node's own real-write fence inside the
|
|
1836
|
+
writing transaction so a concurrent deletion conflicts instead of leaving an endpoint behind for a
|
|
1837
|
+
node that is gone, and pushes the cluster configuration afterwards so every connected relay learns
|
|
1838
|
+
the change without reconnecting — the same push that
|
|
1839
|
+
[the cluster relay block](#cluster-relay-block) uses when an operator enables or disables a relay.
|
|
1840
|
+
`endpoint: null` clears it, which states the same fact as never having set one. There is no
|
|
1841
|
+
node-wide update request: one field with one validator cannot drift into a generic node mutation
|
|
1842
|
+
whose per-field authority nobody defined.
|
|
1843
|
+
|
|
1844
|
+
The endpoint says where, never with what. The bearer control token that authorizes every call is
|
|
1845
|
+
obtained from Cloudly through `getCorestoreControlCredentialMaterial`, sealed to the X25519
|
|
1846
|
+
recipient the relay enrolled with `beginSecretRecipientEnrollment` and
|
|
1847
|
+
`completeSecretRecipientEnrollment` — see [Corestore Runtime Credentials](#corestore-runtime-credentials).
|
|
1848
|
+
No credential travels in the cluster document, and none is read from the relay's environment.
|
|
1849
|
+
|
|
1738
1850
|
### Legacy Deployment Settlement
|
|
1739
1851
|
|
|
1740
1852
|
The Node-only `/runtime` export also provides strict, exact-schema codecs for
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/data/backup.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ICorestoreDatabaseAllocationReference } from './corestore.js';
|
|
2
|
+
|
|
1
3
|
export type TBackupStatus =
|
|
2
4
|
| 'pending'
|
|
3
5
|
| 'running'
|
|
@@ -228,6 +230,18 @@ export interface IIsolatedRestoreDatabaseMapping {
|
|
|
228
230
|
target: {
|
|
229
231
|
resourceName: string;
|
|
230
232
|
databaseName: string;
|
|
233
|
+
/**
|
|
234
|
+
* Present exactly when the target database is allocation-managed.
|
|
235
|
+
*
|
|
236
|
+
* Corestore refuses an allocated target whose exact safe reference it was
|
|
237
|
+
* not given, so a mapping that omits it for an allocated database is a
|
|
238
|
+
* restore that cannot execute. It is part of the mapping rather than a
|
|
239
|
+
* field beside it because the mappings are what a restore grant binds: the
|
|
240
|
+
* canonical mapping digest is the authority that proves which database this
|
|
241
|
+
* restore may replace, and an allocation reference outside it would be
|
|
242
|
+
* authority nobody signed.
|
|
243
|
+
*/
|
|
244
|
+
databaseAllocation?: ICorestoreDatabaseAllocationReference;
|
|
231
245
|
};
|
|
232
246
|
}
|
|
233
247
|
|
package/ts/data/clusternode.ts
CHANGED
|
@@ -1010,5 +1010,98 @@ export interface IClusterNode {
|
|
|
1010
1010
|
* Debian packages installed on this node
|
|
1011
1011
|
*/
|
|
1012
1012
|
requiredDebianPackages: string[];
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* Where this node's Corestore answers its control API.
|
|
1016
|
+
*
|
|
1017
|
+
* Cloudly owns it and the relay reads it. Absent means this node runs no
|
|
1018
|
+
* Corestore the relay may reach, which is a fact to report rather than a
|
|
1019
|
+
* reason to guess a hostname: the cluster-local alias every component used
|
|
1020
|
+
* while Docker Swarm resolved it is exactly what stops resolving.
|
|
1021
|
+
*/
|
|
1022
|
+
corestore?: IClusterNodeCorestore;
|
|
1013
1023
|
};
|
|
1014
1024
|
}
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* How the cluster relay reaches one node's Corestore.
|
|
1028
|
+
*
|
|
1029
|
+
* Corestore is node-local: the database and the bucket of a workload live on
|
|
1030
|
+
* the node the workload runs on, so one relay serving a whole cluster must be
|
|
1031
|
+
* told, per node, where that node's control API listens. This is control-plane
|
|
1032
|
+
* state, owned by Cloudly and stored in its database like every other field of
|
|
1033
|
+
* the cluster document — never a file, an alias or an environment variable on
|
|
1034
|
+
* the relay.
|
|
1035
|
+
*/
|
|
1036
|
+
export interface IClusterNodeCorestore {
|
|
1037
|
+
/**
|
|
1038
|
+
* The canonical origin of the control API, for example
|
|
1039
|
+
* `http://10.20.0.15:3000`.
|
|
1040
|
+
*
|
|
1041
|
+
* `http:` is admitted because Corestore terminates no TLS today — it binds a
|
|
1042
|
+
* plain control port and advertises no transport-encryption guarantee — and
|
|
1043
|
+
* the hop is cluster-private by construction, reachable only from inside the
|
|
1044
|
+
* cluster. `https:` is admitted too, so a deployment that puts TLS in front
|
|
1045
|
+
* of Corestore needs no contract change.
|
|
1046
|
+
*
|
|
1047
|
+
* The endpoint says where, never with what: the bearer control token that
|
|
1048
|
+
* authorizes every call is obtained from Cloudly through
|
|
1049
|
+
* `getCorestoreControlCredentialMaterial`, sealed to the X25519 recipient the
|
|
1050
|
+
* relay enrolled with `beginSecretRecipientEnrollment` and
|
|
1051
|
+
* `completeSecretRecipientEnrollment`. No credential ever travels in this
|
|
1052
|
+
* document, and none is read from the relay's environment.
|
|
1053
|
+
*/
|
|
1054
|
+
endpoint: string;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
const maximumClusterNodeCorestoreEndpointLength = 2048;
|
|
1058
|
+
|
|
1059
|
+
/**
|
|
1060
|
+
* Validates one node's Corestore endpoint and names every reason it is refused.
|
|
1061
|
+
*
|
|
1062
|
+
* A relay that dialled a wrong or ambiguous endpoint would provision a
|
|
1063
|
+
* workload's database on a node that is not the workload's, so the origin must
|
|
1064
|
+
* be exact: a scheme this contract admits, a host, an optional port, and
|
|
1065
|
+
* nothing else — no path, no query, no fragment, no userinfo, no trailing
|
|
1066
|
+
* slash.
|
|
1067
|
+
*/
|
|
1068
|
+
export const validateClusterNodeCorestore = (
|
|
1069
|
+
valueArg: unknown,
|
|
1070
|
+
pathArg = 'cluster node corestore',
|
|
1071
|
+
): string[] => {
|
|
1072
|
+
if (!valueArg
|
|
1073
|
+
|| typeof valueArg !== 'object'
|
|
1074
|
+
|| Array.isArray(valueArg)
|
|
1075
|
+
|| (Object.getPrototypeOf(valueArg) !== Object.prototype
|
|
1076
|
+
&& Object.getPrototypeOf(valueArg) !== null)
|
|
1077
|
+
|| Object.keys(valueArg as Record<string, unknown>).join(',') !== 'endpoint') {
|
|
1078
|
+
return [`${pathArg} must use its exact schema`];
|
|
1079
|
+
}
|
|
1080
|
+
const endpoint = (valueArg as { endpoint: unknown }).endpoint;
|
|
1081
|
+
if (typeof endpoint !== 'string'
|
|
1082
|
+
|| endpoint.length === 0
|
|
1083
|
+
|| endpoint.length > maximumClusterNodeCorestoreEndpointLength) {
|
|
1084
|
+
return [`${pathArg} endpoint must be a string of 1 to `
|
|
1085
|
+
+ `${maximumClusterNodeCorestoreEndpointLength} characters`];
|
|
1086
|
+
}
|
|
1087
|
+
let parsedEndpoint: URL;
|
|
1088
|
+
try {
|
|
1089
|
+
parsedEndpoint = new URL(endpoint);
|
|
1090
|
+
} catch {
|
|
1091
|
+
return [`${pathArg} endpoint must be a parsable URL`];
|
|
1092
|
+
}
|
|
1093
|
+
const errors: string[] = [];
|
|
1094
|
+
if (parsedEndpoint.protocol !== 'http:' && parsedEndpoint.protocol !== 'https:') {
|
|
1095
|
+
errors.push(`${pathArg} endpoint must use the http or https scheme`);
|
|
1096
|
+
}
|
|
1097
|
+
if (parsedEndpoint.username || parsedEndpoint.password) {
|
|
1098
|
+
errors.push(`${pathArg} endpoint must not carry userinfo`);
|
|
1099
|
+
}
|
|
1100
|
+
if (parsedEndpoint.origin !== endpoint) {
|
|
1101
|
+
errors.push(
|
|
1102
|
+
`${pathArg} endpoint must be the canonical origin ${parsedEndpoint.origin}, `
|
|
1103
|
+
+ 'without a path, query, fragment, trailing slash or default port',
|
|
1104
|
+
);
|
|
1105
|
+
}
|
|
1106
|
+
return errors;
|
|
1107
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Corestore shapes the control plane exchanges outside the Node-only
|
|
3
|
+
* `/runtime` export.
|
|
4
|
+
*
|
|
5
|
+
* Only what a browser-visible contract has to name lives here. Everything that
|
|
6
|
+
* needs Corestore's canonical JSON, digests or receipts stays in
|
|
7
|
+
* `runtime.corestore.*`, which imports this declaration rather than repeating
|
|
8
|
+
* it: one structure, one rule set, two entry points.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The safe reference to an allocation-managed Corestore database.
|
|
13
|
+
*
|
|
14
|
+
* Corestore returns it when a database is allocated and requires the exact same
|
|
15
|
+
* value back on every later operation against that database. It intentionally
|
|
16
|
+
* excludes the NoSQLDB principal, the publication capability, the database URI,
|
|
17
|
+
* the password and every provider-private evidence field, so it can travel
|
|
18
|
+
* through a control plane, be persisted as authority and be quoted in a
|
|
19
|
+
* validation reason without disclosing a credential.
|
|
20
|
+
*/
|
|
21
|
+
export interface ICorestoreDatabaseAllocationReference {
|
|
22
|
+
purpose: 'scratch-rehearsal';
|
|
23
|
+
rehearsalId: string;
|
|
24
|
+
allocationId: string;
|
|
25
|
+
generation: number;
|
|
26
|
+
bindingSha256: string;
|
|
27
|
+
receiptSha256: string;
|
|
28
|
+
}
|
package/ts/data/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './cloudlyconfig.js';
|
|
|
2
2
|
export * from './cluster.js';
|
|
3
3
|
export * from './clusteringress.js';
|
|
4
4
|
export * from './config.js';
|
|
5
|
+
export * from './corestore.js';
|
|
5
6
|
export * from './coremail.js';
|
|
6
7
|
export * from './coremail.runtime.js';
|
|
7
8
|
export * from './deployment.js';
|
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
IBackupArchiveObject,
|
|
4
4
|
TIsolatedRestoreResourceMapping,
|
|
5
5
|
} from './backup.js';
|
|
6
|
+
import type { ICorestoreDatabaseAllocationReference } from './corestore.js';
|
|
6
7
|
import {
|
|
7
8
|
canonicalizeStrictJson,
|
|
8
9
|
createCanonicalJsonSha256Hex,
|
|
@@ -614,6 +615,44 @@ const readSafeInteger = (
|
|
|
614
615
|
return valueArg;
|
|
615
616
|
};
|
|
616
617
|
|
|
618
|
+
/**
|
|
619
|
+
* Corestore's safe reference to an allocation-managed database, exactly as it
|
|
620
|
+
* issued it.
|
|
621
|
+
*
|
|
622
|
+
* Every field is read here rather than trusted, because this value is bound
|
|
623
|
+
* into the restore grant: a reference the coordinator mistyped would be signed
|
|
624
|
+
* authority for a database nobody meant to replace.
|
|
625
|
+
*/
|
|
626
|
+
const readDatabaseAllocationReference = (
|
|
627
|
+
valueArg: unknown,
|
|
628
|
+
fieldNameArg: string,
|
|
629
|
+
): ICorestoreDatabaseAllocationReference => {
|
|
630
|
+
const value = readRecord(valueArg, fieldNameArg);
|
|
631
|
+
assertExactKeys(
|
|
632
|
+
value,
|
|
633
|
+
[
|
|
634
|
+
'purpose',
|
|
635
|
+
'rehearsalId',
|
|
636
|
+
'allocationId',
|
|
637
|
+
'generation',
|
|
638
|
+
'bindingSha256',
|
|
639
|
+
'receiptSha256',
|
|
640
|
+
],
|
|
641
|
+
fieldNameArg,
|
|
642
|
+
);
|
|
643
|
+
if (value.purpose !== 'scratch-rehearsal') {
|
|
644
|
+
return fail(`${fieldNameArg}.purpose must be scratch-rehearsal`);
|
|
645
|
+
}
|
|
646
|
+
return {
|
|
647
|
+
purpose: 'scratch-rehearsal',
|
|
648
|
+
rehearsalId: readScopedId(value.rehearsalId, `${fieldNameArg}.rehearsalId`),
|
|
649
|
+
allocationId: readSha256(value.allocationId, `${fieldNameArg}.allocationId`),
|
|
650
|
+
generation: readSafeInteger(value.generation, `${fieldNameArg}.generation`, 1),
|
|
651
|
+
bindingSha256: readSha256(value.bindingSha256, `${fieldNameArg}.bindingSha256`),
|
|
652
|
+
receiptSha256: readSha256(value.receiptSha256, `${fieldNameArg}.receiptSha256`),
|
|
653
|
+
};
|
|
654
|
+
};
|
|
655
|
+
|
|
617
656
|
const readMountPath = (valueArg: unknown, fieldNameArg: string): string => {
|
|
618
657
|
const value = readString(
|
|
619
658
|
valueArg,
|
|
@@ -871,7 +910,9 @@ const normalizeMapping = (
|
|
|
871
910
|
);
|
|
872
911
|
assertExactKeys(
|
|
873
912
|
target,
|
|
874
|
-
|
|
913
|
+
Object.hasOwn(target, 'databaseAllocation')
|
|
914
|
+
? ['resourceName', 'databaseName', 'databaseAllocation']
|
|
915
|
+
: ['resourceName', 'databaseName'],
|
|
875
916
|
`${fieldName}.target`,
|
|
876
917
|
);
|
|
877
918
|
const sourceResourceName = readResourceName(
|
|
@@ -910,6 +951,17 @@ const normalizeMapping = (
|
|
|
910
951
|
target: {
|
|
911
952
|
resourceName: targetResourceName,
|
|
912
953
|
databaseName: targetDatabaseName,
|
|
954
|
+
// Present exactly when the target is allocation-managed, and therefore
|
|
955
|
+
// part of what the mapping digest binds: Corestore refuses an allocated
|
|
956
|
+
// target whose exact reference the authority did not cover.
|
|
957
|
+
...(Object.hasOwn(target, 'databaseAllocation')
|
|
958
|
+
? {
|
|
959
|
+
databaseAllocation: readDatabaseAllocationReference(
|
|
960
|
+
target.databaseAllocation,
|
|
961
|
+
`${fieldName}.target.databaseAllocation`,
|
|
962
|
+
),
|
|
963
|
+
}
|
|
964
|
+
: {}),
|
|
913
965
|
},
|
|
914
966
|
};
|
|
915
967
|
}
|