contable 0.0.1
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/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/client/client.js +259 -0
- package/dist/client/img/bannersuperior.png +0 -0
- package/dist/client/menu.js +3 -0
- package/dist/client/redux-formulario.js +379 -0
- package/dist/client/render-components.js +750 -0
- package/dist/client/render-components.tsx +1117 -0
- package/dist/client/render-formulario.js +56 -0
- package/dist/client/render-formulario.tsx +72 -0
- package/dist/client/render-general.js +197 -0
- package/dist/client/render-general.tsx +212 -0
- package/dist/client/render-handlers.js +69 -0
- package/dist/client/tipos.js +13 -0
- package/dist/client/tsconfig.json +12 -0
- package/dist/server/app-contable.js +174 -0
- package/dist/server/def-config.js +100 -0
- package/dist/server/procedures-contable.js +508 -0
- package/dist/server/server-contable.js +17 -0
- package/dist/server/table-categorias_producto.js +29 -0
- package/dist/server/table-clientes.js +56 -0
- package/dist/server/table-condicion_iva.js +29 -0
- package/dist/server/table-estados_pedido.js +33 -0
- package/dist/server/table-estados_presupuesto.js +34 -0
- package/dist/server/table-insumos.js +44 -0
- package/dist/server/table-items_pedido.js +48 -0
- package/dist/server/table-items_presupuesto.js +48 -0
- package/dist/server/table-iva_productos.js +29 -0
- package/dist/server/table-parametros.js +38 -0
- package/dist/server/table-pedidos.js +48 -0
- package/dist/server/table-pedidos_pendientes.js +28 -0
- package/dist/server/table-pedidos_vencidos.js +28 -0
- package/dist/server/table-presupuestos.js +56 -0
- package/dist/server/table-productos.js +70 -0
- package/dist/server/table-productos_clientes.js +22 -0
- package/dist/server/table-productos_generales.js +22 -0
- package/dist/server/table-productos_insumos.js +47 -0
- package/dist/server/table-usuarios.js +44 -0
- package/dist/server/tsconfig.json +10 -0
- package/dist/server/types-contable.js +28 -0
- package/dist/unlogged/adapt.js +8 -0
- package/dist/unlogged/css/styles.styl +88 -0
- package/dist/unlogged/img/login-logo-icon.png.png +0 -0
- package/dist/unlogged/img/logo.png +0 -0
- package/dist/unlogged/tsconfig.json +15 -0
- package/dist/unlogged/unlogged.js +205 -0
- package/install/categorias_producto.tab +2 -0
- package/install/condicion_iva.tab +3 -0
- package/install/estados_pedido.tab +5 -0
- package/install/estados_presupuesto.tab +5 -0
- package/install/iva_productos.tab +3 -0
- package/install/productos.tab +2 -0
- package/install/usuarios.tab +2 -0
- package/package.json +58 -0
- package/unlogged/img/main-loading.gif +0 -0
- package/unlogged/main-loading.gif +0 -0
- package/unlogged/my-skin.js +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 Codenautas
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#contable
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
(function (factory) {
|
|
38
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
39
|
+
var v = factory(require, exports);
|
|
40
|
+
if (v !== undefined) module.exports = v;
|
|
41
|
+
}
|
|
42
|
+
else if (typeof define === "function" && define.amd) {
|
|
43
|
+
define(["require", "exports", "js-to-html", "myOwn", "typed-controls", "./redux-formulario"], factory);
|
|
44
|
+
}
|
|
45
|
+
})(function (require, exports) {
|
|
46
|
+
"use strict";
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
var js_to_html_1 = require("js-to-html");
|
|
49
|
+
var myOwn = require("myOwn");
|
|
50
|
+
var TypedControls = require("typed-controls");
|
|
51
|
+
var redux_formulario_1 = require("./redux-formulario");
|
|
52
|
+
var my = myOwn;
|
|
53
|
+
myOwn.wScreens.tablero = function (_addrParams) {
|
|
54
|
+
var mainLayout = document.getElementById('main_layout');
|
|
55
|
+
mainLayout.appendChild(js_to_html_1.html.h1("Tablero de control").create());
|
|
56
|
+
['vencidos', 'pendientes'].forEach(function (element) {
|
|
57
|
+
mainLayout.appendChild(js_to_html_1.html.h2("Pedidos ".concat(element)).create());
|
|
58
|
+
var myDiv = js_to_html_1.html.div().create();
|
|
59
|
+
mainLayout.appendChild(myDiv);
|
|
60
|
+
my.tableGrid("pedidos_".concat(element), myDiv, {});
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
my.clientSides.verCliente = {
|
|
64
|
+
update: false,
|
|
65
|
+
prepare: function (depot, fieldName) {
|
|
66
|
+
var td = depot.rowControls[fieldName];
|
|
67
|
+
var boton = js_to_html_1.html.button({}, 'ver').create();
|
|
68
|
+
td.appendChild(boton);
|
|
69
|
+
td.onclick = function () {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
71
|
+
return __generator(this, function (_a) {
|
|
72
|
+
desplegarCliente(depot);
|
|
73
|
+
return [2 /*return*/];
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
function colorearEstado(depot, pedidoOpresupuestoString) {
|
|
80
|
+
depot.rowControls['estado'].style.backgroundColor = depot.rowControls["estados_".concat(pedidoOpresupuestoString, "__color")].getTypedValue();
|
|
81
|
+
}
|
|
82
|
+
my.clientSides.accionesPresupuesto = {
|
|
83
|
+
prepare: function () { return null; },
|
|
84
|
+
update: function (depot, fieldName) {
|
|
85
|
+
var _this = this;
|
|
86
|
+
var td = depot.rowControls[fieldName];
|
|
87
|
+
td.innerHTML = '';
|
|
88
|
+
colorearEstado(depot, 'presupuesto');
|
|
89
|
+
var td = depot.rowControls[fieldName];
|
|
90
|
+
var boton = my.createForkeableButton({ menuType: 'presupuesto', name: "gestionar,presupuesto", label: "abrir" }, {});
|
|
91
|
+
boton.href = boton.href + '&' + 'presupuesto' + '=' + depot.row.presupuesto.toString();
|
|
92
|
+
td.appendChild(boton);
|
|
93
|
+
var puedeEditarPresupuesto = depot.rowControls['estados_presupuesto__permite_editar'].getTypedValue();
|
|
94
|
+
if (puedeEditarPresupuesto) {
|
|
95
|
+
var boton_1 = my.createForkeableButton({ menuType: 'pedido', name: 'gestionar,pedido', label: "aceptar" }, {});
|
|
96
|
+
boton_1.href = boton_1.href + '&presupuesto=' + depot.row['presupuesto'].toString();
|
|
97
|
+
td.appendChild(boton_1);
|
|
98
|
+
}
|
|
99
|
+
var presupuesto = depot.rowControls['presupuesto'].getTypedValue();
|
|
100
|
+
['anular', 'rechazar'].forEach(function (accion) {
|
|
101
|
+
if (puedeEditarPresupuesto) {
|
|
102
|
+
var boton_2 = js_to_html_1.html.button({}, accion).create();
|
|
103
|
+
boton_2.onclick = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
104
|
+
var err_1, grid;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0: return [4 /*yield*/, confirmPromise("\u00BFest\u00E1 por ".concat(accion, " el presupuesto? Esta acci\u00F3n no se podr\u00E1 deshacer"))];
|
|
108
|
+
case 1:
|
|
109
|
+
_a.sent();
|
|
110
|
+
_a.label = 2;
|
|
111
|
+
case 2:
|
|
112
|
+
_a.trys.push([2, 4, 5, 7]);
|
|
113
|
+
return [4 /*yield*/, my.ajax["presupuesto_".concat(accion)]({
|
|
114
|
+
presupuesto: presupuesto
|
|
115
|
+
})];
|
|
116
|
+
case 3:
|
|
117
|
+
_a.sent();
|
|
118
|
+
return [3 /*break*/, 7];
|
|
119
|
+
case 4:
|
|
120
|
+
err_1 = _a.sent();
|
|
121
|
+
alertPromise(err_1.message);
|
|
122
|
+
return [3 /*break*/, 7];
|
|
123
|
+
case 5:
|
|
124
|
+
grid = depot.manager;
|
|
125
|
+
return [4 /*yield*/, grid.retrieveRowAndRefresh(depot)];
|
|
126
|
+
case 6:
|
|
127
|
+
_a.sent();
|
|
128
|
+
return [7 /*endfinally*/];
|
|
129
|
+
case 7: return [2 /*return*/];
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}); };
|
|
133
|
+
td.appendChild(boton_2);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
my.clientSides.accionesPedido = {
|
|
139
|
+
prepare: function () { return null; },
|
|
140
|
+
update: function (depot, fieldName) {
|
|
141
|
+
var td = depot.rowControls[fieldName];
|
|
142
|
+
td.innerHTML = '';
|
|
143
|
+
colorearEstado(depot, 'pedido');
|
|
144
|
+
var td = depot.rowControls[fieldName];
|
|
145
|
+
var boton = my.createForkeableButton({ menuType: 'pedido', name: "gestionar,pedido", label: "abrir" }, {});
|
|
146
|
+
boton.href = boton.href + '&' + 'pedido' + '=' + depot.row.pedido.toString();
|
|
147
|
+
td.appendChild(boton);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
myOwn.wScreens.presupuestos = function (_addrParams) {
|
|
151
|
+
var mainLayout = document.getElementById('main_layout');
|
|
152
|
+
var myDiv = js_to_html_1.html.div().create();
|
|
153
|
+
var boton = my.createForkeableButton({ menuType: 'presupuesto', name: 'gestionar,presupuesto', label: 'nuevo' }, {});
|
|
154
|
+
mainLayout.appendChild(boton);
|
|
155
|
+
mainLayout.appendChild(myDiv);
|
|
156
|
+
boton.onclick = function () {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
158
|
+
return __generator(this, function (_a) {
|
|
159
|
+
my.removeSessionVar(redux_formulario_1.STORAGE_STATE_NAME);
|
|
160
|
+
return [2 /*return*/];
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
my.tableGrid('presupuestos', myDiv, {});
|
|
165
|
+
};
|
|
166
|
+
myOwn.wScreens.pedidos = function (_addrParams) {
|
|
167
|
+
var mainLayout = document.getElementById('main_layout');
|
|
168
|
+
var myDiv = js_to_html_1.html.div().create();
|
|
169
|
+
var boton = my.createForkeableButton({ menuType: 'pedido', name: 'gestionar,pedido', label: 'nuevo' }, {});
|
|
170
|
+
//var boton = html.button({},'nuevo').create();
|
|
171
|
+
mainLayout.appendChild(boton);
|
|
172
|
+
mainLayout.appendChild(myDiv);
|
|
173
|
+
boton.onclick = function () {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
+
return __generator(this, function (_a) {
|
|
176
|
+
my.removeSessionVar(redux_formulario_1.STORAGE_STATE_NAME);
|
|
177
|
+
return [2 /*return*/];
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
my.tableGrid('pedidos', myDiv, {});
|
|
182
|
+
};
|
|
183
|
+
var validateHexaColor = function (string) { return /^#[0-9A-F]{6}$/i.test(string); };
|
|
184
|
+
myOwn.clientSides.parsearColor = {
|
|
185
|
+
update: function (depot, fieldName) {
|
|
186
|
+
var myColor = depot.rowControls['color'].getTypedValue();
|
|
187
|
+
var isValidColor = validateHexaColor(myColor);
|
|
188
|
+
if (myColor && !isValidColor) {
|
|
189
|
+
alertPromise("color inválido!");
|
|
190
|
+
depot.rowControls['color'].setTypedValue(null, true);
|
|
191
|
+
}
|
|
192
|
+
var colorInput = js_to_html_1.html.input({ type: "color", value: isValidColor ? myColor : '#ffffff' }).create();
|
|
193
|
+
colorInput.onchange = function () {
|
|
194
|
+
depot.rowControls['color'].setTypedValue(colorInput.value, true);
|
|
195
|
+
};
|
|
196
|
+
depot.rowControls[fieldName].innerHTML = '';
|
|
197
|
+
depot.rowControls[fieldName].appendChild(colorInput);
|
|
198
|
+
},
|
|
199
|
+
prepare: function (depot, fieldName) { }
|
|
200
|
+
};
|
|
201
|
+
my.clientSides.clonarProducto = {
|
|
202
|
+
update: false,
|
|
203
|
+
prepare: function (depot, fieldName) {
|
|
204
|
+
var _a = depot.row, producto = _a.producto, nombre = _a.nombre;
|
|
205
|
+
var td = depot.rowControls[fieldName];
|
|
206
|
+
var boton = js_to_html_1.html.button({}, 'clonar').create();
|
|
207
|
+
td.appendChild(boton);
|
|
208
|
+
td.onclick = function () {
|
|
209
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
210
|
+
var result, newDepot;
|
|
211
|
+
return __generator(this, function (_a) {
|
|
212
|
+
switch (_a.label) {
|
|
213
|
+
case 0: return [4 /*yield*/, confirmPromise("confirma clonado de producto (".concat(producto, ") \"").concat(nombre, "\"?"))];
|
|
214
|
+
case 1:
|
|
215
|
+
_a.sent();
|
|
216
|
+
return [4 /*yield*/, my.ajax.producto_clonar({
|
|
217
|
+
producto: producto,
|
|
218
|
+
})];
|
|
219
|
+
case 2:
|
|
220
|
+
result = _a.sent();
|
|
221
|
+
newDepot = depot.manager.createRowInsertElements(depot);
|
|
222
|
+
newDepot.manager.depotRefresh(newDepot, { updatedRow: result.productoNuevo, sendedForUpdate: {} });
|
|
223
|
+
newDepot.manager.retrieveRowAndRefresh(newDepot);
|
|
224
|
+
return [2 /*return*/];
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
myOwn.autoSetupFunctions.push(function autoSetupMyTables() {
|
|
232
|
+
TypedControls.showLupa = false;
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
//EJEMPLO GUARDAR
|
|
236
|
+
//my.clientSides.guardar = {
|
|
237
|
+
// update: false,
|
|
238
|
+
// prepare: function (depot, fieldName) {
|
|
239
|
+
// var td = depot.rowControls[fieldName];
|
|
240
|
+
// var boton = html.button({},'guardar').create();
|
|
241
|
+
// td.appendChild(boton);
|
|
242
|
+
// td.onclick=async function(){
|
|
243
|
+
// var pkValues = {};
|
|
244
|
+
// pkValues['codigo']=depot.rowControls['codigo'].getTypedValue();
|
|
245
|
+
// var result = await my.ajax.object_get({
|
|
246
|
+
// tablename: 'clientes',
|
|
247
|
+
// pk_values: pkValues,
|
|
248
|
+
// });
|
|
249
|
+
// result.cuit_dni = '12345678';
|
|
250
|
+
// result.mail = 'manuel@123.com';
|
|
251
|
+
// var result2 = await my.ajax.object_save({
|
|
252
|
+
// tablename: 'clientes',
|
|
253
|
+
// datos: result,
|
|
254
|
+
// });
|
|
255
|
+
// console.log(result2);
|
|
256
|
+
// }
|
|
257
|
+
// },
|
|
258
|
+
//}
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSx5Q0FBeUM7SUFDekMsNkJBQStCO0lBQy9CLDhDQUFnRDtJQUVoRCx1REFBd0Q7SUFHeEQsSUFBSSxFQUFFLEdBQUMsS0FBSyxDQUFDO0lBRWIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUMsVUFBUyxXQUFXO1FBQ3ZDLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFFLENBQUM7UUFDekQsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsT0FBYztZQUM5QyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFXLE9BQU8sQ0FBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEtBQUssR0FBRyxpQkFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxrQkFBVyxPQUFPLENBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUM7SUFFRixFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRztRQUN4QixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxVQUFVLEtBQUssRUFBRSxTQUFTO1lBQy9CLElBQUksRUFBRSxHQUFHLEtB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LFFBQVEsRUFBQyxFQUFDLFVBQVUsRUFBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO2dDQUM5RixRQUFRLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFBOzs7OzthQUNuRCxDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUE7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsaUJBQWlCO1FBQ3BELGFBQWEsQ0FBQyxRQUFRLEdBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDOztBQUVILGlCQUFpQjtBQUNqQiw0QkFBNEI7QUFDNUIsb0JBQW9CO0FBQ3BCLDRDQUE0QztBQUM1QyxnREFBZ0Q7QUFDaEQseURBQXlEO0FBQ3pELGdDQUFnQztBQUNoQyxzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLDZFQUE2RTtBQUM3RSxxREFBcUQ7QUFDckQsd0NBQXdDO0FBQ3hDLHNDQUFzQztBQUN0QyxpQkFBaUI7QUFDakIsMkNBQTJDO0FBQzNDLDZDQUE2QztBQUM3Qyx1REFBdUQ7QUFDdkQsd0NBQXdDO0FBQ3hDLGdDQUFnQztBQUNoQyxpQkFBaUI7QUFDakIsbUNBQW1DO0FBQ25DLFdBQVc7QUFDWCxRQUFRO0FBQ1IsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHRtbCwgSHRtbFRhZ30gZnJvbSBcImpzLXRvLWh0bWxcIjtcclxuaW1wb3J0ICogYXMgbXlPd24gZnJvbSBcIm15T3duXCI7XHJcbmltcG9ydCAqIGFzIFR5cGVkQ29udHJvbHMgZnJvbSBcInR5cGVkLWNvbnRyb2xzXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgeyBTVE9SQUdFX1NUQVRFX05BTUUgfSBmcm9tIFwiLi9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZVwiO1xyXG5cclxudmFyIG15PW15T3duO1xyXG5cclxubXlPd24ud1NjcmVlbnMudGFibGVybz1mdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5oMShgVGFibGVybyBkZSBjb250cm9sYCkuY3JlYXRlKCkpO1xyXG4gICAgWyd2ZW5jaWRvcycsICdwZW5kaWVudGVzJ10uZm9yRWFjaCgoZWxlbWVudDpzdHJpbmcpPT57XHJcbiAgICAgICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChodG1sLmgyKGBQZWRpZG9zICR7ZWxlbWVudH1gKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgdmFyIG15RGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgICAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKG15RGl2KTtcclxuICAgICAgICBteS50YWJsZUdyaWQoYHBlZGlkb3NfJHtlbGVtZW50fWAsbXlEaXYse30pO1xyXG4gICAgfSlcclxufTtcclxuXHJcbm15LmNsaWVudFNpZGVzLnZlckNsaWVudGUgPSB7XHJcbiAgICB1cGRhdGU6IGZhbHNlLFxyXG4gICAgcHJlcGFyZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKHt9LCd2ZXInKS5jcmVhdGUoKTtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBkZXNwbGVnYXJDbGllbnRlKGRlcG90KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59XHJcblxyXG5mdW5jdGlvbiBjb2xvcmVhckVzdGFkbyhkZXBvdCxwZWRpZG9PcHJlc3VwdWVzdG9TdHJpbmc6J3BlZGlkbyd8J3ByZXN1cHVlc3RvJyApe1xyXG4gICAgZGVwb3Qucm93Q29udHJvbHNbJ2VzdGFkbyddLnN0eWxlLmJhY2tncm91bmRDb2xvcj1kZXBvdC5yb3dDb250cm9sc1tgZXN0YWRvc18ke3BlZGlkb09wcmVzdXB1ZXN0b1N0cmluZ31fX2NvbG9yYF0uZ2V0VHlwZWRWYWx1ZSgpO1xyXG59XHJcblxyXG5teS5jbGllbnRTaWRlcy5hY2Npb25lc1ByZXN1cHVlc3RvID0ge1xyXG4gICAgcHJlcGFyZTogKCk9Pm51bGwsXHJcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIChkZXBvdCwgZmllbGROYW1lKSB7XHJcbiAgICAgICAgbGV0IHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgICAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgY29sb3JlYXJFc3RhZG8oZGVwb3QsICdwcmVzdXB1ZXN0bycpO1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncHJlc3VwdWVzdG8nLCBuYW1lOmBnZXN0aW9uYXIscHJlc3VwdWVzdG9gICwgbGFiZWw6XCJhYnJpclwifSwge30pO1xyXG4gICAgICAgIGJvdG9uLmhyZWYgPSBib3Rvbi5ocmVmICsgJyYnKyAncHJlc3VwdWVzdG8nKyc9JytkZXBvdC5yb3cucHJlc3VwdWVzdG8udG9TdHJpbmcoKVxyXG4gICAgICAgIHRkLmFwcGVuZENoaWxkKGJvdG9uKTtcclxuICAgICAgICBsZXQgcHVlZGVFZGl0YXJQcmVzdXB1ZXN0byA9IGRlcG90LnJvd0NvbnRyb2xzWydlc3RhZG9zX3ByZXN1cHVlc3RvX19wZXJtaXRlX2VkaXRhciddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICBpZihwdWVkZUVkaXRhclByZXN1cHVlc3RvKXtcclxuICAgICAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTonZ2VzdGlvbmFyLHBlZGlkbycsIGxhYmVsOlwiYWNlcHRhclwifSwge30pO1xyXG4gICAgICAgICAgICBib3Rvbi5ocmVmID0gYm90b24uaHJlZiArICcmcHJlc3VwdWVzdG89JytkZXBvdC5yb3dbJ3ByZXN1cHVlc3RvJ10udG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwcmVzdXB1ZXN0byA9IGRlcG90LnJvd0NvbnRyb2xzWydwcmVzdXB1ZXN0byddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICBbJ2FudWxhcicsICdyZWNoYXphciddLmZvckVhY2goKGFjY2lvbik9PntcclxuICAgICAgICAgICAgaWYocHVlZGVFZGl0YXJQcmVzdXB1ZXN0byl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYm90b24gPSBodG1sLmJ1dHRvbih7fSxhY2Npb24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgYm90b24ub25jbGljayA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29uZmlybVByb21pc2UoYMK/ZXN0w6EgcG9yICR7YWNjaW9ufSBlbCBwcmVzdXB1ZXN0bz8gRXN0YSBhY2Npw7NuIG5vIHNlIHBvZHLDoSBkZXNoYWNlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbXkuYWpheFtgcHJlc3VwdWVzdG9fJHthY2Npb259YF0oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3VwdWVzdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxufVxyXG5cclxubXkuY2xpZW50U2lkZXMuYWNjaW9uZXNQZWRpZG8gPSB7XHJcbiAgICBwcmVwYXJlOiAoKT0+bnVsbCxcclxuICAgIHVwZGF0ZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuICAgICAgICBsZXQgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgICAgICBjb2xvcmVhckVzdGFkbyhkZXBvdCwgJ3BlZGlkbycpO1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTpgZ2VzdGlvbmFyLHBlZGlkb2AgLCBsYWJlbDpcImFicmlyXCJ9LCB7fSk7XHJcbiAgICAgICAgYm90b24uaHJlZiA9IGJvdG9uLmhyZWYgKyAnJicrICdwZWRpZG8nKyc9JytkZXBvdC5yb3cucGVkaWRvLnRvU3RyaW5nKClcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICB9XHJcbn1cclxuXHJcbm15T3duLndTY3JlZW5zLnByZXN1cHVlc3Rvcz1mdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIHZhciBteURpdiA9IGh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBsZXQgYm90b24gPSBteS5jcmVhdGVGb3JrZWFibGVCdXR0b24oe21lbnVUeXBlOidwcmVzdXB1ZXN0bycsIG5hbWU6J2dlc3Rpb25hcixwcmVzdXB1ZXN0bycsIGxhYmVsOidudWV2byd9LHt9KTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChteURpdik7XHJcbiAgICBib3Rvbi5vbmNsaWNrPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgbXkucmVtb3ZlU2Vzc2lvblZhcihTVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgfVxyXG4gICAgbXkudGFibGVHcmlkKCdwcmVzdXB1ZXN0b3MnLG15RGl2LHt9KTtcclxufTtcclxuXHJcbm15T3duLndTY3JlZW5zLnBlZGlkb3M9ZnVuY3Rpb24oX2FkZHJQYXJhbXMpe1xyXG4gICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICB2YXIgbXlEaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpO1xyXG4gICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTonZ2VzdGlvbmFyLHBlZGlkbycsIGxhYmVsOidudWV2byd9LHt9KTtcclxuICAgIC8vdmFyIGJvdG9uID0gaHRtbC5idXR0b24oe30sJ251ZXZvJykuY3JlYXRlKCk7XHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKGJvdG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQobXlEaXYpO1xyXG4gICAgYm90b24ub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgIG15LnJlbW92ZVNlc3Npb25WYXIoU1RPUkFHRV9TVEFURV9OQU1FKTtcclxuICAgICAgICAvL2hpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIG51bGwsIGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yKydpPWdlc3Rpb25hcixwZWRpZG8nKTtcclxuICAgICAgICAvL215LnNob3dQYWdlKCk7XHJcbiAgICB9XHJcbiAgICBteS50YWJsZUdyaWQoJ3BlZGlkb3MnLG15RGl2LHt9KTtcclxufTtcclxuXHJcbnZhciB2YWxpZGF0ZUhleGFDb2xvcj0oc3RyaW5nOnN0cmluZyk9PiAvXiNbMC05QS1GXXs2fSQvaS50ZXN0KHN0cmluZyk7XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5wYXJzZWFyQ29sb3I9e1xyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbXlDb2xvciA9IGRlcG90LnJvd0NvbnRyb2xzWydjb2xvciddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICB2YXIgaXNWYWxpZENvbG9yPXZhbGlkYXRlSGV4YUNvbG9yKG15Q29sb3IpO1xyXG4gICAgICAgIGlmKG15Q29sb3IgJiYgIWlzVmFsaWRDb2xvcil7XHJcbiAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShcImNvbG9yIGludsOhbGlkbyFcIik7XHJcbiAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzWydjb2xvciddLnNldFR5cGVkVmFsdWUobnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjb2xvcklucHV0ID0gaHRtbC5pbnB1dCh7dHlwZTpcImNvbG9yXCIsIHZhbHVlOmlzVmFsaWRDb2xvcj9teUNvbG9yOicjZmZmZmZmJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgIGNvbG9ySW5wdXQub25jaGFuZ2U9KCk9PntcclxuICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbJ2NvbG9yJ10uc2V0VHlwZWRWYWx1ZShjb2xvcklucHV0LnZhbHVlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5hcHBlbmRDaGlsZChjb2xvcklucHV0KTtcclxuICAgIH0sXHJcbiAgICBwcmVwYXJlOiAoZGVwb3QsIGZpZWxkTmFtZSk9Pnt9XHJcbn1cclxuXHJcbm15LmNsaWVudFNpZGVzLmNsb25hclByb2R1Y3RvID0ge1xyXG4gICAgdXBkYXRlOiBmYWxzZSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdCwgZmllbGROYW1lKSB7XHJcbiAgICAgICAgdmFyIHtwcm9kdWN0bywgbm9tYnJlfSA9IGRlcG90LnJvdztcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKHt9LCdjbG9uYXInKS5jcmVhdGUoKTtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBhd2FpdCBjb25maXJtUHJvbWlzZShgY29uZmlybWEgY2xvbmFkbyBkZSBwcm9kdWN0byAoJHtwcm9kdWN0b30pIFwiJHtub21icmV9XCI/YCk7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBteS5hamF4LnByb2R1Y3RvX2Nsb25hcih7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0byxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBuZXdEZXBvdCA9IGRlcG90Lm1hbmFnZXIuY3JlYXRlUm93SW5zZXJ0RWxlbWVudHMoZGVwb3QpO1xyXG4gICAgICAgICAgICBuZXdEZXBvdC5tYW5hZ2VyLmRlcG90UmVmcmVzaChuZXdEZXBvdCx7dXBkYXRlZFJvdzpyZXN1bHQucHJvZHVjdG9OdWV2bywgc2VuZGVkRm9yVXBkYXRlOnt9fSk7XHJcbiAgICAgICAgICAgIG5ld0RlcG90Lm1hbmFnZXIucmV0cmlldmVSb3dBbmRSZWZyZXNoKG5ld0RlcG90KSAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbn1cclxuXHJcbm15T3duLmF1dG9TZXR1cEZ1bmN0aW9ucy5wdXNoKGZ1bmN0aW9uIGF1dG9TZXR1cE15VGFibGVzKCl7XHJcbiAgICBUeXBlZENvbnRyb2xzLnNob3dMdXBhPWZhbHNlO1xyXG59KTtcclxuXHJcbi8vRUpFTVBMTyBHVUFSREFSXHJcbi8vbXkuY2xpZW50U2lkZXMuZ3VhcmRhciA9IHtcclxuLy8gICAgdXBkYXRlOiBmYWxzZSxcclxuLy8gICAgcHJlcGFyZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuLy8gICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbi8vICAgICAgICB2YXIgYm90b24gPSBodG1sLmJ1dHRvbih7fSwnZ3VhcmRhcicpLmNyZWF0ZSgpO1xyXG4vLyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4vLyAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4vLyAgICAgICAgICAgIHZhciBwa1ZhbHVlcyA9IHt9O1xyXG4vLyAgICAgICAgICAgIHBrVmFsdWVzWydjb2RpZ28nXT1kZXBvdC5yb3dDb250cm9sc1snY29kaWdvJ10uZ2V0VHlwZWRWYWx1ZSgpO1xyXG4vLyAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBteS5hamF4Lm9iamVjdF9nZXQoe1xyXG4vLyAgICAgICAgICAgICAgICB0YWJsZW5hbWU6ICdjbGllbnRlcycsXHJcbi8vICAgICAgICAgICAgICAgIHBrX3ZhbHVlczogcGtWYWx1ZXMsXHJcbi8vICAgICAgICAgICAgfSk7XHJcbi8vICAgICAgICAgICAgcmVzdWx0LmN1aXRfZG5pID0gJzEyMzQ1Njc4JztcclxuLy8gICAgICAgICAgICByZXN1bHQubWFpbCA9ICdtYW51ZWxAMTIzLmNvbSc7XHJcbi8vICAgICAgICAgICAgdmFyIHJlc3VsdDIgPSBhd2FpdCBteS5hamF4Lm9iamVjdF9zYXZlKHtcclxuLy8gICAgICAgICAgICAgICAgdGFibGVuYW1lOiAnY2xpZW50ZXMnLFxyXG4vLyAgICAgICAgICAgICAgICBkYXRvczogcmVzdWx0LFxyXG4vLyAgICAgICAgICAgIH0pO1xyXG4vLyAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdDIpO1xyXG4vLyAgICAgICAgfVxyXG4vLyAgICB9LFxyXG4vL30iXX0=
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ver client.ts
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdmVyIGNsaWVudC50cyJdfQ==
|