@form-create/component-antdv-group 2.5.9 → 3.0.0-alpha.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/dist/index.esm.js +486 -0
- package/dist/index.esm.min.js +7 -0
- package/dist/index.js +493 -8
- package/dist/index.min.js +7 -0
- package/package.json +24 -7
- package/src/component.jsx +69 -75
- package/dist/index.js.map +0 -1
package/src/component.jsx
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {hasProperty} from '@form-create/utils/lib/type';
|
|
2
|
+
import {defineComponent, markRaw} from 'vue';
|
|
3
|
+
import {PlusCircleOutlined, MinusCircleOutlined} from '@ant-design/icons-vue';
|
|
2
4
|
|
|
3
5
|
const NAME = 'fcGroup';
|
|
4
6
|
|
|
5
|
-
export default {
|
|
7
|
+
export default defineComponent({
|
|
6
8
|
name: NAME,
|
|
7
9
|
props: {
|
|
8
10
|
field: String,
|
|
9
|
-
rule:
|
|
10
|
-
rules: Array,
|
|
11
|
+
rule: Array,
|
|
11
12
|
expand: Number,
|
|
12
13
|
options: Object,
|
|
13
|
-
formCreate: Object,
|
|
14
14
|
button: {
|
|
15
15
|
type: Boolean,
|
|
16
16
|
default: true
|
|
@@ -23,7 +23,7 @@ export default {
|
|
|
23
23
|
type: Number,
|
|
24
24
|
default: 0
|
|
25
25
|
},
|
|
26
|
-
|
|
26
|
+
modelValue: {
|
|
27
27
|
type: Array,
|
|
28
28
|
default: () => []
|
|
29
29
|
},
|
|
@@ -50,24 +50,16 @@ export default {
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
},
|
|
53
|
+
inject: ['formCreateInject'],
|
|
53
54
|
data() {
|
|
54
55
|
return {
|
|
55
56
|
len: 0,
|
|
56
57
|
cacheRule: {},
|
|
57
58
|
cacheValue: {},
|
|
59
|
+
form: markRaw(this.formCreateInject.form.$form())
|
|
58
60
|
}
|
|
59
61
|
},
|
|
60
|
-
|
|
61
|
-
formRule() {
|
|
62
|
-
if (this.rule) {
|
|
63
|
-
return Array.isArray(this.rule) ? this.rule : [this.rule];
|
|
64
|
-
}
|
|
65
|
-
if (this.rules) {
|
|
66
|
-
return this.rules;
|
|
67
|
-
}
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
|
-
},
|
|
62
|
+
emits: ['update:modelValue', 'change', 'itemMounted', 'remove'],
|
|
71
63
|
watch: {
|
|
72
64
|
disabled(n) {
|
|
73
65
|
if (this.syncDisabled) {
|
|
@@ -78,32 +70,35 @@ export default {
|
|
|
78
70
|
}
|
|
79
71
|
},
|
|
80
72
|
expand(n) {
|
|
81
|
-
let d = n - this.
|
|
73
|
+
let d = n - this.modelValue.length;
|
|
82
74
|
if (d > 0) {
|
|
83
75
|
this.expandRule(d);
|
|
84
76
|
}
|
|
85
77
|
},
|
|
86
|
-
|
|
87
|
-
n
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
78
|
+
modelValue: {
|
|
79
|
+
handler(n) {
|
|
80
|
+
n = n || [];
|
|
81
|
+
let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;
|
|
82
|
+
if (len < 0) {
|
|
83
|
+
for (let i = len; i < 0; i++) {
|
|
84
|
+
this.addRule(n.length + i);
|
|
85
|
+
}
|
|
86
|
+
for (let i = 0; i < total; i++) {
|
|
87
|
+
this.setValue(keys[i], n[i]);
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
if (len > 0) {
|
|
91
|
+
for (let i = 0; i < len; i++) {
|
|
92
|
+
this.removeRule(keys[total - i - 1]);
|
|
93
|
+
}
|
|
94
|
+
this.subForm();
|
|
100
95
|
}
|
|
101
|
-
|
|
96
|
+
n.forEach((val, i) => {
|
|
97
|
+
this.setValue(keys[i], n[i]);
|
|
98
|
+
});
|
|
102
99
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
});
|
|
106
|
-
}
|
|
100
|
+
},
|
|
101
|
+
deep: true,
|
|
107
102
|
}
|
|
108
103
|
},
|
|
109
104
|
methods: {
|
|
@@ -114,7 +109,7 @@ export default {
|
|
|
114
109
|
this.cacheValue[k] = JSON.stringify(val);
|
|
115
110
|
},
|
|
116
111
|
input(value) {
|
|
117
|
-
this.$emit('
|
|
112
|
+
this.$emit('update:modelValue', value);
|
|
118
113
|
this.$emit('change', value);
|
|
119
114
|
},
|
|
120
115
|
formData(key, formData) {
|
|
@@ -132,7 +127,7 @@ export default {
|
|
|
132
127
|
this.input(value);
|
|
133
128
|
},
|
|
134
129
|
setValue(key, value) {
|
|
135
|
-
const field = this.field
|
|
130
|
+
const field = this.field
|
|
136
131
|
if (field) {
|
|
137
132
|
value = {[field]: this._value(value)};
|
|
138
133
|
}
|
|
@@ -140,16 +135,14 @@ export default {
|
|
|
140
135
|
return;
|
|
141
136
|
}
|
|
142
137
|
this.cache(key, value);
|
|
143
|
-
$f.coverValue(value || {});
|
|
144
138
|
},
|
|
145
139
|
addRule(i, emit) {
|
|
146
|
-
const rule = this
|
|
140
|
+
const rule = this.formCreateInject.form.copyRules(this.rule || []);
|
|
147
141
|
const options = this.options ? {...this.options} : {
|
|
148
142
|
submitBtn: false,
|
|
149
143
|
resetBtn: false,
|
|
150
144
|
};
|
|
151
|
-
|
|
152
|
-
this.$set(this.cacheRule, ++this.len, {rule, options});
|
|
145
|
+
this.cacheRule[++this.len] = {rule, options};
|
|
153
146
|
if (emit) {
|
|
154
147
|
this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));
|
|
155
148
|
}
|
|
@@ -165,44 +158,45 @@ export default {
|
|
|
165
158
|
});
|
|
166
159
|
},
|
|
167
160
|
subForm() {
|
|
168
|
-
this
|
|
161
|
+
this.formCreateInject.subForm(Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));
|
|
169
162
|
},
|
|
170
163
|
removeRule(key, emit) {
|
|
171
164
|
const index = Object.keys(this.cacheRule).indexOf(key);
|
|
172
|
-
|
|
173
|
-
|
|
165
|
+
delete this.cacheRule[key];
|
|
166
|
+
delete this.cacheValue[key];
|
|
174
167
|
if (emit) {
|
|
175
168
|
this.$nextTick(() => this.$emit('remove', index));
|
|
176
169
|
}
|
|
177
170
|
},
|
|
178
|
-
add(
|
|
179
|
-
if (this.disabled || false === this.onBeforeAdd(this.
|
|
171
|
+
add() {
|
|
172
|
+
if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {
|
|
180
173
|
return;
|
|
181
174
|
}
|
|
182
|
-
this.
|
|
175
|
+
this.modelValue.push(this.field ? null : {});
|
|
176
|
+
this.$emit('update:modelValue', this.modelValue);
|
|
183
177
|
},
|
|
184
178
|
del(index, key) {
|
|
185
|
-
if (this.disabled || false === this.onBeforeRemove(this.
|
|
179
|
+
if (this.disabled || false === this.onBeforeRemove(this.modelValue, index)) {
|
|
186
180
|
return;
|
|
187
181
|
}
|
|
188
182
|
this.removeRule(key, true);
|
|
189
183
|
this.subForm();
|
|
190
|
-
this.
|
|
191
|
-
this.input(this.
|
|
184
|
+
this.modelValue.splice(index, 1);
|
|
185
|
+
this.input(this.modelValue);
|
|
192
186
|
},
|
|
193
187
|
addIcon(key) {
|
|
194
|
-
return <
|
|
188
|
+
return <PlusCircleOutlined key={`a${key}`}
|
|
195
189
|
style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}
|
|
196
|
-
|
|
190
|
+
onClick={this.add}/>;
|
|
197
191
|
},
|
|
198
192
|
delIcon(index, key) {
|
|
199
|
-
return <
|
|
193
|
+
return <MinusCircleOutlined key={`d${key}`}
|
|
200
194
|
style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}
|
|
201
|
-
|
|
195
|
+
onClick={() => this.del(index, key)}/>;
|
|
202
196
|
},
|
|
203
197
|
makeIcon(total, index, key) {
|
|
204
|
-
if (this.$
|
|
205
|
-
return this.$
|
|
198
|
+
if (this.$slots.button) {
|
|
199
|
+
return this.$slots.button({
|
|
206
200
|
total,
|
|
207
201
|
index,
|
|
208
202
|
vm: this,
|
|
@@ -223,44 +217,44 @@ export default {
|
|
|
223
217
|
},
|
|
224
218
|
expandRule(n) {
|
|
225
219
|
for (let i = 0; i < n; i++) {
|
|
226
|
-
this.
|
|
220
|
+
this.modelValue.push(this.field ? null : {});
|
|
227
221
|
}
|
|
228
222
|
}
|
|
229
223
|
},
|
|
230
224
|
created() {
|
|
231
|
-
const d = (this.expand || 0) - this.
|
|
225
|
+
const d = (this.expand || 0) - this.modelValue.length;
|
|
232
226
|
if (d > 0) {
|
|
233
227
|
this.expandRule(d);
|
|
234
228
|
}
|
|
235
|
-
for (let i = 0; i < this.
|
|
229
|
+
for (let i = 0; i < this.modelValue.length; i++) {
|
|
236
230
|
this.addRule(i);
|
|
237
231
|
}
|
|
238
232
|
},
|
|
239
233
|
render() {
|
|
240
234
|
const keys = Object.keys(this.cacheRule);
|
|
241
235
|
const button = this.button;
|
|
236
|
+
const Type = this.form;
|
|
242
237
|
return keys.length === 0 ?
|
|
243
|
-
(this.$
|
|
238
|
+
(this.$slots.default ? (this.$slots.default({
|
|
244
239
|
vm: this,
|
|
245
240
|
add: this.add
|
|
246
|
-
})) : <
|
|
241
|
+
})) : <PlusCircleOutlined key={'a_def'}
|
|
247
242
|
style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}
|
|
248
|
-
|
|
243
|
+
onClick={this.add}/>) :
|
|
249
244
|
<div key={'con'}>{keys.map((key, index) => {
|
|
250
245
|
const {rule, options} = this.cacheRule[key];
|
|
251
|
-
return <
|
|
252
|
-
style="border-bottom:1px dashed #
|
|
253
|
-
<
|
|
246
|
+
return <aRow align="middle" type="flex" key={key}
|
|
247
|
+
style="border-bottom:1px dashed #DCDFE6;margin-bottom:10px;">
|
|
248
|
+
<aCol span={button ? 20 : 24}><Type
|
|
254
249
|
key={key}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}}
|
|
250
|
+
onUpdate:modelValue={(formData) => this.formData(key, formData)}
|
|
251
|
+
modelValue={this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index]}
|
|
252
|
+
onEmit-event={(name, ...args) => this.emitEvent(name, args, index, key)}
|
|
253
|
+
onUpdate:api={($f) => this.add$f(index, key, $f)}
|
|
260
254
|
rule={rule}
|
|
261
|
-
option={options} extendOption={true}/></
|
|
262
|
-
{button ? <
|
|
263
|
-
</
|
|
255
|
+
option={options} extendOption={true}/></aCol>
|
|
256
|
+
{button ? <aCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</aCol> : null}
|
|
257
|
+
</aRow>
|
|
264
258
|
})}</div>
|
|
265
259
|
}
|
|
266
|
-
}
|
|
260
|
+
});
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../src/component.jsx","../../../../packages/utils/lib/type.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreate: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n }\n },\n computed: {\n formRule() {\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n if (this.rules) {\n return this.rules;\n }\n return [];\n }\n },\n watch: {\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.$formCreate.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.subForm();\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.$emit('fc.sub-form', Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value)) {\n return;\n }\n this.removeRule(key, true);\n this.subForm();\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <AIcon key={`a${key}`} type=\"plus-circle\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>;\n },\n delIcon(index, key) {\n return <AIcon key={`d${key}`} type=\"minus-circle\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (index >= this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <AIcon key={'a_def'} type=\"plus-circle\"\n style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}\n on-click={this.add}/>) :\n <div key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <ARow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #d9d9d9;margin-bottom:10px;\">\n <ACol span={button ? 20 : 24}><FormCreate\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n rule={rule}\n option={options} extendOption={true}/></ACol>\n {button ? <ACol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ACol> : null}\n </ARow>\n })}</div>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n }\n};\n\n['Date', 'Object', 'Function', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeFn","reduce","indexOf","Array","e","concat","f","g","h","i","name","props","field","String","rule","rules","expand","Number","options","formCreate","button","type","Boolean","max","min","value","disabled","syncDisabled","fontSize","onBeforeRemove","Function","onBeforeAdd","data","len","cacheRule","cacheValue","computed","formRule","isArray","watch","n","lst","keys","forEach","k","$f","expandRule","total","addRule","setValue","removeRule","subForm","val","_this","methods","_value","v","cache","JSON","stringify","input","$emit","formData","key","filter","map","_this2","form","coverValue","emit","$formCreate","copyRules","submitBtn","resetBtn","$set","$nextTick","_this3","add$f","_this4","_this5","index","$delete","_this6","add","del","splice","addIcon","delIcon","_this7","makeIcon","$scopedSlots","vm","_this8","emitEvent","args","push","created","render","_this9"],"mappings":"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"}
|