@bigbinary/neeto-rules-frontend 2.5.56 → 2.5.57
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/dist/.ready +1 -1
- package/dist/NeetoRulesForm.js +67 -162
- package/dist/NeetoRulesForm.js.map +1 -1
- package/dist/cjs/NeetoRulesForm.js +10 -105
- package/dist/cjs/NeetoRulesForm.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/v2/CannedResponsesPane.js +396 -0
- package/dist/cjs/v2/CannedResponsesPane.js.map +1 -0
- package/dist/cjs/v2/NeetoRules.js +486 -0
- package/dist/cjs/v2/NeetoRules.js.map +1 -0
- package/dist/cjs/v2/NeetoRulesForm.js +6818 -0
- package/dist/cjs/v2/NeetoRulesForm.js.map +1 -0
- package/dist/cjs/v2/RulePreview.js +513 -0
- package/dist/cjs/v2/RulePreview.js.map +1 -0
- package/dist/cjs/v2/RulesReorder.js +24 -0
- package/dist/cjs/v2/RulesReorder.js.map +1 -0
- package/dist/cjs/v2/constants.js +8 -0
- package/dist/cjs/v2/constants.js.map +1 -0
- package/dist/cjs/v2/hooks.js +15 -0
- package/dist/cjs/v2/hooks.js.map +1 -0
- package/dist/cjs/v2/index.js +86 -0
- package/dist/cjs/v2/index.js.map +1 -0
- package/dist/constants-CYdcft3h.js +53 -0
- package/dist/constants-CYdcft3h.js.map +1 -0
- package/dist/constants-dLBadaIU.js +60 -0
- package/dist/constants-dLBadaIU.js.map +1 -0
- package/dist/index-BBcadHIi.js +208 -0
- package/dist/index-BBcadHIi.js.map +1 -0
- package/dist/index-CSnQp41c.js +211 -0
- package/dist/index-CSnQp41c.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/useCustomDataStore-D7hl6nev.js +74 -0
- package/dist/useCustomDataStore-D7hl6nev.js.map +1 -0
- package/dist/useCustomDataStore-DipT25Pg.js +77 -0
- package/dist/useCustomDataStore-DipT25Pg.js.map +1 -0
- package/dist/useDebouncedUpdate-6Ibug5MF.js +108 -0
- package/dist/useDebouncedUpdate-6Ibug5MF.js.map +1 -0
- package/dist/useDebouncedUpdate-BcPAGgg7.js +103 -0
- package/dist/useDebouncedUpdate-BcPAGgg7.js.map +1 -0
- package/dist/useUtilityStore-BBb39TOj.js +53 -0
- package/dist/useUtilityStore-BBb39TOj.js.map +1 -0
- package/dist/useUtilityStore-DkxAexDw.js +55 -0
- package/dist/useUtilityStore-DkxAexDw.js.map +1 -0
- package/dist/v2/CannedResponsesPane.js +394 -0
- package/dist/v2/CannedResponsesPane.js.map +1 -0
- package/dist/v2/NeetoRules.js +484 -0
- package/dist/v2/NeetoRules.js.map +1 -0
- package/dist/v2/NeetoRulesForm.js +6797 -0
- package/dist/v2/NeetoRulesForm.js.map +1 -0
- package/dist/v2/RulePreview.js +511 -0
- package/dist/v2/RulePreview.js.map +1 -0
- package/dist/v2/RulesReorder.js +18 -0
- package/dist/v2/RulesReorder.js.map +1 -0
- package/dist/v2/constants.js +2 -0
- package/dist/v2/constants.js.map +1 -0
- package/dist/v2/hooks.js +8 -0
- package/dist/v2/hooks.js.map +1 -0
- package/dist/v2/index.js +74 -0
- package/dist/v2/index.js.map +1 -0
- package/package.json +26 -14
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
|
|
5
|
+
var useDebouncedUpdate = require('../useDebouncedUpdate-6Ibug5MF.js');
|
|
5
6
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
6
7
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
8
|
var shallow = require('zustand/shallow');
|
|
@@ -95,11 +96,6 @@ function _interopNamespaceDefault(e) {
|
|
|
95
96
|
|
|
96
97
|
var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
|
|
97
98
|
|
|
98
|
-
var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=true===r.prepend?"prepend":"append",d=true===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
|
|
99
|
-
|
|
100
|
-
var css = ".neeto-rules-main-content__container{height:100dvh!important}.neeto-rules-main-card .neeto-ui-btn.underline{text-align:start}.neeto-rules-side-panel{flex-grow:0;flex-shrink:0}.neeto-rules-side-panel--small{width:320px}.neeto-rules-side-panel--large{width:380px}@media (min-width:1024px){.neeto-rules-side-panel--small{width:380px}.neeto-rules-side-panel--large{width:480px}}.neeto-rules-json-editor__wrapper{height:35vh;padding-bottom:2rem;position:relative}.neeto-rules-json-editor__editor{height:100%}.neeto-rules-json-editor__dynamic-variables{inset-inline-end:1rem;position:absolute;top:1rem;z-index:10}[data-tippy-root]{z-index:99999!important}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2xheW91dC5jc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9wYW5lLmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2pzb24tZWRpdG9yLmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2Ryb3Bkb3duLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDRSx1QkFDRixDQUVBLCtDQUNFLGdCQUNGLENDTkEsd0JBRUUsV0FBWSxDQURaLGFBRUYsQ0FFQSwrQkFDRSxXQUNGLENBRUEsK0JBQ0UsV0FDRixDQUVBLDBCQUNFLCtCQUNFLFdBQ0YsQ0FDQSwrQkFDRSxXQUNGLENBQ0YsQ0NwQkEsa0NBRUUsV0FBWSxDQUNaLG1CQUFvQixDQUZwQixpQkFHRixDQUVBLGlDQUNFLFdBQ0YsQ0FFQSw0Q0FHRSxxQkFBc0IsQ0FGdEIsaUJBQWtCLENBQ2xCLFFBQVMsQ0FFVCxVQUNGLENDZkEsa0JBQ0UsdUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tcnVsZXMtbWFpbi1jb250ZW50X19jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMGR2aCAhaW1wb3J0YW50O1xufVxuXG4ubmVldG8tcnVsZXMtbWFpbi1jYXJkIC5uZWV0by11aS1idG4udW5kZXJsaW5lIHtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG59XG4iLCIubmVldG8tcnVsZXMtc2lkZS1wYW5lbCB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG5cbi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gIHdpZHRoOiAzMjBweDtcbn1cblxuLm5lZXRvLXJ1bGVzLXNpZGUtcGFuZWwtLWxhcmdlIHtcbiAgd2lkdGg6IDM4MHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gICAgd2lkdGg6IDM4MHB4O1xuICB9XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1sYXJnZSB7XG4gICAgd2lkdGg6IDQ4MHB4O1xuICB9XG59XG4iLCIubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX3dyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMzV2aDtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG5cbi5uZWV0by1ydWxlcy1qc29uLWVkaXRvcl9fZWRpdG9yIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX2R5bmFtaWMtdmFyaWFibGVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFyZW07XG4gIGluc2V0LWlubGluZS1lbmQ6IDFyZW07XG4gIHotaW5kZXg6IDEwO1xufVxuIiwiW2RhdGEtdGlwcHktcm9vdF0ge1xuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xufVxuIl19 */";
|
|
101
|
-
n(css,{});
|
|
102
|
-
|
|
103
99
|
var Body = function Body(_ref) {
|
|
104
100
|
var children = _ref.children,
|
|
105
101
|
className = _ref.className;
|
|
@@ -490,55 +486,6 @@ var ActionPanel = function ActionPanel() {
|
|
|
490
486
|
});
|
|
491
487
|
};
|
|
492
488
|
|
|
493
|
-
function isBuffer (obj) {
|
|
494
|
-
return obj &&
|
|
495
|
-
obj.constructor &&
|
|
496
|
-
(typeof obj.constructor.isBuffer === 'function') &&
|
|
497
|
-
obj.constructor.isBuffer(obj)
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
function keyIdentity (key) {
|
|
501
|
-
return key
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
function flatten (target, opts) {
|
|
505
|
-
opts = opts || {};
|
|
506
|
-
|
|
507
|
-
const delimiter = opts.delimiter || '.';
|
|
508
|
-
const maxDepth = opts.maxDepth;
|
|
509
|
-
const transformKey = opts.transformKey || keyIdentity;
|
|
510
|
-
const output = {};
|
|
511
|
-
|
|
512
|
-
function step (object, prev, currentDepth) {
|
|
513
|
-
currentDepth = currentDepth || 1;
|
|
514
|
-
Object.keys(object).forEach(function (key) {
|
|
515
|
-
const value = object[key];
|
|
516
|
-
const isarray = opts.safe && Array.isArray(value);
|
|
517
|
-
const type = Object.prototype.toString.call(value);
|
|
518
|
-
const isbuffer = isBuffer(value);
|
|
519
|
-
const isobject = (
|
|
520
|
-
type === '[object Object]' ||
|
|
521
|
-
type === '[object Array]'
|
|
522
|
-
);
|
|
523
|
-
|
|
524
|
-
const newKey = prev
|
|
525
|
-
? prev + delimiter + transformKey(key)
|
|
526
|
-
: transformKey(key);
|
|
527
|
-
|
|
528
|
-
if (!isarray && !isbuffer && isobject && Object.keys(value).length &&
|
|
529
|
-
(!opts.maxDepth || currentDepth < maxDepth)) {
|
|
530
|
-
return step(value, newKey, currentDepth + 1)
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
output[newKey] = value;
|
|
534
|
-
});
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
step(target);
|
|
538
|
-
|
|
539
|
-
return output
|
|
540
|
-
}
|
|
541
|
-
|
|
542
489
|
var DEFAULT_LONG_TEXT_ROWS = 8;
|
|
543
490
|
|
|
544
491
|
var Target$k = function Target(_ref) {
|
|
@@ -1744,35 +1691,6 @@ var Input = function Input(_ref2) {
|
|
|
1744
1691
|
};
|
|
1745
1692
|
Input.Target = Target$e;
|
|
1746
1693
|
|
|
1747
|
-
var useOnClickOutside = function useOnClickOutside(ref, handler) {
|
|
1748
|
-
react.useEffect(function () {
|
|
1749
|
-
var listener = function listener(event) {
|
|
1750
|
-
// Do nothing if clicking ref's element or descendent elements
|
|
1751
|
-
if (!ref.current || ref.current.contains(event.target)) {
|
|
1752
|
-
return;
|
|
1753
|
-
}
|
|
1754
|
-
handler(event);
|
|
1755
|
-
};
|
|
1756
|
-
document.addEventListener("mousedown", listener);
|
|
1757
|
-
document.addEventListener("touchstart", listener);
|
|
1758
|
-
return function () {
|
|
1759
|
-
document.removeEventListener("mousedown", listener);
|
|
1760
|
-
document.removeEventListener("touchstart", listener);
|
|
1761
|
-
};
|
|
1762
|
-
}, [handler]);
|
|
1763
|
-
};
|
|
1764
|
-
|
|
1765
|
-
var SHORTCUTS = {
|
|
1766
|
-
cancel: {
|
|
1767
|
-
sequence: "escape",
|
|
1768
|
-
description: i18next.t("neetoRules.shortcuts.cancel")
|
|
1769
|
-
},
|
|
1770
|
-
submit: {
|
|
1771
|
-
sequence: "enter",
|
|
1772
|
-
description: i18next.t("neetoRules.shortcuts.submit")
|
|
1773
|
-
}
|
|
1774
|
-
};
|
|
1775
|
-
|
|
1776
1694
|
var _excluded$c = ["value", "nullable", "className", "handleSubmit", "handleCancel"];
|
|
1777
1695
|
function ownKeys$n(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; }
|
|
1778
1696
|
function _objectSpread$n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$n(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -1798,13 +1716,13 @@ var InlineInput = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
|
1798
1716
|
handleSubmit(inputValue);
|
|
1799
1717
|
setInputValue("");
|
|
1800
1718
|
};
|
|
1801
|
-
useOnClickOutside(inputWrapperRef, function () {
|
|
1719
|
+
useDebouncedUpdate.useOnClickOutside(inputWrapperRef, function () {
|
|
1802
1720
|
return handleCancel(inputValue);
|
|
1803
1721
|
});
|
|
1804
|
-
var inputFieldEscapeHotkeyRef = useHotkeys(SHORTCUTS.cancel.sequence, handleCancel, {
|
|
1722
|
+
var inputFieldEscapeHotkeyRef = useHotkeys(useDebouncedUpdate.SHORTCUTS.cancel.sequence, handleCancel, {
|
|
1805
1723
|
mode: "scoped"
|
|
1806
1724
|
});
|
|
1807
|
-
var inputFieldEnterHotkeyRef = useHotkeys(SHORTCUTS.submit.sequence, onSubmit, {
|
|
1725
|
+
var inputFieldEnterHotkeyRef = useHotkeys(useDebouncedUpdate.SHORTCUTS.submit.sequence, onSubmit, {
|
|
1808
1726
|
mode: "scoped"
|
|
1809
1727
|
});
|
|
1810
1728
|
react.useEffect(function () {
|
|
@@ -3237,7 +3155,7 @@ var ActionSubItemPanel = function ActionSubItemPanel() {
|
|
|
3237
3155
|
var header = index ? "".concat(andText, " ").concat(selectedFieldLabel, "...") : "".concat(thenText, " ").concat(selectedFieldLabel, "...");
|
|
3238
3156
|
var ActionChildren = action.children;
|
|
3239
3157
|
var handleContinue = function handleContinue() {
|
|
3240
|
-
Object.keys(flatten(meta.error || {})).forEach(function (path) {
|
|
3158
|
+
Object.keys(useDebouncedUpdate.flatten(meta.error || {})).forEach(function (path) {
|
|
3241
3159
|
setFieldTouched("".concat(name, ".metadata.").concat(path), true, false);
|
|
3242
3160
|
});
|
|
3243
3161
|
!meta.error && resetPanelState();
|
|
@@ -4430,7 +4348,7 @@ var VerbAndValuePanel = function VerbAndValuePanel() {
|
|
|
4430
4348
|
value: logicalOperator.value
|
|
4431
4349
|
}, getLogicalOperatorOptions(isWithEvents))) === null || _findBy2 === void 0 ? void 0 : _findBy2.label;
|
|
4432
4350
|
var handleContinue = function handleContinue() {
|
|
4433
|
-
Object.keys(flatten(valueMeta.error || {})).forEach(function (path) {
|
|
4351
|
+
Object.keys(useDebouncedUpdate.flatten(valueMeta.error || {})).forEach(function (path) {
|
|
4434
4352
|
setFieldTouched("".concat(name, ".metadata.").concat(path), true, false);
|
|
4435
4353
|
});
|
|
4436
4354
|
setVerbTouched(true);
|
|
@@ -4539,7 +4457,7 @@ var DelayPanel = function DelayPanel() {
|
|
|
4539
4457
|
unitRef = _useActiveField2.ref,
|
|
4540
4458
|
setUnitFieldActive = _useActiveField2.setFieldActive;
|
|
4541
4459
|
var handleContinue = function handleContinue() {
|
|
4542
|
-
Object.keys(flatten(meta.error || {})).forEach(function (path) {
|
|
4460
|
+
Object.keys(useDebouncedUpdate.flatten(meta.error || {})).forEach(function (path) {
|
|
4543
4461
|
setFieldTouched("".concat(name, ".value.").concat(path), true, false);
|
|
4544
4462
|
});
|
|
4545
4463
|
!meta.error && resetPanelState();
|
|
@@ -6410,19 +6328,6 @@ var EventConditions = function EventConditions(_ref) {
|
|
|
6410
6328
|
});
|
|
6411
6329
|
};
|
|
6412
6330
|
|
|
6413
|
-
var useDebouncedUpdate = function useDebouncedUpdate(value, setValue) {
|
|
6414
|
-
var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;
|
|
6415
|
-
var _useStateWithDependen = reactUtils.useStateWithDependency(value),
|
|
6416
|
-
_useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
|
|
6417
|
-
text = _useStateWithDependen2[0],
|
|
6418
|
-
setText = _useStateWithDependen2[1];
|
|
6419
|
-
var debouncedValue = reactUtils.useDebounce(text, duration);
|
|
6420
|
-
react.useEffect(function () {
|
|
6421
|
-
setValue(text);
|
|
6422
|
-
}, [debouncedValue]);
|
|
6423
|
-
return [text, setText];
|
|
6424
|
-
};
|
|
6425
|
-
|
|
6426
6331
|
var _excluded$5 = ["data", "name", "label"];
|
|
6427
6332
|
function ownKeys$7(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; }
|
|
6428
6333
|
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -6437,7 +6342,7 @@ var InputField = function InputField(_ref) {
|
|
|
6437
6342
|
field = _useField2[0];
|
|
6438
6343
|
_useField2[1];
|
|
6439
6344
|
var setValue = _useField2[2].setValue;
|
|
6440
|
-
var _useDebouncedUpdate = useDebouncedUpdate(field.value, setValue),
|
|
6345
|
+
var _useDebouncedUpdate = useDebouncedUpdate.useDebouncedUpdate(field.value, setValue),
|
|
6441
6346
|
_useDebouncedUpdate2 = _slicedToArray(_useDebouncedUpdate, 2),
|
|
6442
6347
|
text = _useDebouncedUpdate2[0],
|
|
6443
6348
|
setText = _useDebouncedUpdate2[1];
|
|
@@ -6550,7 +6455,7 @@ var TextareaField = function TextareaField(_ref) {
|
|
|
6550
6455
|
field = _useField2[0];
|
|
6551
6456
|
_useField2[1];
|
|
6552
6457
|
var setValue = _useField2[2].setValue;
|
|
6553
|
-
var _useDebouncedUpdate = useDebouncedUpdate(field.value, setValue),
|
|
6458
|
+
var _useDebouncedUpdate = useDebouncedUpdate.useDebouncedUpdate(field.value, setValue),
|
|
6554
6459
|
_useDebouncedUpdate2 = _slicedToArray(_useDebouncedUpdate, 2),
|
|
6555
6460
|
text = _useDebouncedUpdate2[0],
|
|
6556
6461
|
setText = _useDebouncedUpdate2[1];
|
|
@@ -6691,7 +6596,7 @@ var TouchErrors = function TouchErrors() {
|
|
|
6691
6596
|
isValidating = _useFormikContext.isValidating;
|
|
6692
6597
|
react.useEffect(function () {
|
|
6693
6598
|
if (isSubmitting && !isValidating) {
|
|
6694
|
-
Object.keys(flatten(errors)).forEach(function (path) {
|
|
6599
|
+
Object.keys(useDebouncedUpdate.flatten(errors)).forEach(function (path) {
|
|
6695
6600
|
setFieldTouched(path, true, false);
|
|
6696
6601
|
});
|
|
6697
6602
|
}
|