@projectcor/maia-components 2.36.0 → 2.37.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/lib/components/atoms/ApprovalBox/ApprovalBox.js +63 -4
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +16 -4
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +34 -11
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -3
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +20 -11
- package/lib/hooks/useAgentModel/useCreateAgent.js +6 -6
- package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -6
- package/lib/hooks/useChatManager/useChatManager.js +5 -4
- package/lib/lang/br/index.js +5 -1
- package/lib/lang/en/index.js +5 -1
- package/lib/lang/es/index.js +5 -1
- package/lib/lang/fr/index.js +5 -1
- package/lib/services/maia/Agents/setAgentToolGroups.js +2 -2
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -3
- package/lib/types/agentModal.js +1 -1
- package/lib/utils/normalizeAgentConnectors.js +44 -16
- package/package.json +1 -1
|
@@ -2,28 +2,50 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import _typeof from "@babel/runtime/helpers/typeof";
|
|
3
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import { normalizeCorEntitySlug } from './corConnectorMentionTypes';
|
|
6
|
+
|
|
5
7
|
/** Grupo de conectores COR dentro de `connectors`. */
|
|
6
8
|
export var COR_CONNECTOR_GROUP = 'COR';
|
|
7
9
|
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Slugs de tool groups COR, uno por conector/toggle del ABM.
|
|
12
|
+
* Orden = jerarquía de COR (cliente > proyecto > tarea), de más amplio a más específico —
|
|
13
|
+
* es el orden en que se muestran los toggles en el tab Permisos.
|
|
14
|
+
*/
|
|
15
|
+
export var COR_TOOL_GROUP_SLUGS = ['clientes', 'proyectos', 'tareas'];
|
|
16
|
+
|
|
17
|
+
/** Estado de los 3 conectores COR, uno por slug. */
|
|
18
|
+
|
|
19
|
+
/** Los 3 conectores vienen prendidos por defecto en agentes nuevos (manual y MAIAKER). */
|
|
20
|
+
export var DEFAULT_COR_ACCESS = {
|
|
21
|
+
clientes: true,
|
|
22
|
+
proyectos: true,
|
|
23
|
+
tareas: true
|
|
24
|
+
};
|
|
25
|
+
var ENTITY_BY_SLUG = {
|
|
26
|
+
clientes: 'client',
|
|
27
|
+
proyectos: 'project',
|
|
28
|
+
tareas: 'task'
|
|
29
|
+
};
|
|
10
30
|
|
|
11
31
|
/**
|
|
12
|
-
* Construye el array `tool_group_slugs` para la ruta `POST agents/{id}/tool-groups`
|
|
13
|
-
*
|
|
32
|
+
* Construye el array `tool_group_slugs` para la ruta `POST agents/{id}/tool-groups`
|
|
33
|
+
* a partir del estado de los 3 toggles: un slug por conector prendido.
|
|
14
34
|
*/
|
|
15
|
-
export var buildAgentToolGroupsRequest = function buildAgentToolGroupsRequest(
|
|
16
|
-
return
|
|
35
|
+
export var buildAgentToolGroupsRequest = function buildAgentToolGroupsRequest(corAccess) {
|
|
36
|
+
return COR_TOOL_GROUP_SLUGS.filter(function (slug) {
|
|
37
|
+
return corAccess[slug];
|
|
38
|
+
});
|
|
17
39
|
};
|
|
18
40
|
|
|
19
41
|
/**
|
|
20
42
|
* Construye los `connectors` agrupados (mismo formato que devuelve el back en listado/sesión)
|
|
21
|
-
* a partir del
|
|
43
|
+
* a partir del estado de los toggles, para hidratar de forma optimista el agente recién creado/editado sin refetch.
|
|
22
44
|
*/
|
|
23
|
-
export var
|
|
45
|
+
export var buildAgentConnectorsFromCorAccess = function buildAgentConnectorsFromCorAccess(corAccess) {
|
|
24
46
|
return [{
|
|
25
47
|
group: COR_CONNECTOR_GROUP,
|
|
26
|
-
slugs:
|
|
48
|
+
slugs: buildAgentToolGroupsRequest(corAccess)
|
|
27
49
|
}, {
|
|
28
50
|
group: 'MCP',
|
|
29
51
|
slugs: []
|
|
@@ -51,13 +73,19 @@ export var normalizeAgentConnectors = function normalizeAgentConnectors(raw) {
|
|
|
51
73
|
};
|
|
52
74
|
|
|
53
75
|
/**
|
|
54
|
-
* Deriva el estado
|
|
55
|
-
* (`GET agents/{id}`).
|
|
76
|
+
* Deriva el estado de los 3 toggles desde `tool_group_slugs` del detalle del agente
|
|
77
|
+
* (`GET agents/{id}`). Cada conector queda prendido sólo si su propio slug está presente
|
|
78
|
+
* (tolera variantes de entidad/legacy vía `normalizeCorEntitySlug`), a diferencia del viejo
|
|
79
|
+
* "prendido si el array trae cualquier slug" que no distinguía un conector de otro.
|
|
56
80
|
*/
|
|
57
|
-
export var
|
|
58
|
-
|
|
59
|
-
return typeof slug === 'string'
|
|
60
|
-
});
|
|
81
|
+
export var deriveCorAccessFromToolGroupSlugs = function deriveCorAccessFromToolGroupSlugs(raw) {
|
|
82
|
+
var entities = new Set(Array.isArray(raw) ? raw.filter(function (slug) {
|
|
83
|
+
return typeof slug === 'string';
|
|
84
|
+
}).map(normalizeCorEntitySlug) : []);
|
|
85
|
+
return COR_TOOL_GROUP_SLUGS.reduce(function (acc, slug) {
|
|
86
|
+
acc[slug] = entities.has(ENTITY_BY_SLUG[slug]);
|
|
87
|
+
return acc;
|
|
88
|
+
}, {});
|
|
61
89
|
};
|
|
62
90
|
|
|
63
91
|
/** Asegura `connectors` normalizados en un agente proveniente del listado de customs. */
|
|
@@ -67,4 +95,4 @@ export var withNormalizedConnectors = function withNormalizedConnectors(agent) {
|
|
|
67
95
|
connectors: connectors
|
|
68
96
|
}) : agent;
|
|
69
97
|
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVDb3JFbnRpdHlTbHVnIiwiQ09SX0NPTk5FQ1RPUl9HUk9VUCIsIkNPUl9UT09MX0dST1VQX1NMVUdTIiwiREVGQVVMVF9DT1JfQUNDRVNTIiwiY2xpZW50ZXMiLCJwcm95ZWN0b3MiLCJ0YXJlYXMiLCJFTlRJVFlfQllfU0xVRyIsImJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCIsImNvckFjY2VzcyIsImZpbHRlciIsInNsdWciLCJidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21Db3JBY2Nlc3MiLCJncm91cCIsInNsdWdzIiwibm9ybWFsaXplQWdlbnRDb25uZWN0b3JzIiwicmF3IiwiQXJyYXkiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwicGFyc2VkIiwiY29ubmVjdG9yIiwiX3R5cGVvZiIsIm1hcCIsImxlbmd0aCIsImRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsImVudGl0aWVzIiwiU2V0IiwicmVkdWNlIiwiYWNjIiwiaGFzIiwid2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzIiwiYWdlbnQiLCJjb25uZWN0b3JzIiwiX29iamVjdFNwcmVhZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBZ2VudENvbm5lY3RvciB9IGZyb20gJy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgbm9ybWFsaXplQ29yRW50aXR5U2x1ZyB9IGZyb20gJy4vY29yQ29ubmVjdG9yTWVudGlvblR5cGVzJ1xuXG4vKiogR3J1cG8gZGUgY29uZWN0b3JlcyBDT1IgZGVudHJvIGRlIGBjb25uZWN0b3JzYC4gKi9cbmV4cG9ydCBjb25zdCBDT1JfQ09OTkVDVE9SX0dST1VQID0gJ0NPUidcblxuLyoqXG4gKiBTbHVncyBkZSB0b29sIGdyb3VwcyBDT1IsIHVubyBwb3IgY29uZWN0b3IvdG9nZ2xlIGRlbCBBQk0uXG4gKiBPcmRlbiA9IGplcmFycXXDrWEgZGUgQ09SIChjbGllbnRlID4gcHJveWVjdG8gPiB0YXJlYSksIGRlIG3DoXMgYW1wbGlvIGEgbcOhcyBlc3BlY8OtZmljbyDigJRcbiAqIGVzIGVsIG9yZGVuIGVuIHF1ZSBzZSBtdWVzdHJhbiBsb3MgdG9nZ2xlcyBlbiBlbCB0YWIgUGVybWlzb3MuXG4gKi9cbmV4cG9ydCBjb25zdCBDT1JfVE9PTF9HUk9VUF9TTFVHUyA9IFsnY2xpZW50ZXMnLCAncHJveWVjdG9zJywgJ3RhcmVhcyddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIENvclRvb2xHcm91cFNsdWcgPSAodHlwZW9mIENPUl9UT09MX0dST1VQX1NMVUdTKVtudW1iZXJdXG5cbi8qKiBFc3RhZG8gZGUgbG9zIDMgY29uZWN0b3JlcyBDT1IsIHVubyBwb3Igc2x1Zy4gKi9cbmV4cG9ydCB0eXBlIENvckFjY2VzcyA9IFJlY29yZDxDb3JUb29sR3JvdXBTbHVnLCBib29sZWFuPlxuXG4vKiogTG9zIDMgY29uZWN0b3JlcyB2aWVuZW4gcHJlbmRpZG9zIHBvciBkZWZlY3RvIGVuIGFnZW50ZXMgbnVldm9zIChtYW51YWwgeSBNQUlBS0VSKS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPUl9BQ0NFU1M6IENvckFjY2VzcyA9IHtcbiAgY2xpZW50ZXM6IHRydWUsXG4gIHByb3llY3RvczogdHJ1ZSxcbiAgdGFyZWFzOiB0cnVlLFxufVxuXG5jb25zdCBFTlRJVFlfQllfU0xVRzogUmVjb3JkPENvclRvb2xHcm91cFNsdWcsICdjbGllbnQnIHwgJ3Byb2plY3QnIHwgJ3Rhc2snPiA9IHtcbiAgY2xpZW50ZXM6ICdjbGllbnQnLFxuICBwcm95ZWN0b3M6ICdwcm9qZWN0JyxcbiAgdGFyZWFzOiAndGFzaycsXG59XG5cbi8qKlxuICogQ29uc3RydXllIGVsIGFycmF5IGB0b29sX2dyb3VwX3NsdWdzYCBwYXJhIGxhIHJ1dGEgYFBPU1QgYWdlbnRzL3tpZH0vdG9vbC1ncm91cHNgXG4gKiBhIHBhcnRpciBkZWwgZXN0YWRvIGRlIGxvcyAzIHRvZ2dsZXM6IHVuIHNsdWcgcG9yIGNvbmVjdG9yIHByZW5kaWRvLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0ID0gKGNvckFjY2VzczogQ29yQWNjZXNzKTogc3RyaW5nW10gPT5cbiAgQ09SX1RPT0xfR1JPVVBfU0xVR1MuZmlsdGVyKHNsdWcgPT4gY29yQWNjZXNzW3NsdWddKVxuXG4vKipcbiAqIENvbnN0cnV5ZSBsb3MgYGNvbm5lY3RvcnNgIGFncnVwYWRvcyAobWlzbW8gZm9ybWF0byBxdWUgZGV2dWVsdmUgZWwgYmFjayBlbiBsaXN0YWRvL3Nlc2nDs24pXG4gKiBhIHBhcnRpciBkZWwgZXN0YWRvIGRlIGxvcyB0b2dnbGVzLCBwYXJhIGhpZHJhdGFyIGRlIGZvcm1hIG9wdGltaXN0YSBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8vZWRpdGFkbyBzaW4gcmVmZXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdlbnRDb25uZWN0b3JzRnJvbUNvckFjY2VzcyA9IChjb3JBY2Nlc3M6IENvckFjY2Vzcyk6IEFnZW50Q29ubmVjdG9yW10gPT4gW1xuICB7IGdyb3VwOiBDT1JfQ09OTkVDVE9SX0dST1VQLCBzbHVnczogYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KGNvckFjY2VzcykgfSxcbiAgeyBncm91cDogJ01DUCcsIHNsdWdzOiBbXSB9LFxuXVxuXG4vKiogTm9ybWFsaXphIGVsIGFycmF5IGBjb25uZWN0b3JzYCBxdWUgZGV2dWVsdmUgbGEgQVBJIGRlIGFnZW50ZXMgbyBzZXNpb25lcy4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVBZ2VudENvbm5lY3RvcnMgPSAocmF3OiB1bmtub3duKTogQWdlbnRDb25uZWN0b3JbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXcpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHBhcnNlZCA9IHJhd1xuICAgIC5maWx0ZXIoKGNvbm5lY3Rvcik6IGNvbm5lY3RvciBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWNvbm5lY3RvciAmJiB0eXBlb2YgY29ubmVjdG9yID09PSAnb2JqZWN0JylcbiAgICAubWFwKGNvbm5lY3RvciA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHR5cGVvZiBjb25uZWN0b3IuZ3JvdXAgPT09ICdzdHJpbmcnID8gY29ubmVjdG9yLmdyb3VwIDogJydcbiAgICAgIGNvbnN0IHNsdWdzID0gQXJyYXkuaXNBcnJheShjb25uZWN0b3Iuc2x1Z3MpXG4gICAgICAgID8gY29ubmVjdG9yLnNsdWdzLmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJylcbiAgICAgICAgOiBbXVxuICAgICAgcmV0dXJuIHsgZ3JvdXAsIHNsdWdzIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cC5sZW5ndGggPiAwKVxuXG4gIHJldHVybiBwYXJzZWQubGVuZ3RoID4gMCA/IHBhcnNlZCA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIERlcml2YSBlbCBlc3RhZG8gZGUgbG9zIDMgdG9nZ2xlcyBkZXNkZSBgdG9vbF9ncm91cF9zbHVnc2AgZGVsIGRldGFsbGUgZGVsIGFnZW50ZVxuICogKGBHRVQgYWdlbnRzL3tpZH1gKS4gQ2FkYSBjb25lY3RvciBxdWVkYSBwcmVuZGlkbyBzw7NsbyBzaSBzdSBwcm9waW8gc2x1ZyBlc3TDoSBwcmVzZW50ZVxuICogKHRvbGVyYSB2YXJpYW50ZXMgZGUgZW50aWRhZC9sZWdhY3kgdsOtYSBgbm9ybWFsaXplQ29yRW50aXR5U2x1Z2ApLCBhIGRpZmVyZW5jaWEgZGVsIHZpZWpvXG4gKiBcInByZW5kaWRvIHNpIGVsIGFycmF5IHRyYWUgY3VhbHF1aWVyIHNsdWdcIiBxdWUgbm8gZGlzdGluZ3XDrWEgdW4gY29uZWN0b3IgZGUgb3Ryby5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyA9IChyYXc6IHVua25vd24pOiBDb3JBY2Nlc3MgPT4ge1xuICBjb25zdCBlbnRpdGllcyA9IG5ldyBTZXQoXG4gICAgQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJykubWFwKG5vcm1hbGl6ZUNvckVudGl0eVNsdWcpIDogW11cbiAgKVxuXG4gIHJldHVybiBDT1JfVE9PTF9HUk9VUF9TTFVHUy5yZWR1Y2UoKGFjYywgc2x1ZykgPT4ge1xuICAgIGFjY1tzbHVnXSA9IGVudGl0aWVzLmhhcyhFTlRJVFlfQllfU0xVR1tzbHVnXSlcbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9IGFzIENvckFjY2Vzcylcbn1cblxuLyoqIEFzZWd1cmEgYGNvbm5lY3RvcnNgIG5vcm1hbGl6YWRvcyBlbiB1biBhZ2VudGUgcHJvdmVuaWVudGUgZGVsIGxpc3RhZG8gZGUgY3VzdG9tcy4gKi9cbmV4cG9ydCBjb25zdCB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMgPSA8VCBleHRlbmRzIHsgY29ubmVjdG9ycz86IHVua25vd24gfT4oYWdlbnQ6IFQpOiBUID0+IHtcbiAgY29uc3QgY29ubmVjdG9ycyA9IG5vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycyhhZ2VudC5jb25uZWN0b3JzKVxuICByZXR1cm4gY29ubmVjdG9ycyA/IHsgLi4uYWdlbnQsIGNvbm5lY3RvcnMgfSA6IGFnZW50XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTQSxzQkFBc0IsUUFBUSw0QkFBNEI7O0FBRW5FO0FBQ0EsT0FBTyxJQUFNQyxtQkFBbUIsR0FBRyxLQUFLOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFVOztBQUloRjs7QUFHQTtBQUNBLE9BQU8sSUFBTUMsa0JBQTZCLEdBQUc7RUFDM0NDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLE1BQU0sRUFBRTtBQUNWLENBQUM7QUFFRCxJQUFNQyxjQUF1RSxHQUFHO0VBQzlFSCxRQUFRLEVBQUUsUUFBUTtFQUNsQkMsU0FBUyxFQUFFLFNBQVM7RUFDcEJDLE1BQU0sRUFBRTtBQUNWLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1FLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUlDLFNBQW9CO0VBQUEsT0FDOURQLG9CQUFvQixDQUFDUSxNQUFNLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUlGLFNBQVMsQ0FBQ0UsSUFBSSxDQUFDO0VBQUEsRUFBQztBQUFBOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsaUNBQWlDLEdBQUcsU0FBcENBLGlDQUFpQ0EsQ0FBSUgsU0FBb0I7RUFBQSxPQUF1QixDQUMzRjtJQUFFSSxLQUFLLEVBQUVaLG1CQUFtQjtJQUFFYSxLQUFLLEVBQUVOLDJCQUEyQixDQUFDQyxTQUFTO0VBQUUsQ0FBQyxFQUM3RTtJQUFFSSxLQUFLLEVBQUUsS0FBSztJQUFFQyxLQUFLLEVBQUU7RUFBRyxDQUFDLENBQzVCO0FBQUE7O0FBRUQ7QUFDQSxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLEdBQVksRUFBbUM7RUFDdEYsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBT0csU0FBUztFQUN6QyxJQUFNQyxNQUFNLEdBQUdKLEdBQUcsQ0FDZk4sTUFBTSxDQUFDLFVBQUNXLFNBQVM7SUFBQSxPQUEyQyxDQUFDLENBQUNBLFNBQVMsSUFBSUMsT0FBQSxDQUFPRCxTQUFTLE1BQUssUUFBUTtFQUFBLEVBQUMsQ0FDekdFLEdBQUcsQ0FBQyxVQUFBRixTQUFTLEVBQUk7SUFDaEIsSUFBTVIsS0FBSyxHQUFHLE9BQU9RLFNBQVMsQ0FBQ1IsS0FBSyxLQUFLLFFBQVEsR0FBR1EsU0FBUyxDQUFDUixLQUFLLEdBQUcsRUFBRTtJQUN4RSxJQUFNQyxLQUFLLEdBQUdHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRyxTQUFTLENBQUNQLEtBQUssQ0FBQyxHQUN4Q08sU0FBUyxDQUFDUCxLQUFLLENBQUNKLE1BQU0sQ0FBQyxVQUFDQyxJQUFJO01BQUEsT0FBcUIsT0FBT0EsSUFBSSxLQUFLLFFBQVE7SUFBQSxFQUFDLEdBQzFFLEVBQUU7SUFDTixPQUFPO01BQUVFLEtBQUssRUFBTEEsS0FBSztNQUFFQyxLQUFLLEVBQUxBO0lBQU0sQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FDREosTUFBTSxDQUFDLFVBQUFXLFNBQVM7SUFBQSxPQUFJQSxTQUFTLENBQUNSLEtBQUssQ0FBQ1csTUFBTSxHQUFHLENBQUM7RUFBQSxFQUFDO0VBRWxELE9BQU9KLE1BQU0sQ0FBQ0ksTUFBTSxHQUFHLENBQUMsR0FBR0osTUFBTSxHQUFHRCxTQUFTO0FBQy9DLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNTSxpQ0FBaUMsR0FBRyxTQUFwQ0EsaUNBQWlDQSxDQUFJVCxHQUFZLEVBQWdCO0VBQzVFLElBQU1VLFFBQVEsR0FBRyxJQUFJQyxHQUFHLENBQ3RCVixLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDLEdBQUdBLEdBQUcsQ0FBQ04sTUFBTSxDQUFDLFVBQUNDLElBQUk7SUFBQSxPQUFxQixPQUFPQSxJQUFJLEtBQUssUUFBUTtFQUFBLEVBQUMsQ0FBQ1ksR0FBRyxDQUFDdkIsc0JBQXNCLENBQUMsR0FBRyxFQUNwSCxDQUFDO0VBRUQsT0FBT0Usb0JBQW9CLENBQUMwQixNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFbEIsSUFBSSxFQUFLO0lBQ2hEa0IsR0FBRyxDQUFDbEIsSUFBSSxDQUFDLEdBQUdlLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDdkIsY0FBYyxDQUFDSSxJQUFJLENBQUMsQ0FBQztJQUM5QyxPQUFPa0IsR0FBRztFQUNaLENBQUMsRUFBRSxDQUFDLENBQWMsQ0FBQztBQUNyQixDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNRSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUF3Q0MsS0FBUSxFQUFRO0VBQzNGLElBQU1DLFVBQVUsR0FBR2xCLHdCQUF3QixDQUFDaUIsS0FBSyxDQUFDQyxVQUFVLENBQUM7RUFDN0QsT0FBT0EsVUFBVSxHQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBUUYsS0FBSztJQUFFQyxVQUFVLEVBQVZBO0VBQVUsS0FBS0QsS0FBSztBQUN0RCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|