| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "init": "{ |
| 5 | $nom_AA = 'Portal'; |
| 6 | $versio = '0.1.2'; |
| 7 | |
| 8 | $_AUT_000 = 'C4KIJSUWVM7BGWTLXKX3K4PNRXV7OY4W'; |
| 9 | |
| 10 | $adr__ = trigger.address; |
| 11 | $args = trigger.data; |
| 12 | $idgeto = trigger.output[[ asset != base ]].asset; |
| 13 | $qt = trigger.output[[ asset = $idgeto ]]; |
| 14 | |
| 15 | $generics = var[ 'Generics' ]; |
| 16 | $propostes = var[ 'Propostes' ]; |
| 17 | $validacions = var[ 'Validacions' ]; |
| 18 | $ordinals = var[ 'Ordinals' ]; |
| 19 | $getons = var[ 'Getons' ]; |
| 20 | |
| 21 | |
| 22 | |
| 23 | $_actuant_es_AUT_000 = $adr__ == $_AUT_000; |
| 24 | |
| 25 | $_actuant_es_AUT = |
| 26 | $_actuant_es_AUT_000 AND ! $generics._AUT_0 |
| 27 | OR $adr__ == $generics._AUT_A |
| 28 | OR $adr__ == $generics._AUT_B |
| 29 | OR $adr__ == $generics._AUT_C |
| 30 | OR ( $generics._AUT_0 AND $adr__ == $generics._AUT_0 ); |
| 31 | |
| 32 | |
| 33 | |
| 34 | $__bota = $txt => bounce ( $nom_AA || ' >>> ' || $txt ); |
| 35 | |
| 36 | $__ordinal = $rf => $ordinals[ $rf ] ? $ordinals[ $rf ] + 1 : 1; |
| 37 | |
| 38 | $__idprop = $rf => { |
| 39 | $ordinals[ $rf ] = $__ordinal( $rf ); |
| 40 | $rf || '_' || $ordinals[ $rf ] |
| 41 | }; |
| 42 | |
| 43 | $__data_confirmacio = () => timestamp_to_string( timestamp + $generics.Lapse ); |
| 44 | |
| 45 | |
| 46 | |
| 47 | $__arg = $arg => |
| 48 | $args[ $arg ] otherwise |
| 49 | $__bota( "Cal proporcionar el valor de: " || $arg ); |
| 50 | |
| 51 | |
| 52 | if ( $args.admin ) { |
| 53 | |
| 54 | |
| 55 | if ( $args.admin_geto ) { |
| 56 | $geto = $getons[ $args.id_geto ]; |
| 57 | |
| 58 | $_actuant_es_AUT_geto = |
| 59 | $_actuant_es_AUT AND ! $geto.variables._AUT_0 |
| 60 | OR $adr__ == $geto.constants._AUT_A |
| 61 | OR $adr__ == $geto.variables._AUT_0 |
| 62 | OR $adr__ == $geto.variables._AUT_B |
| 63 | OR $adr__ == $geto.variables._AUT_C; |
| 64 | |
| 65 | |
| 66 | if ( ! $geto OR $geto.estat != 'actiu' ) |
| 67 | { $__bota( 'Getó inexistent o inactiu' ); } |
| 68 | |
| 69 | if ( ! $_actuant_es_AUT_geto ) |
| 70 | { $__bota( 'No autoritzada' ); } |
| 71 | |
| 72 | } else { |
| 73 | |
| 74 | if ( ! $_actuant_es_AUT ) |
| 75 | { $__bota( 'No autoritzada' ); } |
| 76 | |
| 77 | |
| 78 | if ( $args.ref AND $args.ref == 'multiple' AND ! $_actuant_es_AUT_000 ) |
| 79 | { $__bota( 'No autoritzada per a esmena múltiple' ); } |
| 80 | } |
| 81 | |
| 82 | |
| 83 | |
| 84 | if ( ! $_actuant_es_AUT_000 |
| 85 | OR ( $_actuant_es_AUT_000 AND $generics._AUT_0 ) |
| 86 | ) { |
| 87 | if ( $args.tasca == 'confirmacio' ) { |
| 88 | $proposta = $propostes[ $args.idprop ]; |
| 89 | |
| 90 | |
| 91 | if ( ! $proposta ) |
| 92 | { $__bota( "No hi ha cap proposta amb aquesta ref" ); } |
| 93 | |
| 94 | |
| 95 | if ( $proposta.proposant == $adr__ ) |
| 96 | { $__bota( "El procés de confirmació l'ha d'endegar una altra AUT" ); } |
| 97 | |
| 98 | |
| 99 | if ( $generics.Lapse > timestamp - $proposta.temps ) |
| 100 | { $__bota( "Encara no es pot confirmar la proposta" ); } |
| 101 | |
| 102 | |
| 103 | if ( ! $validacions[ $args.idprop ] ) |
| 104 | { $__bota( "La proposta encara no ha estat validada" ); } |
| 105 | |
| 106 | $tasca = 'confirmacio'; |
| 107 | |
| 108 | } else { |
| 109 | |
| 110 | $ref = $__arg( 'ref' ); |
| 111 | $val = $__arg( 'val' ); |
| 112 | |
| 113 | |
| 114 | $sufix = $args.admin_geto ? '_' || $args.id_geto : ''; |
| 115 | $ordinal = $ordinals[ $ref || $sufix ]; |
| 116 | $darrera_prop = $propostes[ $ref || '_' || $ordinal || $sufix ]; |
| 117 | |
| 118 | if ( $darrera_prop AND $darrera_prop.val == $val ) |
| 119 | { $__bota( "El valor proposat coincideix amb el de la darrera proposta" ); } |
| 120 | |
| 121 | $tasca = 'proposta'; |
| 122 | } |
| 123 | } else { |
| 124 | $ref = $__arg( 'ref' ); |
| 125 | $val = $__arg( 'val' ); |
| 126 | $tasca = 'drecera'; } |
| 127 | } |
| 128 | |
| 129 | }", |
| 130 | "messages": { |
| 131 | "cases": [ |
| 132 | { |
| 133 | "if": "{ $args.proces == 'acces' }", |
| 134 | "init": "{ |
| 135 | $args._Portal = this_address; |
| 136 | $args._FOP = $generics._FOP; |
| 137 | $args._Estels = $generics._Estels; |
| 138 | |
| 139 | $args.geto = $idgeto; |
| 140 | $args.qt = $qt; |
| 141 | }", |
| 142 | "messages": [ |
| 143 | { |
| 144 | "app": "data", |
| 145 | "payload": "{ $args }" |
| 146 | }, |
| 147 | { |
| 148 | "app": "payment", |
| 149 | "payload": { |
| 150 | "asset": "{ 'base' }", |
| 151 | "outputs": [ |
| 152 | { |
| 153 | "address": "{ $generics._Acces }", |
| 154 | "amount": "{ $args.qt }" |
| 155 | } |
| 156 | ] |
| 157 | } |
| 158 | } |
| 159 | ] |
| 160 | }, |
| 161 | { |
| 162 | "if": "{ $args.admin AND $args.proces == 'nou_portal' }", |
| 163 | "messages": [ |
| 164 | { |
| 165 | "app": "state", |
| 166 | "state": "{ |
| 167 | $darrer_portal = $__arg( 'val' ); |
| 168 | $dades = { |
| 169 | Generics : var[ $darrer_portal ][ 'Generics' ], |
| 170 | Propostes : var[ $darrer_portal ][ 'Propostes' ], |
| 171 | Validacions : var[ $darrer_portal ][ 'Validacions' ], |
| 172 | Getons : var[ $darrer_portal ][ 'Getons' ], |
| 173 | Ordinals : var[ $darrer_portal ][ 'Ordinals' ], |
| 174 | Alteracions : var[ $darrer_portal ][ 'Alteracions' ], |
| 175 | Darrer_Portal : $darrer_portal |
| 176 | }; |
| 177 | |
| 178 | if ( $tasca == 'drecera' ) { |
| 179 | var[ 'Generics' ] = $dades.Generics; |
| 180 | var[ 'Propostes' ] = $dades.Propostes; |
| 181 | var[ 'Validacions' ] = $dades.Validacions; |
| 182 | var[ 'Getons' ] = $dades.Getons; |
| 183 | var[ 'Ordinals' ] = $dades.Ordinals; |
| 184 | var[ 'Darrer_Portal' ] = $dades.Darrer_Portal; |
| 185 | response[ 'darrer_portal' ] = $darrer_portal; |
| 186 | } |
| 187 | |
| 188 | if ( $tasca == 'confirmacio' ) { |
| 189 | $prop = $propostes[ $args.idprop ]; |
| 190 | var[ 'Generics' ] = $prop.dades.Generics; |
| 191 | var[ 'Propostes' ] = $prop.dades.Propostes; |
| 192 | var[ 'Validacions' ] = $prop.dades.Validacions; |
| 193 | var[ 'Getons' ] = $prop.dades.Getons; |
| 194 | var[ 'Ordinals' ] = $prop.dades.Ordinals; |
| 195 | var[ 'Darrer_Portal' ] = $prop.dades.Darrer_Portal; |
| 196 | response[ 'proposta' ] = $args.idprop; |
| 197 | } |
| 198 | if ( $tasca == 'proposta' ) { |
| 199 | $idprop = $__idprop( $args.proces ); |
| 200 | |
| 201 | $propostes[ $idprop ] = |
| 202 | { |
| 203 | dades: $dades, |
| 204 | proposant: $adr__, |
| 205 | temps: timestamp, |
| 206 | }; |
| 207 | var[ 'Propostes' ] = $propostes; |
| 208 | var[ 'Ordinals' ] = $ordinals; |
| 209 | response[ 'proposta' ] = $idprop; |
| 210 | response[ 'data confirmació'] = $__data_confirmacio(); |
| 211 | } |
| 212 | response[ 'tasca' ] = $tasca; |
| 213 | }" |
| 214 | } |
| 215 | ] |
| 216 | }, |
| 217 | { |
| 218 | "if": "{ $args.admin AND $args.proces == 'esmena_generics' }", |
| 219 | "messages": [ |
| 220 | { |
| 221 | "app": "state", |
| 222 | "state": "{ |
| 223 | if ( ! $generics AND $ref != 'multiple' ) |
| 224 | { $__bota( "No hi ha generics" ); } |
| 225 | |
| 226 | if ( $tasca == 'drecera' ) { |
| 227 | if ( $ref == 'multiple' ) { |
| 228 | |
| 229 | $variables = {}; |
| 230 | $__resp = $r => { |
| 231 | $valvar = |
| 232 | $args[ $r ] otherwise $generics[ $r ] otherwise '...'; |
| 233 | $variables[ $r ] = $valvar; |
| 234 | response[ $r ] = $valvar; |
| 235 | }; |
| 236 | |
| 237 | $__resp( '_Acces' ); |
| 238 | $__resp( '_Getons' ); |
| 239 | $__resp( '_FRO' ); |
| 240 | $__resp( '_FOP' ); |
| 241 | $__resp( '_FDIP' ); |
| 242 | $__resp( '_Estels' ); |
| 243 | $__resp( 'Interval' ); |
| 244 | $__resp( 'Lapse' ); |
| 245 | $__resp( '_Transfer' ); |
| 246 | $__resp( '_Capacitacio' ); |
| 247 | $__resp( '_Avis' ); |
| 248 | $__resp( 'Import_Activacio' ); |
| 249 | $__resp( 'Import_Subscripcio' ); |
| 250 | $__resp( 'Import_Renovacio' ); |
| 251 | $__resp( 'Taxa_Conversio' ); |
| 252 | $__resp( 'Factor_Conversio' ); |
| 253 | $__resp( 'Generacio_Minima' ); |
| 254 | $__resp( 'Cicles_Latencia' ); |
| 255 | $__resp( '_AUT_0' ); |
| 256 | $__resp( '_AUT_A' ); |
| 257 | $__resp( '_AUT_B' ); |
| 258 | $__resp( '_AUT_C' ); |
| 259 | |
| 260 | var[ 'Generics' ] = $variables; |
| 261 | |
| 262 | $__valvar = $refvar => |
| 263 | var[ $refvar ] otherwise {}; |
| 264 | |
| 265 | var[ 'Getons' ] = $__valvar( 'Getons' ); |
| 266 | var[ 'Propostes' ] = $__valvar( 'Propostes' ); |
| 267 | var[ 'Validacions' ] = $__valvar( 'Validacions' ); |
| 268 | var[ 'Ordinals' ] = $__valvar( 'Ordinals' ); |
| 269 | |
| 270 | } else { |
| 271 | $generics[ $ref ] = $val; |
| 272 | $nova_ref = $ref; |
| 273 | $nou_val = $val; |
| 274 | } |
| 275 | } else if ( $tasca == 'confirmacio' ) { |
| 276 | $generics[ $proposta.ref ] = $proposta.val; |
| 277 | $idprop = $args.idprop; |
| 278 | $nova_ref = $proposta.ref; |
| 279 | $nou_val = $proposta.val; |
| 280 | } else { |
| 281 | $idprop = $__idprop( $ref ); |
| 282 | $propostes[ $idprop ] = |
| 283 | { |
| 284 | ref: $ref, |
| 285 | val: $val, |
| 286 | proposant: $adr__, |
| 287 | temps: timestamp, |
| 288 | }; |
| 289 | var[ 'Propostes' ] = $propostes; |
| 290 | var[ 'Ordinals' ] = $ordinals; |
| 291 | $nova_ref = $ref; |
| 292 | $nou_val = $val; |
| 293 | response[ 'data confirmació'] = $__data_confirmacio(); |
| 294 | |
| 295 | } |
| 296 | var[ 'Generics' ] = $generics otherwise var[ 'Generics' ]; |
| 297 | response[ 'procés' ] = $args.proces; |
| 298 | response[ 'tasca' ] = $tasca; |
| 299 | response[ 'proposta' ] = $idprop otherwise '...'; |
| 300 | response[ 'nova ref' ] = $nova_ref otherwise '...'; |
| 301 | response[ 'nou val' ] = $nou_val otherwise '...'; |
| 302 | }" |
| 303 | } |
| 304 | ] |
| 305 | }, |
| 306 | { |
| 307 | "if": "{ $args.admin AND $args.proces == 'nou_geto' }", |
| 308 | "messages": [ |
| 309 | { |
| 310 | "if": "{ $tasca != 'proposta' }", |
| 311 | "app": "asset", |
| 312 | "payload": { |
| 313 | "cap": "{ $args.cap otherwise 1e9 }", |
| 314 | "is_private": false, |
| 315 | "is_transferrable": true, |
| 316 | "auto_destroy": "{ !! $args.auto_destroy }", |
| 317 | "fixed_denominations": false, |
| 318 | "issued_by_definer_only": true, |
| 319 | "cosigned_by_definer": false, |
| 320 | "spender_attested": false |
| 321 | } |
| 322 | }, |
| 323 | { |
| 324 | "app": "state", |
| 325 | "state": "{ |
| 326 | if ( $tasca != 'confirmacio' ) { |
| 327 | $constants = { id : response_unit }; |
| 328 | |
| 329 | $__const = $r => { |
| 330 | $constants[ $r ] = $__arg( $r ); |
| 331 | }; |
| 332 | $__const( '_FOG' ); |
| 333 | $__const( '_AUT_A' ); |
| 334 | $__const( 'factor_conversio' ); |
| 335 | $__const( 'activacions_restringides' ); |
| 336 | $__const( 'subscripcions_restringides' ); |
| 337 | $__const( 'recepcions_restringides' ); |
| 338 | $__const( 'conversions_restringides' ); |
| 339 | $__const( 'valors_esmenables' ); |
| 340 | $__const( 'llistats_editables' ); |
| 341 | $__const( 'bloqueig_possible' ); |
| 342 | |
| 343 | $variables = {}; |
| 344 | |
| 345 | $__vari = $r => { |
| 346 | $variables[ $r ] = $__arg( $r ); |
| 347 | }; |
| 348 | $__vari( 'import_activacio' ); |
| 349 | $__vari( 'import_subscripcio' ); |
| 350 | $__vari( 'import_renovacio' ); |
| 351 | $__vari( 'taxa_conversio' ); |
| 352 | $__vari( 'derivacio_aFOG' ); |
| 353 | $__vari( '_AUT_0' ); |
| 354 | $__vari( '_AUT_B' ); |
| 355 | $__vari( '_AUT_C' ); |
| 356 | } |
| 357 | if ( $tasca == 'drecera' ) { |
| 358 | $getons[ response_unit ] = |
| 359 | { |
| 360 | proposant: $adr__, |
| 361 | confirmant: $adr__, |
| 362 | temps: timestamp, |
| 363 | estat: 'actiu', |
| 364 | constants: $constants, |
| 365 | variables: $variables |
| 366 | }; |
| 367 | response[ 'Getó operatiu' ] = response_unit; |
| 368 | } |
| 369 | if ( $tasca == 'confirmacio' ) { |
| 370 | $idprop = $args.idprop; |
| 371 | $prop = $propostes[ $idprop ]; |
| 372 | $getons[ response_unit ] = |
| 373 | { |
| 374 | proposant: $prop.proposant, |
| 375 | confirmant: $adr__, |
| 376 | temps: timestamp, |
| 377 | estat: 'actiu', |
| 378 | constants: $prop.constants, |
| 379 | variables: $prop.variables |
| 380 | }; |
| 381 | response[ 'Getó operatiu' ] = $args.idprop; |
| 382 | } |
| 383 | if ( $tasca == 'proposta' ) { |
| 384 | $idprop = $__idprop( $args.proces ); |
| 385 | |
| 386 | $propostes[ $idprop ] = |
| 387 | { |
| 388 | proposant: $adr__, |
| 389 | temps: timestamp, |
| 390 | constants: $constants, |
| 391 | variables: $variables |
| 392 | }; |
| 393 | var[ 'Propostes' ] = $propostes; |
| 394 | var[ 'Ordinals' ] = $ordinals; |
| 395 | response[ 'data confirmació'] = $__data_confirmacio(); |
| 396 | } |
| 397 | var[ 'Getons' ] = $getons otherwise var[ 'Getons' ]; |
| 398 | response[ 'procés' ] = $args.proces; |
| 399 | response[ 'tasca' ] = $tasca; |
| 400 | response[ 'proposta' ] = $idprop otherwise '...'; |
| 401 | }" |
| 402 | } |
| 403 | ] |
| 404 | }, |
| 405 | { |
| 406 | "if": "{ $args.admin AND $args.proces == 'nou_estat_geto' }", |
| 407 | "messages": [ |
| 408 | { |
| 409 | "app": "state", |
| 410 | "state": "{ |
| 411 | if ( $tasca == 'drecera' ) { |
| 412 | $getons[ $args.id_geto ].estat = $args.nou_estat; |
| 413 | response[ 'Nou estat getó ' || $args.id_geto ] = $args.nou_estat; |
| 414 | } |
| 415 | if ( $tasca == 'confirmacio' ) { |
| 416 | $idprop = $args.idprop; |
| 417 | $prop = $propostes[ $idprop ]; |
| 418 | |
| 419 | $getons[ $prop.id_geto ].estat = $prop.estat; |
| 420 | response[ 'Nou estat getó ' || $prop.id_geto ] = $prop.estat; |
| 421 | } |
| 422 | if ( $tasca == 'proposta' ) { |
| 423 | $idprop = $__idprop( $args.proces ); |
| 424 | |
| 425 | $propostes[ $idprop ] = |
| 426 | { |
| 427 | proposant: $adr__, |
| 428 | temps: timestamp, |
| 429 | id_geto: $args.id_geto, |
| 430 | estat: $args.estat |
| 431 | }; |
| 432 | var[ 'Propostes' ] = $propostes; |
| 433 | var[ 'Ordinals' ] = $ordinals; |
| 434 | response[ 'data confirmació'] = $__data_confirmacio(); |
| 435 | } |
| 436 | var[ 'Getons' ] = $getons otherwise var[ 'Getons' ]; |
| 437 | response[ 'procés' ] = $args.proces; |
| 438 | response[ 'tasca' ] = $tasca; |
| 439 | response[ 'proposta' ] = $idprop otherwise '...'; |
| 440 | }" |
| 441 | } |
| 442 | ] |
| 443 | }, |
| 444 | { |
| 445 | "if": "{ $args.admin AND $args.proces == 'validacio' }", |
| 446 | "init": "{ |
| 447 | |
| 448 | |
| 449 | |
| 450 | |
| 451 | |
| 452 | |
| 453 | |
| 454 | |
| 455 | }", |
| 456 | "messages": [ |
| 457 | { |
| 458 | "app": "state", |
| 459 | "state": "{ |
| 460 | $validacions[ $args.idprop ] = timestamp; |
| 461 | var[ 'Validacions' ] = $validacions; |
| 462 | response[ 'Ref proposta validada' ] = $args.idprop; |
| 463 | }" |
| 464 | } |
| 465 | ] |
| 466 | }, |
| 467 | { |
| 468 | "if": "{ $args.admin AND $args.proces == 'esmena_geto' }", |
| 469 | "messages": [ |
| 470 | { |
| 471 | "app": "state", |
| 472 | "state": "{ |
| 473 | if ( $tasca == 'confirmacio' ) { |
| 474 | |
| 475 | $variables = {}; |
| 476 | $__vari = $r => { |
| 477 | $variables[ $r ] = $args[ $r ] otherwise $geto.variables[ $r ]; |
| 478 | }; |
| 479 | |
| 480 | $__vari( 'import_activacio' ); |
| 481 | $__vari( 'import_subscripcio' ); |
| 482 | $__vari( 'import_renovacio' ); |
| 483 | $__vari( 'taxa_conversio' ); |
| 484 | $__vari( 'derivacio_aFOG' ); |
| 485 | $__vari( '_AUT_0' ); |
| 486 | $__vari( '_AUT_B' ); |
| 487 | $__vari( '_AUT_C' ); |
| 488 | |
| 489 | $getons[ $args.id_geto ].variables = $variables; |
| 490 | |
| 491 | var[ 'Getons' ] = $getons; |
| 492 | response[ 'proposta' ] = $args.idprop; |
| 493 | response[ 'nova ref' ] = $proposta.ref; |
| 494 | response[ 'nou val' ] = $proposta.val; |
| 495 | } |
| 496 | if ( $tasca == 'proposta' ) { |
| 497 | $idprop = $__idprop( $args.proces ); |
| 498 | $propostes[ $idprop ] = |
| 499 | { |
| 500 | ref: $ref, |
| 501 | val: $val, |
| 502 | proposant: $adr__, |
| 503 | temps: timestamp, |
| 504 | }; |
| 505 | var[ 'Propostes' ] = $propostes; |
| 506 | var[ 'Ordinals' ] = $ordinals; |
| 507 | response[ 'proposta' ] = $idprop; |
| 508 | response[ 'nova ref' ] = $ref; |
| 509 | response[ 'nou val' ] = $val; |
| 510 | response[ 'data confirmació'] = $__data_confirmacio(); |
| 511 | } |
| 512 | response[ 'tasca' ] = $tasca; |
| 513 | }" |
| 514 | } |
| 515 | ] |
| 516 | }, |
| 517 | { |
| 518 | "if": "{ $args.proces == 'generacio_getons' }", |
| 519 | "init": "{ |
| 520 | if ( $idgeto != $generics._Estels ) |
| 521 | { $__bota( 'Cal aportar-hi estels' ); } |
| 522 | |
| 523 | |
| 524 | $geto_conv = $getons[ $__arg( 'id_geto' ) ]; |
| 525 | if ( ! $geto_conv OR $geto_conv.estat != 'actiu' ) |
| 526 | { $__bota( 'Getó inexistent o inactiu' ); } |
| 527 | |
| 528 | $_actuant_es_AUT_geto_conv = |
| 529 | $_actuant_es_AUT AND ! $geto.variables._AUT_0 |
| 530 | OR $adr__ == $geto_conv.constants._AUT_A |
| 531 | OR $adr__ == $geto_conv.variables._AUT_0 |
| 532 | OR $adr__ == $geto_conv.variables._AUT_B |
| 533 | OR $adr__ == $geto_conv.variables._AUT_C; |
| 534 | |
| 535 | if ( ! $_actuant_es_AUT_geto_conv ) |
| 536 | { $__bota( 'No autoritzada' ); } |
| 537 | |
| 538 | if ( $qt < $generics.Generacio_Minima ) |
| 539 | { $__bota( 'Cal aportar-hi si més no ' |
| 540 | || $generics.Generacio_Minima || ' estels' ); } |
| 541 | |
| 542 | }", |
| 543 | "messages": [ |
| 544 | { |
| 545 | "app": "payment", |
| 546 | "payload": { |
| 547 | "asset": "{ $args.id_geto }", |
| 548 | "outputs": [ |
| 549 | { |
| 550 | "address": "{ $getons.constants._FOG }", |
| 551 | "amount": "{ $qt * $getons.constants.factor_conversio }" |
| 552 | } |
| 553 | ] |
| 554 | } |
| 555 | } |
| 556 | ] |
| 557 | } |
| 558 | ] |
| 559 | } |
| 560 | } |
| 561 | ] |