@restforgejs/platform 5.1.21 → 5.2.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/build-info.json +2 -2
- package/cli/consumer-deploy.js +1 -1
- package/cli/consumer.js +1 -1
- package/generators/cli/catalog/dashboard.js +1 -1
- package/generators/cli/catalog/dbschema.js +3 -3
- package/generators/cli/catalog/field-validation.js +1 -1
- package/generators/cli/catalog/query-declarative.js +1 -1
- package/generators/cli/config/clear-default.js +1 -1
- package/generators/cli/config/get-default.js +1 -1
- package/generators/cli/config/list.js +1 -1
- package/generators/cli/config/schema.js +1 -1
- package/generators/cli/config/set-default.js +2 -2
- package/generators/cli/config/template.js +1 -1
- package/generators/cli/dashboard/create.js +7 -7
- package/generators/cli/data/pull.js +12 -12
- package/generators/cli/data/push.js +9 -9
- package/generators/cli/endpoint/create.js +11 -11
- package/generators/cli/endpoint/list.js +3 -3
- package/generators/cli/fast-track.js +7 -7
- package/generators/cli/init.js +2 -2
- package/generators/cli/kafka/consumer-create.js +5 -5
- package/generators/cli/key/generate.js +3 -3
- package/generators/cli/key/list.js +2 -2
- package/generators/cli/key/revoke.js +3 -3
- package/generators/cli/payload/diff.js +3 -3
- package/generators/cli/payload/generate.js +5 -5
- package/generators/cli/payload/sync.js +5 -5
- package/generators/cli/payload/validate.js +3 -3
- package/generators/cli/processor/create.js +7 -7
- package/generators/cli/processor/list.js +3 -3
- package/generators/cli/project/delete.js +2 -2
- package/generators/cli/project/list.js +1 -1
- package/generators/cli/query/validate.js +3 -3
- package/generators/cli/schema/apply.js +13 -13
- package/generators/cli/schema/describe.js +6 -6
- package/generators/cli/schema/diff.js +10 -10
- package/generators/cli/schema/generate-ddl.js +11 -11
- package/generators/cli/schema/init.js +95 -95
- package/generators/cli/schema/introspect.js +8 -8
- package/generators/cli/schema/list.js +6 -6
- package/generators/cli/schema/migrate.js +91 -13
- package/generators/cli/schema/models.js +6 -6
- package/generators/cli/schema/template.js +223 -222
- package/generators/cli/schema/validate.js +6 -6
- package/generators/cli/test/generate.js +6 -6
- package/generators/lib/dbschema-kit/introspect-mapper.js +20 -0
- package/generators/lib/templates/dashboard-catalog.js +1 -1
- package/generators/lib/templates/db-connection-env.js +1 -1
- package/generators/lib/templates/dbschema-catalog.js +1 -1
- package/generators/lib/templates/field-validation-catalog.js +1 -1
- package/generators/lib/templates/mysql-template.js +1 -1
- package/generators/lib/templates/oracle-template.js +1 -1
- package/generators/lib/templates/postgres-template.js +1 -1
- package/generators/lib/templates/query-declarative-catalog.js +1 -1
- package/generators/lib/templates/sqlite-template.js +1 -1
- package/integrity-manifest.json +18 -18
- package/package.json +1 -1
- package/scripts/verify-integrity.js +1 -1
- package/server.js +1 -1
- package/src/components/handlers/adjust_handler.js +1 -1
- package/src/components/handlers/audit_handler.js +1 -1
- package/src/components/handlers/delete_handler.js +1 -1
- package/src/components/handlers/export_handler.js +1 -1
- package/src/components/handlers/import_handler.js +1 -1
- package/src/components/handlers/insert_handler.js +1 -1
- package/src/components/handlers/update_handler.js +1 -1
- package/src/components/handlers/upload_handler.js +1 -1
- package/src/components/handlers/workflow_handler.js +1 -1
- package/src/components/integrations/webhook.js +1 -1
- package/src/consumers/baseConsumer.js +1 -1
- package/src/consumers/declarativeMapper.js +1 -1
- package/src/consumers/handlers/apiHandler.js +1 -1
- package/src/consumers/handlers/consoleHandler.js +1 -1
- package/src/consumers/handlers/databaseHandler.js +1 -1
- package/src/consumers/handlers/index.js +1 -1
- package/src/consumers/handlers/kafkaHandler.js +1 -1
- package/src/consumers/index.js +1 -1
- package/src/consumers/messageTransformer.js +1 -1
- package/src/consumers/validator.js +1 -1
- package/src/core/db/dialect/base-dialect.js +1 -1
- package/src/core/db/dialect/index.js +1 -1
- package/src/core/db/dialect/mysql-dialect.js +1 -1
- package/src/core/db/dialect/oracle-dialect.js +1 -1
- package/src/core/db/dialect/postgres-dialect.js +1 -1
- package/src/core/db/dialect/sqlite-dialect.js +1 -1
- package/src/core/db/flatten-helper.js +1 -1
- package/src/core/db/query-builder-error.js +1 -1
- package/src/core/db/query-builder.js +1 -1
- package/src/core/db/relation-helper.js +1 -1
- package/src/core/handlers/delete_handler.js +1 -1
- package/src/core/handlers/insert_handler.js +1 -1
- package/src/core/handlers/update_handler.js +1 -1
- package/src/core/models/base-model.js +1 -1
- package/src/core/utils/cache-manager.js +1 -1
- package/src/core/utils/component-engine.js +1 -1
- package/src/core/utils/context-builder.js +1 -1
- package/src/core/utils/datetime-formatter.js +1 -1
- package/src/core/utils/datetime-parser.js +1 -1
- package/src/core/utils/db.js +1 -1
- package/src/core/utils/logger.js +1 -1
- package/src/core/utils/payload-loader.js +1 -1
- package/src/core/utils/security-checks.js +1 -1
- package/src/middleware/body-options.js +1 -1
- package/src/middleware/cors.js +1 -1
- package/src/middleware/idempotency.js +1 -1
- package/src/middleware/rate-limiter.js +1 -1
- package/src/middleware/request-logger.js +1 -1
- package/src/middleware/security-headers.js +1 -1
- package/src/models/base-model-mysql.js +1 -1
- package/src/models/base-model-oracle.js +1 -1
- package/src/models/base-model-sqlite.js +1 -1
- package/src/models/base-model.js +1 -1
- package/src/pro/caching/redis-client.js +1 -1
- package/src/pro/caching/redis-helper.js +1 -1
- package/src/pro/consumers/baseConsumer.js +1 -1
- package/src/pro/consumers/declarativeMapper.js +1 -1
- package/src/pro/consumers/handlers/apiHandler.js +1 -1
- package/src/pro/consumers/handlers/consoleHandler.js +1 -1
- package/src/pro/consumers/handlers/databaseHandler.js +1 -1
- package/src/pro/consumers/handlers/index.js +1 -1
- package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
- package/src/pro/consumers/index.js +1 -1
- package/src/pro/consumers/messageTransformer.js +1 -1
- package/src/pro/consumers/validator.js +1 -1
- package/src/pro/database/base-model-mysql.js +1 -1
- package/src/pro/database/base-model-oracle.js +1 -1
- package/src/pro/database/base-model-sqlite.js +1 -1
- package/src/pro/database/db-mysql.js +1 -1
- package/src/pro/database/db-oracle.js +1 -1
- package/src/pro/database/db-sqlite.js +1 -1
- package/src/pro/excel/excel-generator.js +1 -1
- package/src/pro/excel/excel-parser.js +1 -1
- package/src/pro/excel/export-service.js +1 -1
- package/src/pro/excel/export_handler.js +1 -1
- package/src/pro/excel/import-service.js +1 -1
- package/src/pro/excel/import-validator.js +1 -1
- package/src/pro/excel/import_handler.js +1 -1
- package/src/pro/excel/upsert-builder.js +1 -1
- package/src/pro/idgen/idgen-routes.js +1 -1
- package/src/pro/integrations/lookup-resolver.js +1 -1
- package/src/pro/integrations/upload-handler-v2.js +1 -1
- package/src/pro/integrations/upload-handler.js +1 -1
- package/src/pro/integrations/webhook.js +1 -1
- package/src/pro/locking/lock-routes.js +1 -1
- package/src/pro/locking/resource-lock-manager.js +1 -1
- package/src/pro/messaging/kafkaConsumerService.js +1 -1
- package/src/pro/messaging/kafkaService.js +1 -1
- package/src/pro/messaging/messagehubService.js +1 -1
- package/src/pro/messaging/rabbitmqService.js +1 -1
- package/src/pro/scheduler/job-manager.js +1 -1
- package/src/pro/scheduler/job-routes.js +1 -1
- package/src/pro/scheduler/job-validator.js +1 -1
- package/src/pro/storage/base-storage-provider.js +1 -1
- package/src/pro/storage/file-metadata-helper.js +1 -1
- package/src/pro/storage/index.js +1 -1
- package/src/pro/storage/local-storage-provider.js +1 -1
- package/src/pro/storage/s3-storage-provider.js +1 -1
- package/src/pro/storage/upload-cleanup-job.js +1 -1
- package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
- package/src/pro/storage/upload-pending-tracker.js +1 -1
- package/src/pro/websocket/broadcast-helper.js +1 -1
- package/src/pro/websocket/index.js +1 -1
- package/src/pro/websocket/livesync-server.js +1 -1
- package/src/pro/websocket/ws-broadcaster.js +1 -1
- package/src/services/export-service.js +1 -1
- package/src/services/import-service.js +1 -1
- package/src/services/kafkaConsumerService.js +1 -1
- package/src/services/kafkaService.js +1 -1
- package/src/services/messagehubService.js +1 -1
- package/src/services/rabbitmqService.js +1 -1
- package/src/utils/cache-invalidation-registry.js +1 -1
- package/src/utils/cache-manager.js +1 -1
- package/src/utils/component-engine.js +1 -1
- package/src/utils/config-extractor.js +1 -1
- package/src/utils/consumerLogger.js +1 -1
- package/src/utils/context-builder.js +1 -1
- package/src/utils/dashboard-helpers.js +1 -1
- package/src/utils/dateHelper.js +1 -1
- package/src/utils/datetime-formatter.js +1 -1
- package/src/utils/datetime-parser.js +1 -1
- package/src/utils/db-bootstrap.js +1 -1
- package/src/utils/db-mysql.js +1 -1
- package/src/utils/db-oracle.js +1 -1
- package/src/utils/db-sqlite.js +1 -1
- package/src/utils/db.js +1 -1
- package/src/utils/demo-generator.js +1 -1
- package/src/utils/excel-generator.js +1 -1
- package/src/utils/excel-parser.js +1 -1
- package/src/utils/file-watcher.js +1 -1
- package/src/utils/id-generator.js +1 -1
- package/src/utils/idempotency-manager.js +1 -1
- package/src/utils/import-validator.js +1 -1
- package/src/utils/license-client.js +1 -1
- package/src/utils/lock-manager.js +1 -1
- package/src/utils/logger.js +1 -1
- package/src/utils/lookup-resolver.js +1 -1
- package/src/utils/payload-loader.js +1 -1
- package/src/utils/processor-response.js +1 -1
- package/src/utils/rabbitmq.js +1 -1
- package/src/utils/redis-client.js +1 -1
- package/src/utils/redis-helper.js +1 -1
- package/src/utils/request-scope.js +1 -1
- package/src/utils/security-checks.js +1 -1
- package/src/utils/service-resolver.js +1 -1
- package/src/utils/shutdown-coordinator.js +1 -1
- package/src/utils/soft-delete-dashboard-guard.js +1 -1
- package/src/utils/sql-table-extractor.js +1 -1
- package/src/utils/trusted-keys.js +1 -1
- package/src/utils/upload-handler.js +1 -1
- package/src/utils/upsert-builder.js +1 -1
- package/src/utils/workflow-hook-executor.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x1e65bd,_0x3b9ccb){const _0x534264=a0_0x3751,_0xac9dad=_0x1e65bd();while(!![]){try{const _0x596539=parseInt(_0x534264(0x173))/0x1+parseInt(_0x534264(0x180))/0x2+-parseInt(_0x534264(0x16d))/0x3*(parseInt(_0x534264(0x1d7))/0x4)+-parseInt(_0x534264(0x118))/0x5*(-parseInt(_0x534264(0x239))/0x6)+-parseInt(_0x534264(0x161))/0x7+-parseInt(_0x534264(0x12d))/0x8+-parseInt(_0x534264(0x189))/0x9*(-parseInt(_0x534264(0x1fd))/0xa);if(_0x596539===_0x3b9ccb)break;else _0xac9dad['push'](_0xac9dad['shift']());}catch(_0x42d099){_0xac9dad['push'](_0xac9dad['shift']());}}}(a0_0x4c62,0xa8835));const FileUtils=require('../utils/file-utils'),{IS_DELETED_COLUMN,DELETED_AT_COLUMN,DELETED_BY_COLUMN,SOFT_DELETE_COLUMNS,isSoftDeleteEnabled}=require('../dbschema-kit/soft-delete-constants');function softDeleteVisibilityFilter(_0x4e9c76){const _0x956212=a0_0x3751,_0x16ffac={'xzHIv':function(_0x188057,_0x230c12){return _0x188057(_0x230c12);},'zDkOA':_0x956212(0xe4),'wlqqf':function(_0x35dfeb,_0x13f2d3){return _0x35dfeb===_0x13f2d3;},'KGwtz':function(_0xbe96df,_0x4fa841){return _0xbe96df===_0x4fa841;},'OXxNe':'deleted_only','CIOTG':_0x956212(0x179)};if(!_0x16ffac['xzHIv'](isSoftDeleteEnabled,_0x4e9c76))return null;const _0x4eba9e=_0x4e9c76['softDelete']&&_0x4e9c76['softDelete'][_0x956212(0x261)]||_0x16ffac['zDkOA'];if(_0x16ffac[_0x956212(0x295)](_0x4eba9e,'include_deleted'))return null;return _0x16ffac['KGwtz'](_0x4eba9e,_0x16ffac[_0x956212(0x162)])?_0x16ffac['CIOTG']:'false';}function assertNoFileReferenceLeftover(_0x2e23f9){const _0x10e212=a0_0x3751,_0x15a06c={'BNPMI':_0x10e212(0x1a7)},_0x3c8180=[[_0x10e212(0x19d),_0x2e23f9['datatablesQuery']],[_0x15a06c['BNPMI'],_0x2e23f9[_0x10e212(0x1a7)]],[_0x10e212(0x231),_0x2e23f9[_0x10e212(0x148)]&&_0x2e23f9[_0x10e212(0x148)][_0x10e212(0x230)]&&_0x2e23f9['masterDetail']['detailConfig']['detailQuery']]];for(const [_0x1b6241,_0x5829b3]of _0x3c8180){if(typeof _0x5829b3===_0x10e212(0x265)&&_0x5829b3[_0x10e212(0x279)]('file:'))throw new Error('Codegen\x20invariant\x20violation:\x20'+_0x1b6241+_0x10e212(0x246)+_0x5829b3+_0x10e212(0x26c)+'Expected\x20expanded\x20SQL\x20string.\x20Check\x20PayloadProcessor.processFileReferences\x20flow.');}}function buildValidFieldsString(_0x47cb6f){const _0x9b96dc=a0_0x3751,_0x1f1854={'oWFmI':function(_0xa9cf8b,_0x3ef874){return _0xa9cf8b(_0x3ef874);},'VjqRJ':',\x0a\x20\x20\x20\x20\x20\x20'},_0x4e5792=(_0x47cb6f[_0x9b96dc(0x1e1)]||[])['slice']();if(_0x1f1854[_0x9b96dc(0x298)](isSoftDeleteEnabled,_0x47cb6f))for(const _0x13f616 of SOFT_DELETE_COLUMNS){if(!_0x4e5792[_0x9b96dc(0x160)](_0x13f616))_0x4e5792['push'](_0x13f616);}return _0x4e5792['map'](_0x518576=>'\x27'+_0x518576+'\x27')[_0x9b96dc(0x108)](_0x1f1854['VjqRJ']);}function buildFormatResponseDataBody(_0xd4b920){const _0x59ee86=a0_0x3751,_0x4a9f87={'qOmSC':_0x59ee86(0x29a),'rvHwQ':function(_0x44a39d,_0x564bcf){return _0x44a39d+_0x564bcf;},'waMXE':_0x59ee86(0x256),'mNgyn':'\x20\x20\x20\x20//\x20(where-key\x20R15)\x20sehingga\x20ter-proyeksi\x20formatResponseData;\x20hapus\x20dari\x20response\x20publik\x0a','DUuWB':_0x59ee86(0x1b3),'tMYvs':'\x20\x20\x20\x20if\x20(formatted)\x20{\x0a','BOZaW':'\x20\x20\x20\x20\x20\x20\x20\x20delete\x20formatted[__sdCol];\x0a','uMvRo':_0x59ee86(0x1ee),'HYbUf':'\x20\x20\x20\x20}\x0a'},_0x94c036=_0x4a9f87[_0x59ee86(0x158)]+'\x20\x20\x20\x20return\x20super.formatResponseData(data);';if(!isSoftDeleteEnabled(_0xd4b920))return _0x94c036;return _0x4a9f87[_0x59ee86(0xd8)](_0x4a9f87[_0x59ee86(0xd8)](_0x4a9f87['rvHwQ'](_0x4a9f87[_0x59ee86(0xd8)](_0x4a9f87[_0x59ee86(0x158)],'\x20\x20\x20\x20const\x20formatted\x20=\x20super.formatResponseData(data);\x0a')+_0x4a9f87['waMXE']+_0x4a9f87[_0x59ee86(0x1d5)],_0x4a9f87[_0x59ee86(0x17d)])+_0x4a9f87['tMYvs']+('\x20\x20\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a')+_0x4a9f87[_0x59ee86(0xdd)],_0x4a9f87[_0x59ee86(0x196)]),_0x4a9f87['HYbUf'])+_0x59ee86(0x1b0);}function buildAuditColumnsSection(_0x1c5832,_0x3d81cc){const _0x60bcd9=a0_0x3751,_0x5e9ab1={'eUeTn':function(_0x3f7ab4,_0xcfe8b2){return _0x3f7ab4!==_0xcfe8b2;},'auciK':function(_0x164ad1,_0x49b1f4){return _0x164ad1 in _0x49b1f4;},'cCcZE':_0x60bcd9(0x1e0),'CetjT':function(_0x1c3fcb,_0x39a2ef){return _0x1c3fcb===_0x39a2ef;},'HZesO':'object','CmAil':'updatedAt'};if(!_0x5e9ab1[_0x60bcd9(0xe8)](_0x5e9ab1['cCcZE'],_0x1c5832))return'';const _0x113ee3=_0x1c5832[_0x60bcd9(0x1e0)];if(_0x113ee3===![]||_0x113ee3===null)return'\x0a'+_0x3d81cc+_0x60bcd9(0x175)+_0x3d81cc+_0x60bcd9(0x221);if(_0x5e9ab1[_0x60bcd9(0x1ef)](typeof _0x113ee3,_0x5e9ab1['HZesO'])&&!Array['isArray'](_0x113ee3)){const _0x42578c=[_0x60bcd9(0x1ba),_0x60bcd9(0x1de),_0x5e9ab1[_0x60bcd9(0x18b)],_0x60bcd9(0x1b5)],_0x1c6b84={};_0x42578c[_0x60bcd9(0x225)](_0x238457=>{if(_0x5e9ab1['eUeTn'](_0x113ee3[_0x238457],undefined))_0x1c6b84[_0x238457]=_0x113ee3[_0x238457];});const _0x4bdde3=JSON['stringify'](_0x1c6b84,null,0x2)['split']('\x0a')['map']((_0x4a7c8f,_0x24eb72)=>_0x24eb72===0x0?_0x4a7c8f:_0x3d81cc+_0x4a7c8f)[_0x60bcd9(0x108)]('\x0a');return'\x0a'+_0x3d81cc+_0x60bcd9(0x278)+_0x3d81cc+_0x60bcd9(0x250)+_0x4bdde3+';\x0a';}throw new Error(_0x60bcd9(0x205)+_0x1c5832[_0x60bcd9(0x13a)]+':\x20must\x20be\x20false,\x20null,\x20or\x20object');}function buildSearchColumnsCode(_0x21886c){const _0x3c5f39=a0_0x3751;if(!_0x21886c[_0x3c5f39(0x1d0)]||!Array[_0x3c5f39(0x25a)](_0x21886c['searchColumns']))return'';return _0x3c5f39(0x1e2)+JSON['stringify'](_0x21886c[_0x3c5f39(0x1d0)],null,0x4)+';\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Build\x20search\x20WHERE\x20clause\x20berdasarkan\x20searchable\x20columns\x0a\x20\x20\x20*\x20@param\x20{string}\x20searchValue\x20-\x20Nilai\x20pencarian\x0a\x20\x20\x20*\x20@param\x20{string}\x20searchBy\x20-\x20Kolom\x20yang\x20dicari\x0a\x20\x20\x20*\x20@returns\x20{string}\x20WHERE\x20clause\x0a\x20\x20\x20*/\x0a\x20\x20buildSearchWhereClause(searchValue,\x20searchBy\x20=\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20if\x20(!searchValue\x20||\x20searchValue.trim()\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20searchableColumns\x20=\x20this.getSearchableColumns();\x0a\x20\x20\x20\x20const\x20escapedSearchValue\x20=\x20searchValue.replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20const\x20likeValue\x20=\x20`%${escapedSearchValue}%`;\x0a\x0a\x20\x20\x20\x20if\x20(searchBy\x20&&\x20searchBy\x20!==\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Cari\x20di\x20kolom\x20spesifik\x0a\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20searchableColumns.find(col\x20=>\x20col.name\x20===\x20searchBy);\x0a\x20\x20\x20\x20\x20\x20if\x20(column\x20&&\x20column.searchable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20`WHERE\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Cari\x20di\x20semua\x20kolom\x20searchable\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20searchableColumns\x0a\x20\x20\x20\x20\x20\x20.filter(col\x20=>\x20col.searchable)\x0a\x20\x20\x20\x20\x20\x20.map(col\x20=>\x20`UPPER(${col.name})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`);\x0a\x0a\x20\x20\x20\x20if\x20(conditions.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20`WHERE\x20(${conditions.join(\x27\x20OR\x20\x27)})`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20}';}function buildFiltersCode(_0x2385ac){const _0x30c792=a0_0x3751;if(!_0x2385ac[_0x30c792(0x294)]||!Array[_0x30c792(0x25a)](_0x2385ac['filters']))return'';return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Mendapatkan\x20definisi\x20filter\x20yang\x20tersedia\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Filter\x20yang\x20tersedia\x0a\x20\x20\x20*/\x0a\x20\x20getAvailableFilters()\x20{\x0a\x20\x20\x20\x20return\x20'+JSON['stringify'](_0x2385ac[_0x30c792(0x294)],null,0x4)+';\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Membangun\x20clause\x20WHERE\x20berdasarkan\x20filter\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Filter\x20options\x0a\x20\x20\x20*\x20@returns\x20{String}\x20Clause\x20WHERE\x20SQL\x0a\x20\x20\x20*/\x0a\x20\x20buildFilterWhereClause(options)\x20{\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20[];\x0a\x20\x20\x20\x20const\x20filters\x20=\x20this.getAvailableFilters();\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(filters))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20berdasarkan\x20tipe\x0a\x20\x20\x20\x20for\x20(const\x20filter\x20of\x20filters)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20filterValue\x20=\x20options[filter.name];\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(!filterValue\x20||\x20filterValue\x20===\x20\x27\x27\x20||\x20filterValue\x20===\x20\x27-\x27\x20||\x20filterValue\x20===\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20switch\x20(filter.type)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27combobox\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27select\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20=\x20UPPER(\x27${escapedValue}\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27daterange\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filterValue\x20===\x20\x27custom_range\x27\x20&&\x20options[filter.startField]\x20&&\x20options[filter.endField])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20startDate\x20=\x20options[filter.startField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endDate\x20=\x20options[filter.endField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20BETWEEN\x20\x27${startDate}\x27\x20AND\x20\x27${endDate}\x27`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27text\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20LIKE\x20UPPER(\x27%${escapedValue}%\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27number\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField\x20&&\x20!isNaN(filterValue))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20=\x20${filterValue}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20conditions.length\x20>\x200\x20?\x20`WHERE\x20${conditions.join(\x27\x20AND\x20\x27)}`\x20:\x20\x27\x27;\x0a\x20\x20}';}function buildDefaultScopeSQL(_0x5be6ef,_0x314562='a.'){const _0x1bc2f6=a0_0x3751,_0x35a509={'XvRbS':_0x1bc2f6(0x1e6),'opUXN':function(_0x36f806,_0x4bcafd){return _0x36f806===_0x4bcafd;},'VXvnl':'boolean','JxyRA':'string','KFZtG':_0x1bc2f6(0x28f)};if(!_0x5be6ef||typeof _0x5be6ef!==_0x35a509['XvRbS'])return'';const _0x2a65dd=[];for(const [_0x591558,_0x1c333f]of Object['entries'](_0x5be6ef)){if(_0x35a509[_0x1bc2f6(0xe1)](typeof _0x1c333f,_0x35a509['VXvnl']))_0x2a65dd['push'](''+_0x314562+_0x591558+_0x1bc2f6(0x24c)+_0x1c333f);else{if(_0x35a509['opUXN'](typeof _0x1c333f,_0x35a509['JxyRA']))_0x2a65dd['push'](''+_0x314562+_0x591558+_0x1bc2f6(0x12a)+_0x1c333f[_0x1bc2f6(0x114)](/'/g,'\x27\x27')+'\x27');else typeof _0x1c333f==='number'&&_0x2a65dd['push'](''+_0x314562+_0x591558+'\x20=\x20'+_0x1c333f);}}return _0x2a65dd[_0x1bc2f6(0x108)](_0x35a509[_0x1bc2f6(0x28e)]);}function buildRequestScopeMiddleware(_0x9cf8e4,_0x42e56c){const _0x44608a=a0_0x3751;if(!_0x9cf8e4[_0x44608a(0x1a4)])return'';const {column:_0x3f768b,source:_0x96b507,bypassRoles:_0x56de44}=_0x9cf8e4['requestScope'],_0x5dfd14=JSON[_0x44608a(0x24a)](_0x56de44||[]),_0x4e1826=(_0x42e56c||'')[_0x44608a(0x114)](/-/g,'_');return _0x44608a(0x271)+_0x3f768b+'\x27\x20from\x20'+_0x96b507+'\x0a//\x20Generated\x20from\x20requestScope\x20configuration\x20in\x20payload\x20JSON\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20!==\x20\x27POST\x27)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20no\x20auth\x20context\x20(endpoint\x20without\x20auth\x20middleware)\x0a\x20\x20if\x20(!req.user)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20user\x20has\x20bypass\x20role\x0a\x20\x20const\x20userRoles\x20=\x20req.user.roles\x20||\x20[];\x0a\x20\x20const\x20bypassRoles\x20=\x20'+_0x5dfd14+';\x0a\x20\x20if\x20(bypassRoles.length\x20>\x200\x20&&\x20bypassRoles.some(role\x20=>\x20userRoles.includes(role)))\x20{\x0a\x20\x20\x20\x20return\x20next();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Read\x20scope\x20value\x20from\x20user\x20context\x0a\x20\x20const\x20scopeValue\x20=\x20'+_0x96b507+';\x0a\x20\x20if\x20(scopeValue\x20===\x20undefined\x20||\x20scopeValue\x20===\x20null)\x20{\x0a\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27Request\x20scope\x20value\x20not\x20available\x20in\x20user\x20context\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Expose\x20scope\x20info\x20for\x20route\x20handlers\x20(ownership\x20verification\x20in\x20/first,\x20/update,\x20/update-composite)\x0a\x20\x20req._requestScope\x20=\x20{\x20column:\x20\x27'+_0x3f768b+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x20\x20const\x20scopeCondition\x20=\x20{\x20key:\x20\x27'+_0x3f768b+_0x44608a(0x1a6)+_0x3f768b+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20UPDATE:\x20force\x20scope\x20column\x20value\x20(ownership\x20verified\x20in\x20/update\x20handler)\x0a\x20\x20if\x20(endpoint\x20===\x20\x27update\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x3f768b+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE-COMPOSITE\x20/\x20UPDATE-COMPOSITE:\x20force\x20scope\x20column\x20inside\x20master\x20body.\x0a\x20\x20//\x20Master\x20is\x20wrapped\x20at\x20req.body[rootKey];\x20detail\x20rows\x20inherit\x20scope\x20transitively\x0a\x20\x20//\x20via\x20master\x20ownership\x20(no\x20direct\x20scope\x20column\x20on\x20detail\x20table).\x0a\x20\x20if\x20(endpoint\x20===\x20\x27create-composite\x27\x20||\x20endpoint\x20===\x20\x27update-composite\x27)\x20{\x0a\x20\x20\x20\x20const\x20masterBody\x20=\x20req.body[\x27'+_0x4e1826+'\x27]\x20||\x20req.body;\x0a\x20\x20\x20\x20masterBody[\x27'+_0x3f768b+_0x44608a(0x2ad);}function buildSoftDeleteReadMiddleware(_0x4c9e8d){const _0x594413=a0_0x3751,_0x55fbb7={'fSzao':function(_0x5deaf0,_0x5dd829){return _0x5deaf0(_0x5dd829);}},_0x35fb44=_0x55fbb7[_0x594413(0x1af)](softDeleteVisibilityFilter,_0x4c9e8d);if(_0x35fb44===null)return'';const _0x8bd230=_0x4c9e8d['softDelete']&&_0x4c9e8d[_0x594413(0x20f)]['visibility']||'active_only';return'\x0a//\x20───\x20Soft-Delete\x20Read\x20Filter\x20Middleware\x20(R15)\x20─────────────────────\x0a//\x20Default\x20Invisible:\x20inject\x20filter\x20\x27'+IS_DELETED_COLUMN+'\x27\x20untuk\x20endpoint\x20read\x20berdasarkan\x0a//\x20visibility\x20config\x20(\x27'+_0x8bd230+_0x594413(0x235)+IS_DELETED_COLUMN+_0x594413(0x27a)+_0x35fb44+_0x594413(0xf0);}function buildLookupOverrideCode(_0x1b2b1a,_0x164d2a){const _0x339f31=a0_0x3751,_0x48958b={'CcanS':function(_0x5041dc,_0xbb24ad){return _0x5041dc(_0xbb24ad);},'IzeGe':function(_0x291073,_0x53d41f){return _0x291073+_0x53d41f;},'KtBvW':'\x20=\x20','aJPXX':function(_0x4655c2,_0x46127d){return _0x4655c2(_0x46127d);},'TvYNQ':_0x339f31(0x28f),'ARFIN':'WHERE\x20'},_0x249a21=FileUtils[_0x339f31(0x27d)](_0x164d2a['fieldName']||[]),_0x398725=FileUtils[_0x339f31(0xf2)](_0x1b2b1a),_0xd576d3=_0x164d2a[_0x339f31(0x206)]||{'all':_0x164d2a['fieldName']||[]},_0x3dab34=_0x164d2a['primaryKey']||_0x164d2a['fieldName']&&_0x164d2a[_0x339f31(0x1e1)][0x0]||'id',_0x5ccedd=_0x164d2a[_0x339f31(0x2a1)]&&_0x164d2a[_0x339f31(0x2a1)]['lookup']?_0x48958b[_0x339f31(0x107)](buildDefaultScopeSQL,_0x164d2a['defaultScope'][_0x339f31(0x109)]):'',_0xdaac4e=((()=>{const _0x4437ee=_0x339f31,_0x37cb94=_0x48958b['CcanS'](softDeleteVisibilityFilter,_0x164d2a);return _0x37cb94!==null?_0x48958b[_0x4437ee(0x1f6)]('a.'+IS_DELETED_COLUMN,_0x48958b['KtBvW'])+_0x37cb94:'';})()),_0x193ad4=[_0x5ccedd,_0xdaac4e]['filter'](Boolean)[_0x339f31(0x108)](_0x48958b['TvYNQ']);return _0x339f31(0x1f9)+_0x249a21+'\x27\x20yang\x20benar\x0a\x20\x20\x20*\x20@param\x20{string}\x20search\x20-\x20Kata\x20kunci\x20pencarian\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getLookupData(search)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20\x27SELECT\x20'+_0x3dab34+',\x20'+_0x249a21+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`\x20WHERE\x20upper(a.'+_0x249a21+')\x20LIKE\x20upper($1)'+(_0x5ccedd?_0x339f31(0x28f)+_0x5ccedd:'')+(_0xdaac4e?_0x339f31(0x28f)+_0xdaac4e:'')+'\x20ORDER\x20BY\x20a.'+_0x249a21+_0x339f31(0x263)+_0x3dab34+_0x339f31(0x128)+_0x249a21+_0x339f31(0x207)+_0x398725+_0x339f31(0x16c)+JSON[_0x339f31(0x24a)](_0x164d2a['_lookupConfig']||null)+';\x0a\x20\x20\x20\x20\x20\x20const\x20textFields\x20=\x20lookupConfig\x20&&\x20lookupConfig.searchFields.length\x20>\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20lookupConfig.searchFields\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20'+JSON[_0x339f31(0x24a)](_0xd576d3['textFields']||[_0x249a21])+';\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20whereConditions\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a'+(_0x5ccedd?'\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0x5ccedd+'`);\x0a':'')+(_0xdaac4e?_0x339f31(0x1ac)+_0xdaac4e+'`);\x0a':'')+_0x339f31(0xe6)+JSON[_0x339f31(0x24a)](_0x164d2a['fieldName']||[])+_0x339f31(0x1cc)+_0x3dab34+_0x339f31(0x19a)+_0x3dab34+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[lookupConfig\x20&&\x20lookupConfig.hasCustomText\x20?\x20\x27display_text\x27\x20:\x20textFields[0]]\x20||\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataDynamic\x20('+_0x398725+_0x339f31(0x124)+_0x249a21+'\x27\x20yang\x20benar\x0a\x20\x20\x20*\x20@param\x20{string}\x20selectedTag\x20-\x20ID\x20yang\x20dipilih\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getStaticLookupData(selectedTag)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20(if\x20enabled)\x20-\x20cache\x20tanpa\x20selectedTag\x20karena\x20data\x20sama\x0a\x20\x20\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20type:\x20\x27static\x27\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27static\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Apply\x20selectedTag\x20to\x20cached\x20result\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.id\x20===\x20selectedTag)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20...item,\x20selected:\x20\x27true\x27\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20id:\x20item.id,\x20text:\x20item.text\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20\x27SELECT\x20'+_0x3dab34+',\x20'+_0x249a21+_0x339f31(0x1c8)+(_0x193ad4?_0x339f31(0xfd)+_0x193ad4:'')+_0x339f31(0x165)+_0x249a21+_0x339f31(0x224)+_0x3dab34+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x249a21+_0x339f31(0x1f1)+_0x3dab34+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x249a21+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.'+_0x3dab34+_0x339f31(0x1fc)+_0x398725+_0x339f31(0x25b)+_0x3dab34+_0x339f31(0x25d)+_0x249a21+'\x27];\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Parse\x20dan\x20validasi\x20select\x20columns\x20untuk\x20support\x20SQL\x20expressions\x0a\x20\x20\x20\x20\x20\x20const\x20validTextFields\x20=\x20'+JSON[_0x339f31(0x24a)](_0xd576d3['textFields']||[])+_0x339f31(0x13e)+_0x3dab34+'\x27;\x0a\x20\x20\x20\x20\x20\x20let\x20textField\x20=\x20\x27'+_0x249a21+_0x339f31(0x1d3)+_0x3dab34+_0x339f31(0x169)+_0x249a21+_0x339f31(0x220)+(_0x5ccedd?'WHERE\x20'+_0x5ccedd+'\x20':'')+_0x339f31(0x1ae)+(_0x5ccedd?'AND\x20(':_0x48958b['ARFIN'])+_0x339f31(0xd7)+(_0x5ccedd?')':'')+'\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Handle\x20sort_columns\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20if\x20(options.sort_columns\x20&&\x20Array.isArray(options.sort_columns)\x20&&\x20options.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20orderParts\x20=\x20options.sort_columns.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20item.column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20direction\x20=\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!column)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.validFields.includes(column)\x20&&\x20column\x20!==\x20\x27'+_0x3dab34+'\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(direction\x20!==\x20\x27ASC\x27\x20&&\x20direction\x20!==\x20\x27DESC\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${column}\x20${direction}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).filter(Boolean);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(orderParts.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27No\x20valid\x20sort\x20columns\x20provided\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${orderParts.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Order\x20by\x20text\x20field\x20(gunakan\x20alias\x20jika\x20ada)\x20-\x20default\x20behavior\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${aliasField\x20||\x20textField}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20DEBUG\x20'+_0x1b2b1a['toUpperCase']()+'\x20LOOKUP\x20WITH\x20FILTER\x20===\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Final\x20SQL:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Parameters:\x27,\x20params);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Selected\x20columns:\x27,\x20selectColumns);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Sort\x20columns:\x27,\x20options.sort_columns\x20||\x20\x27none\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Valid\x20fields\x20for\x20ordering:\x27,\x20this.validFields);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Text\x20field:\x27,\x20textField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Alias\x20field:\x27,\x20aliasField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20END\x20DEBUG\x20===\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Eksekusi\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20hasil\x20untuk\x20lookup\x20(id\x20dan\x20text)\x20-\x20gunakan\x20alias\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20textFieldName\x20=\x20aliasField\x20||\x20textField;\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x3dab34+_0x339f31(0x149)+_0x249a21+'\x20||\x20item.name\x20||\x20item.code\x20||\x20item.description\x20||\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20the\x20result\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20result,\x20\x27filter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataWithFilter\x20('+_0x398725+_0x339f31(0x282);}function buildAdvancedQuerySection(_0x338b4b){const _0x159cb6=a0_0x3751,_0x3c2d01={'OAsaB':function(_0x56b4d8,_0x5f4f92){return _0x56b4d8===_0x5f4f92;}},_0xce192=_0x338b4b[_0x159cb6(0x1e5)]||{};if(_0x3c2d01['OAsaB'](Object['keys'](_0xce192)['length'],0x0))return'//\x20No\x20advanced\x20queries\x20defined';return _0x159cb6(0x23a)+Object['entries'](_0xce192)[_0x159cb6(0x23f)](([_0x39a56e,_0x21a1d6])=>'\x20\x20\x20\x20\x20\x20\x22'+_0x39a56e+_0x159cb6(0x1c4)+JSON['stringify'](_0x21a1d6))['join'](',\x0a')+'\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20for\x20(const\x20[queryName,\x20querySource]\x20of\x20Object.entries(queryDefinitions))\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cek\x20apakah\x20string\x20dimulai\x20dengan\x20\x22file:\x22\x20untuk\x20menentukan\x20apakah\x20ini\x20path\x20file\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20querySource\x20===\x20\x27string\x27\x20&&\x20querySource.startsWith(\x27file:\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ambil\x20path\x20relatif\x20dari\x20querySource\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20relativePath\x20=\x20querySource.replace(\x27file:\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20filePath\x20=\x20path.join(__dirname,\x20relativePath);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Attempting\x20to\x20read\x20template\x20file\x20${queryName}\x20from\x20path:\x20${filePath}`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fs.existsSync(filePath))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20fs.readFileSync(filePath,\x20\x27utf8\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`SQL\x20template\x20${queryName}\x20loaded\x20successfully\x20from\x20file:\x20${relativePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`SQL\x20template\x20file\x20${queryName}\x20not\x20found:\x20${filePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Jika\x20bukan\x20path\x20file,\x20gunakan\x20string\x20SQL\x20langsung\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20querySource;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`SQL\x20template\x20${queryName}\x20loaded\x20successfully\x20from\x20SQL\x20string`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20loading\x20SQL\x20template\x20${queryName}:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}';}function buildQueryLoadingCode(_0x287618,_0x1168d4){const _0x3c0aa1=a0_0x3751,_0x3d48b9={'BvGvi':'${payload.tableName\x20||\x20\x22undefined_table\x22}'};if(!_0x287618)return _0x3c0aa1(0x184);const _0x46d8db=_0x287618['replace'](/\$\{tableName\}/g,_0x3d48b9['BvGvi'])[_0x3c0aa1(0x114)](/\$\{this\.table\}/g,_0x3d48b9[_0x3c0aa1(0x12c)]);return _0x3c0aa1(0x15a)+_0x46d8db+'`.trim();';}function buildFieldMappingCode(_0x31f529){const _0x2203b1=a0_0x3751,_0x2176e0=_0x31f529[_0x2203b1(0x206)]||{};return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20field\x20mapping\x20untuk\x20berbagai\x20operasi\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Field\x20mapping\x20object\x0a\x20\x20\x20*/\x0a\x20\x20getFieldMapping()\x20{\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20allFields:\x20this.validFields,\x0a\x20\x20\x20\x20\x20\x20textFields:\x20'+JSON[_0x2203b1(0x24a)](_0x2176e0['textFields']||[])+',\x0a\x20\x20\x20\x20\x20\x20dateFields:\x20'+JSON[_0x2203b1(0x24a)](_0x2176e0[_0x2203b1(0x146)]||[])+_0x2203b1(0x145)+JSON['stringify'](_0x2176e0[_0x2203b1(0x1db)]||[])+',\x0a\x20\x20\x20\x20\x20\x20primaryTextField:\x20\x27'+(_0x2176e0['primaryTextField']||_0x2203b1(0x21e))+'\x27,\x0a\x20\x20\x20\x20\x20\x20searchableFields:\x20this.getSearchableColumns\x20?\x20this.getSearchableColumns().map(col\x20=>\x20col.name)\x20:\x20[]\x0a\x20\x20\x20\x20};\x0a\x20\x20}';}function _generateValidationConfig(_0x452ae4){const _0x1d4299=a0_0x3751,_0x5b1c10={'lCrif':'\x0a\x20\x20\x20\x20\x20\x20','ZlvUs':function(_0x3b2227,_0x2ae24b){return _0x3b2227===_0x2ae24b;},'YmZko':_0x1d4299(0x253)};if(!_0x452ae4||!Array[_0x1d4299(0x25a)](_0x452ae4)||_0x5b1c10['ZlvUs'](_0x452ae4['length'],0x0))return _0x5b1c10[_0x1d4299(0x275)];const _0x4a0d0d=_0x452ae4[_0x1d4299(0x23f)](_0x58fb32=>{const _0x1606dc=_0x1d4299,_0x40ec8d=JSON['stringify'](_0x58fb32['constraints']||{},null,0x6)['replace'](/\n/g,_0x5b1c10[_0x1606dc(0x1bb)]);return _0x1606dc(0x260)+_0x58fb32['name']+'\x27:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27'+_0x58fb32['type']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20constraints:\x20'+_0x40ec8d+_0x1606dc(0x105);})['join'](',\x0a');return'\x20\x20\x20\x20//\x20Field\x20validation\x20configuration\x0a\x20\x20\x20\x20this.validationConfig\x20=\x20{\x0a'+_0x4a0d0d+_0x1d4299(0x27b);}function _generateValidateFieldConstraints(){const _0x35e88e=a0_0x3751;return _0x35e88e(0x1fa);}function generateCompositeMethods(_0x366c1b){const _0x3ac6f4=a0_0x3751,_0x42a588={'QIwnv':function(_0x2e68c6,_0x55fb79){return _0x2e68c6===_0x55fb79;},'JYLRM':function(_0x418055,_0x56d22b){return _0x418055+_0x56d22b;},'jFHhp':function(_0x3008d5,_0x4698d4){return _0x3008d5+_0x4698d4;},'VZmiH':_0x3ac6f4(0xf5),'uKBCf':'unit_price','zZApy':function(_0x27c001,_0x116da2){return _0x27c001+_0x116da2;},'iLSPC':function(_0x4aca25,_0xa3807a){return _0x4aca25+_0xa3807a;},'aaoQn':_0x3ac6f4(0x151)},_0x4b2866=_0x366c1b[_0x3ac6f4(0x123)]||{},_0x5ef0f4=_0x366c1b['masterDetail']&&_0x366c1b[_0x3ac6f4(0x148)]['enabled'];if(!_0x5ef0f4||!_0x4b2866['createComposite']&&!_0x4b2866['updateComposite']&&!_0x4b2866['readComposite'])return'';const _0x2d47af=_0x366c1b['masterDetail']['detailTable'],_0xfa1375=_0x366c1b['masterDetail'][_0x3ac6f4(0x19c)],_0x35c3ca=_0x366c1b[_0x3ac6f4(0x10a)]||'id';let _0x219afa='\x0a';if(_0x4b2866['createComposite']){const _0x5e1762=_0x366c1b['masterDetail']?.['detailConfig']?.[_0x3ac6f4(0x10a)]||_0x2d47af[_0x3ac6f4(0x216)]('.')['pop']()+_0x3ac6f4(0x1e8),_0x29de49=_0x366c1b['masterDetail']?.[_0x3ac6f4(0x230)]?.[_0x3ac6f4(0x29e)]||{},_0x2a6248=[],_0x357392=[];for(const [_0x577310,_0x355317]of Object[_0x3ac6f4(0xf6)](_0x29de49)){if(_0x42a588['QIwnv'](_0x355317['type'],'generated'))_0x2a6248[_0x3ac6f4(0x280)](_0x577310);else{const _0x530d07=(_0x355317['formula']||'')['split']('*')['map'](_0x266d52=>_0x266d52['trim']());_0x357392[_0x3ac6f4(0x280)]({'fieldName':_0x577310,'qtyField':_0x530d07[0x0],'priceField':_0x530d07[0x1]});}}const _0x293d90=_0x357392['map'](_0x41e3d5=>{const _0xa27bca=_0x3ac6f4;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x41e3d5['fieldName']+'\x20=\x20'+_0x41e3d5[_0xa27bca(0xd6)]+'\x20*\x20'+_0x41e3d5['priceField']+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x41e3d5['fieldName']+'\x20=\x20(Number(item.'+_0x41e3d5[_0xa27bca(0xd6)]+')\x20||\x200)\x20*\x20(Number(item.'+_0x41e3d5['priceField']+_0xa27bca(0x16e);})[_0x3ac6f4(0x108)]('\x0a');_0x219afa+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20create\x20-\x20Create\x20header\x20with\x20detail\x20items\x20in\x20a\x20single\x20transaction\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail\x20items\x20array\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Created\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20createComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x2d47af['split']('.')[_0x3ac6f4(0x1b8)]()+_0x3ac6f4(0x21a)+_0x366c1b[_0x3ac6f4(0x13a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x2d47af+_0x3ac6f4(0x1bc)+_0xfa1375+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeResult\x20=\x20await\x20ce.executeOnBeforeComposite(\x27insert\x27,\x20beforeCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onBeforeCompositeInsert\x20failed:\x20${beforeResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20header\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20placeholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerPlaceholders.push(`$${placeholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(created_at,\x20created_by,\x20updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendCreateAuditColumns(headerFields,\x20headerValues,\x20headerPlaceholders,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20headerInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${this.writeSource}\x20(${headerFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${headerPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20header\x20INSERT:\x27,\x20{\x20query:\x20headerInsertQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerInsertQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20insertedHeader\x20=\x20headerResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20const\x20masterPrimaryKeyValue\x20=\x20insertedHeader[this.primaryKey];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20inserted\x20successfully:\x20${this.primaryKey}=${masterPrimaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Insert\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x2d47af+_0x3ac6f4(0x24f)+_0xfa1375+_0x3ac6f4(0x296)+(_0x2a6248['length']>0x0?_0x3ac6f4(0x215)+JSON[_0x3ac6f4(0x24a)](_0x2a6248)+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailPrimaryKey\x20=\x20\x27'+_0x5e1762+'\x27;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20data[detailKey]\x20||\x20[])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Add\x20foreign\x20key\x20to\x20item\x0a\x20\x20\x20\x20\x20\x20\x20\x20item[foreignKey]\x20=\x20masterPrimaryKeyValue;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20UUID\x20untuk\x20detail\x20PK\x20bila\x20client\x20tidak\x20menyupply.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Konsisten\x20dengan\x20konvensi\x20autoGenerate+primaryKey\x20di\x20single-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(lihat\x20validateData)\x20dan\x20seragam\x20lintas\x20dialect:\x20semua\x20generator\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20memakai\x20uuid.v7()\x20sehingga\x20format\x20UUID\x20dan\x20titik\x20generasi\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20identik,\x20independen\x20dari\x20DEFAULT\x20expression\x20di\x20DDL.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item[detailPrimaryKey]\x20===\x20undefined\x20||\x20item[detailPrimaryKey]\x20===\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20item[detailPrimaryKey]\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a'+(_0x293d90?_0x42a588['JYLRM'](_0x42a588['jFHhp']('\x0a',_0x293d90),'\x0a'):'')+_0x3ac6f4(0x155)+(_0x2a6248['length']>0x0?_0x3ac6f4(0x226):'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20detail\x20INSERT:\x27,\x20{\x20query:\x20detailInsertQuery,\x20values:\x20detailValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onAfterCompositeInsert\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterCtx\x20=\x20CB.buildCompositeInsertAfterContext(headerData,\x20insertedHeader,\x20insertedItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x366c1b['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x2d47af+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0xfa1375+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterResult\x20=\x20await\x20ce.executeOnAfterComposite(\x27insert\x27,\x20afterCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onAfterCompositeInsert\x20failed:\x20${afterResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Transaction\x20committed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20...insertedHeader,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20insertedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20createComposite:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}if(_0x4b2866[_0x3ac6f4(0x237)]){const _0x35a860=_0x366c1b['masterDetail']?.[_0x3ac6f4(0x230)]?.[_0x3ac6f4(0x10a)]||_0x2d47af[_0x3ac6f4(0x216)]('.')['pop']()+'_id',_0x3bd676=_0x366c1b['masterDetail']?.['headerCalculations']||null,_0x274a41=_0x366c1b[_0x3ac6f4(0x148)]?.['detailConfig']?.[_0x3ac6f4(0x29e)]||{},_0x1d3dcb=[],_0x50ae73=[];for(const [_0x547e18,_0x41471f]of Object[_0x3ac6f4(0xf6)](_0x274a41)){if(_0x41471f[_0x3ac6f4(0x159)]===_0x42a588['VZmiH'])_0x1d3dcb['push'](_0x547e18);else{const _0x326841=(_0x41471f['formula']||'')[_0x3ac6f4(0x216)]('*')[_0x3ac6f4(0x23f)](_0x199c28=>_0x199c28['trim']());_0x50ae73[_0x3ac6f4(0x280)]({'fieldName':_0x547e18,'qtyField':_0x326841[0x0],'priceField':_0x326841[0x1]});}}const _0x2c7aad=_0x50ae73[_0x3ac6f4(0x23f)](_0x30b172=>{const _0x533b69=_0x3ac6f4;return _0x533b69(0x228)+_0x30b172['fieldName']+_0x533b69(0x24c)+_0x30b172[_0x533b69(0xd6)]+'\x20*\x20'+_0x30b172['priceField']+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x30b172['fieldName']+_0x533b69(0x17b)+_0x30b172[_0x533b69(0xd6)]+')\x20||\x200)\x20*\x20(Number(item.'+_0x30b172[_0x533b69(0x11e)]+')\x20||\x200);';})[_0x3ac6f4(0x108)]('\x0a'),_0x4ff282=_0x366c1b[_0x3ac6f4(0x148)]?.['detailConfig']?.[_0x3ac6f4(0x29e)]?.[_0x3ac6f4(0x28c)]?.['formula']||'',_0x3b53b6=_0x4ff282[_0x3ac6f4(0x216)]('*')[_0x3ac6f4(0x23f)](_0x1924b0=>_0x1924b0['trim']()),_0x1dc3d2=_0x366c1b[_0x3ac6f4(0x148)]?.['headerCalculations']?.[_0x3ac6f4(0x272)]?.['source']?.[_0x3ac6f4(0x114)]('items.','')||'',_0x36452f=_0x3b53b6[0x0]||_0x1dc3d2,_0x86b82a=_0x3b53b6[0x1]||_0x42a588['uKBCf'];_0x219afa+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20update\x20-\x20Update\x20header\x20with\x20granular\x20detail\x20operations\x20(insert/update/delete)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail_lines\x20with\x20insert/update/delete\x20arrays\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Updated\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20updateComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20primary\x20key\x20value\x0a\x20\x20\x20\x20\x20\x20const\x20primaryKeyValue\x20=\x20data[this.primaryKey];\x0a\x20\x20\x20\x20\x20\x20if\x20(!primaryKeyValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Primary\x20key\x20${this.primaryKey}\x20is\x20required\x20for\x20update`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20record\x20exists\x20(also\x20serves\x20as\x20prefetch\x20oldData\x20for\x20hooks)\x0a\x20\x20\x20\x20\x20\x20const\x20checkQuery\x20=\x20`SELECT\x20*\x20FROM\x20${this.writeSource}\x20WHERE\x20${this.primaryKey}\x20=\x20$1`;\x0a\x20\x20\x20\x20\x20\x20const\x20checkResult\x20=\x20await\x20client.query(checkQuery,\x20[primaryKeyValue]);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(checkResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20oldData\x20=\x20checkResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items\x20and\x20primary\x20key)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x2d47af['split']('.')[_0x3ac6f4(0x1b8)]()+_0x3ac6f4(0xf3)+_0x366c1b['tableName']+_0x3ac6f4(0x1fe)+_0x2d47af+_0x3ac6f4(0x1bc)+_0xfa1375+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeResult\x20=\x20await\x20ce.executeOnBeforeComposite(\x27update\x27,\x20beforeCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onBeforeCompositeUpdate\x20failed:\x20${beforeResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20placeholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(`${key}\x20=\x20$${placeholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20const\x20headerUpdateQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${headerFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${placeholderIndex}\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20headerUpdateQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerUpdateQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20updatedHeader\x20=\x20headerResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20updated\x20successfully:\x20${this.primaryKey}=${primaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Process\x20detail\x20items\x20with\x20insert/update/delete\x20pattern\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x2d47af+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0xfa1375+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20detailPrimaryKey\x20=\x20\x27'+_0x35a860+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+(_0x1d3dcb[_0x3ac6f4(0x185)]>0x0?_0x3ac6f4(0x215)+JSON[_0x3ac6f4(0x24a)](_0x1d3dcb)+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailOperations\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20insert:\x20insertItems\x20=\x20[],\x20update:\x20updateItems\x20=\x20[],\x20delete:\x20deleteItems\x20=\x20[]\x20}\x20=\x20detailOperations;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20updatedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Process\x20DELETE\x20operations\x20first\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20deleteItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20delete\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteQuery\x20=\x20`DELETE\x20FROM\x20${detailTableName}\x20WHERE\x20${detailPrimaryKey}\x20=\x20$1\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteResult\x20=\x20await\x20client.query(deleteQuery,\x20[item[detailPrimaryKey]]);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(deleteResult.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deletedItems.push(deleteResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Deleted\x20${deletedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Process\x20UPDATE\x20operations\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20updateItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20update\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a'+(_0x2c7aad?'\x0a'+_0x2c7aad+'\x0a':'')+_0x3ac6f4(0x15f)+(_0x1d3dcb['length']>0x0?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+_0x3ac6f4(0x127)+(_0x2c7aad?_0x42a588[_0x3ac6f4(0x119)](_0x42a588['iLSPC']('\x0a',_0x2c7aad),'\x0a'):'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1d3dcb['length']>0x0?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20new\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Get\x20all\x20current\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsQuery\x20=\x20`SELECT\x20*\x20FROM\x20${detailTableName}\x20WHERE\x20${foreignKey}\x20=\x20$1\x20ORDER\x20BY\x20line_number`;\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsResult\x20=\x20await\x20client.query(allItemsQuery,\x20[primaryKeyValue]);\x0a\x20\x20\x20\x20\x20\x20const\x20allItems\x20=\x20allItemsResult.rows;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Recalculate\x20header\x20totals\x20from\x20final\x20items\x0a\x20\x20\x20\x20\x20\x20'+(_0x3bd676?_0x3ac6f4(0x1a9)+JSON['stringify'](_0x3bd676)+';\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20recalcPlaceholder\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_items\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(allItems.length);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_qty\x20&&\x20calculations.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20calculations.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalQty\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_qty\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(totalQty);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20'+(_0x36452f?'if\x20(calculations.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalAmount\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x36452f+_0x3ac6f4(0xd9)+_0x86b82a+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_amount\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(totalAmount);\x0a\x20\x20\x20\x20\x20\x20}':_0x42a588['aaoQn'])+'\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(recalculatedFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20ke\x20recalc\x20UPDATE\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalcPlaceholder\x20=\x20this._appendUpdateAuditColumns(recalculatedFields,\x20recalculatedValues,\x20data,\x20eventContext,\x20recalcPlaceholder);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${recalculatedFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${recalcPlaceholder}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Recalculating\x20header\x20totals:\x27,\x20{\x20query:\x20recalcQuery,\x20values:\x20recalculatedValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcResult\x20=\x20await\x20client.query(recalcQuery,\x20recalculatedValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20Object.assign(updatedHeader,\x20recalcResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20':'')+_0x3ac6f4(0x2a9)+_0x366c1b[_0x3ac6f4(0x13a)]+_0x3ac6f4(0x1fe)+_0x2d47af+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0xfa1375+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterResult\x20=\x20await\x20ce.executeOnAfterComposite(\x27update\x27,\x20afterCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onAfterCompositeUpdate\x20failed:\x20${afterResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Transaction\x20committed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20...updatedHeader,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20allItems,\x0a\x20\x20\x20\x20\x20\x20\x20\x20_operations:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deleted:\x20deletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated:\x20updatedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20inserted:\x20insertedItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20updateComposite:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}if(_0x4b2866['readComposite']){const _0x53eb37=_0x366c1b[_0x3ac6f4(0x148)]?.[_0x3ac6f4(0x230)]?.['detailQuery']||null;let _0x1d5b3c;_0x53eb37?_0x1d5b3c='const\x20detailQuery\x20=\x20`'+_0x53eb37+'`;':_0x1d5b3c='const\x20detailQuery\x20=\x20`SELECT\x20*\x20FROM\x20'+_0x2d47af+_0x3ac6f4(0xfd)+_0xfa1375+_0x3ac6f4(0x197),_0x219afa+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20read\x20-\x20Read\x20header\x20with\x20detail\x20items\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Options\x20with\x20where\x20clause\x20(same\x20format\x20as\x20getData)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Records\x20with\x20detail\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20readComposite(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20WHERE\x20clause\x0a\x20\x20\x20\x20\x20\x20if\x20(!options.where)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20let\x20whereClauseSql;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20this.buildComplexWhereClause(options.where,\x20params,\x20paramIndex);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Query\x20header\x20records\x0a\x20\x20\x20\x20\x20\x20const\x20headerQuery\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20whereClauseSql.sql;\x0a\x20\x20\x20\x20\x20\x20params\x20=\x20whereClauseSql.params;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20headerResults\x20=\x20await\x20db.executeQuery(headerQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(headerResults.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20count:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20[]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20each\x20header,\x20fetch\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20compositeResults\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x2d47af['split']('.')[_0x3ac6f4(0x1b8)]()+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+_0x1d5b3c+_0x3ac6f4(0x13b);}return _0x219afa;}function generateSoftDeleteOverride(_0x48875a){const _0x3d75f2=a0_0x3751,_0x169533=_0x48875a[_0x3d75f2(0x10a)]||_0x48875a[_0x3d75f2(0x1e1)]&&_0x48875a['fieldName'][0x0]||'id',_0x2bb9e6=_0x48875a['softDelete']&&Array['isArray'](_0x48875a[_0x3d75f2(0x20f)][_0x3d75f2(0x16f)])?_0x48875a[_0x3d75f2(0x20f)][_0x3d75f2(0x16f)]:[];if(hasCascadeChildren(_0x48875a))return generateSoftDeleteCascadeOverride(_0x48875a);const _0x95cfe2=Array['isArray'](_0x48875a[_0x3d75f2(0x254)])?_0x48875a['softDeleteFkChildren'][_0x3d75f2(0x15c)](_0x49537f=>_0x49537f&&_0x49537f[_0x3d75f2(0xd4)]==='restrict'&&typeof _0x49537f[_0x3d75f2(0x1d1)]==='string'&&_0x49537f[_0x3d75f2(0x1d1)]&&Array[_0x3d75f2(0x25a)](_0x49537f['childColumns'])&&_0x49537f[_0x3d75f2(0x1f0)][_0x3d75f2(0x185)]===0x1&&typeof _0x49537f[_0x3d75f2(0x1f0)][0x0]==='string'&&typeof _0x49537f['parentColumn']===_0x3d75f2(0x265)&&_0x49537f[_0x3d75f2(0x287)]):[],_0xb821bd=[_0x169533];for(const _0x339432 of _0x2bb9e6){if(_0x339432&&_0x339432[_0x3d75f2(0x15e)]&&!_0xb821bd['includes'](_0x339432[_0x3d75f2(0x15e)]))_0xb821bd['push'](_0x339432['field']);}for(const _0x45acb9 of _0x95cfe2){if(!_0xb821bd['includes'](_0x45acb9['parentColumn']))_0xb821bd[_0x3d75f2(0x280)](_0x45acb9['parentColumn']);}const _0xa836cd=_0xb821bd['join'](',\x20'),_0x1915de=_0x95cfe2['map']((_0x1a6d3b,_0x588c09)=>{const _0xc61817=_0x3d75f2,_0x36e97c=_0x1a6d3b['childTable'],_0x573ac9=_0x1a6d3b['childColumns'][0x0],_0x330fdf=_0x1a6d3b[_0xc61817(0x287)],_0x54567b=_0x1a6d3b['childSoftDelete']===!![],_0x565755=_0x54567b?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'';return _0xc61817(0x209)+_0x588c09+_0xc61817(0x112)+_0x36e97c+'\x27.'+_0x573ac9+_0xc61817(0x23b)+_0x330fdf+'\x20(childSoftDelete='+_0x54567b+_0xc61817(0x258)+_0x330fdf+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictVal\x20!==\x20null\x20&&\x20__restrictVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x36e97c+_0xc61817(0xfd)+_0x573ac9+_0xc61817(0x12e)+_0x565755+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27'+_0x36e97c+'\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x3d75f2(0x108)](''),_0x2a1cb5=_0x2bb9e6[_0x3d75f2(0x23f)](_0x5974bb=>{const _0x75c140=_0x3d75f2,_0x403813=_0x5974bb['field'],_0xe066fb=_0x5974bb[_0x75c140(0x185)];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20reusable\x20\x27'+_0x403813+'\x27\x20(base\x20length\x20'+_0xe066fb+')\x20→\x20original\x20+\x20\x27##\x27\x20+\x20uuidv7()\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20lockedRow[\x27'+_0x403813+_0x75c140(0x1ec)+_0xe066fb+')\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete:\x20column\x20'+_0x403813+_0x75c140(0x262)+_0xe066fb+';\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+_0x403813+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x3d75f2(0x108)]('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20override\x20(R14).\x20/delete\x20melakukan\x20soft\x20delete,\x20bukan\x20hard\x20delete.\x0a\x20\x20\x20*\x20Atomic\x20(satu\x20transaction):\x20SELECT\x20FOR\x20UPDATE\x20row\x20aktif\x20→\x20mutasi\x20reusable\x20→\x20UPDATE\x0a\x20\x20\x20*\x20is_deleted/deleted_at/deleted_by\x20→\x20COMMIT\x20→\x20invalidateCache.\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20Response\x20identik\x20hard\x20delete\x20(backward-compat\x20client).\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20deleted_count,\x20deleted_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0a\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x20\x20\x20\x20//\x20deleted_by:\x20body\x20eksplisit\x20→\x20eventContext.additionalContext.user_id\x20→\x20\x27system\x27.\x0a\x20\x20\x20\x20const\x20deletedBy\x20=\x20this._resolveAuditUserId(criteria,\x20eventContext,\x20\x27'+DELETED_BY_COLUMN+_0x3d75f2(0x203)+_0xa836cd+_0x3d75f2(0x1c0)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20aktif:\x20tidak\x20ditemukan,\x20sudah\x20ter-soft-delete,\x20atau\x20kalah\x20race.\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20already\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Soft-delete\x20tiap\x20row\x20aktif\x20(multi-row:\x20tiap\x20row\x20memakai\x20suffix\x20uuidv7\x20sendiri).\x0a\x20\x20\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20lockedRow\x20of\x20lockResult.rows)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a'+_0x1915de+_0x2a1cb5+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+_0x3d75f2(0x24e)+DELETED_BY_COLUMN+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x169533+'\x27]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateQuery\x20=\x20\x27UPDATE\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20'+_0x169533+'\x20=\x20$\x27\x20+\x20p\x20+\x20\x27\x20RETURNING\x20\x27\x20+\x20returningFields;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateResult\x20=\x20await\x20client.query(updateQuery,\x20updateParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(updateResult.rows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deletedItems.push(updateResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Invalidate\x20cache\x20setelah\x20COMMIT\x20(WAJIB:\x20jalur\x20custom\x20tidak\x20auto-invalidate;\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20bila\x20terlewat,\x20/datatables\x20dan\x20/read\x20ter-cache\x20menyajikan\x20record\x20yang\x20sudah\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Successfully\x20deleted\x20\x27\x20+\x20deletedItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_count:\x20deletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_items:\x20deletedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}function generateSoftDeleteCascadeOverride(_0x4e725a){const _0x6c4200=a0_0x3751,_0x330f9f=_0x4e725a['softDeleteCascadeTree'];return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20cascade\x20override\x20(R14\x20+\x20FK-SD-3).\x20/delete\x20men-soft-delete\x20master\x20+\x20seluruh\x0a\x20\x20\x20*\x20descendant\x20cascade\x20dalam\x20SATU\x20transaction\x20(atomic\x20all-or-nothing),\x20restrict-per-node\x20409\x20di\x0a\x20\x20\x20*\x20setiap\x20node.\x20Response\x20backward-compat\x20(master\x20depth-0).\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20deleted_count,\x20deleted_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0a\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20FK-SD-3\x20closure\x20cascade\x20(master\x20+\x20seluruh\x20descendant\x20lewat\x20edge\x20cascade\x20ke\x20anak\x0a\x20\x20\x20\x20//\x20soft-delete).\x20Map-free:\x20seluruh\x20metadata\x20descendant\x20dipersist\x20generate-time\x20di\x20RDF.\x0a\x20\x20\x20\x20const\x20__sdCascadeMeta\x20=\x20'+JSON[_0x6c4200(0x24a)](_0x330f9f)+_0x6c4200(0x110)+DELETED_BY_COLUMN+_0x6c4200(0x17a)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x27\x20+\x20__activeFilter\x20+\x20\x27\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27\x22\x20+\x20ch.childTable\x20+\x20\x22\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(2)\x20soft-delete\x20node:\x20mutasi\x20reusable\x20(overflow\x20guard,\x20defense\x20in\x20depth)\x20+\x20set\x20kolom\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20soft-delete.\x20CHECK\x20konsistensi\x20terpenuhi\x20(reusable\x20termutasi\x20bersama\x20is_deleted=TRUE).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20current.row[ru.field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__orig\x20===\x20null\x20||\x20__orig\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__str\x20=\x20String(__orig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__str.length\x20>\x20ru.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete\x20cascade:\x20column\x20\x27\x20+\x20ru.field\x20+\x20\x27\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20on\x20\x27\x20+\x20current.table\x20+\x20\x27\x20exceeds\x20base\x20length\x20\x27\x20+\x20ru.length\x20+\x20\x27;\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(ru.field\x20+\x20\x27\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+_0x6c4200(0x29b)+DELETED_AT_COLUMN+'\x20=\x20NOW()\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(deletedBy);\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(pkVal);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Master\x20(depth-0)\x20di-UPDATE\x20ke\x20writeSource\x20(read/write\x20split-aware,\x20identik\x20jalur\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20existing)\x20+\x20RETURNING\x20untuk\x20response.\x20Descendant\x20ke\x20nama\x20tabel\x20closure\x20(qualified).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__target\x20=\x20current.isMaster\x20?\x20writeSource\x20:\x20current.table;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__returning\x20=\x20current.isMaster\x20?\x20(\x27\x20RETURNING\x20\x27\x20+\x20returningFields)\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__updateResult\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27UPDATE\x20\x27\x20+\x20__target\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20node.pk\x20+\x20\x27\x20=\x20$\x27\x20+\x20p\x20+\x20__returning,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20touched.add(current.table);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(current.isMaster\x20&&\x20__updateResult.rows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20masterDeletedItems.push(__updateResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(3)\x20expand:\x20anak\x20AKTIF\x20(is_deleted=FALSE)\x20lewat\x20edge\x20cascade\x20ke\x20anak\x20soft-delete,\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20FOR\x20UPDATE\x20(kunci\x20sebelum\x20mutasi),\x20skip\x20parentColumn\x20NULL.\x20Enqueue\x20tiap\x20row.\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ch\x20of\x20node.children)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ch.onDelete\x20!==\x20\x27cascade\x27\x20||\x20ch.childSoftDelete\x20!==\x20true)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__expandVal\x20=\x20current.row[ch.parentColumn];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__expandVal\x20===\x20null\x20||\x20__expandVal\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__childNode\x20=\x20__sdCascadeMeta.nodes[ch.childTable];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20ORDER\x20BY\x20<childPk>\x20sebelum\x20FOR\x20UPDATE\x20→\x20urutan\x20akuisisi\x20lock\x20deterministik\x20(mitigasi\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20ringan\x20konkurensi;\x20deadlock\x20penuh\x20=\x20Phase\x2004d).\x20Hanya\x20mengubah\x20URUTAN\x20baris,\x20bukan\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20himpunan\x20hasil\x20→\x20hasil\x20cascade\x20identik.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__childRows\x20=\x20(await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20\x27\x20+\x20__sdSelectCols(__childNode)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20ORDER\x20BY\x20\x27\x20+\x20__childNode.pk\x20+\x20\x27\x20FOR\x20UPDATE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__expandVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)).rows;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20cr\x20of\x20__childRows)\x20work.push({\x20table:\x20ch.childTable,\x20row:\x20cr,\x20isMaster:\x20false\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20touched:\x20[...touched],\x20masterDeletedItems,\x20deletedCount:\x20visited.size\x20};\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20baris\x20master\x20AKTIF\x20yang\x20cocok\x20kriteria\x20(FOR\x20UPDATE\x20+\x20is_deleted=FALSE):\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x200\x20row\x20→\x20404.\x20selectCols\x20cukup\x20untuk\x20node\x20master\x20(pk\x20+\x20reusable\x20+\x20parentColumn\x20anak).\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20__masterNode\x20=\x20__sdCascadeMeta.nodes[__sdCascadeMeta.master];\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20\x27\x20+\x20__sdSelectCols(__masterNode)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+_0x6c4200(0x16a);}function generateDeleteMethod(_0x3bce9b){const _0x406fd0=a0_0x3751,_0x559194={'XqFpm':function(_0x42f26f,_0x1add62){return _0x42f26f(_0x1add62);},'nYSTd':function(_0x22d9e4,_0x24a87b){return _0x22d9e4(_0x24a87b);}},_0x4ace08=_0x3bce9b[_0x406fd0(0x123)]||{},_0x507e1f=_0x3bce9b[_0x406fd0(0x148)]&&_0x3bce9b[_0x406fd0(0x148)]['enabled'],_0x2c8ac9=_0x3bce9b['masterDetail']?.[_0x406fd0(0x20d)]||![];if(!_0x4ace08['delete'])return'';const _0x386641=_0x3bce9b['primaryKey']||'id';if(_0x559194['XqFpm'](isSoftDeleteEnabled,_0x3bce9b))return _0x559194[_0x406fd0(0x248)](generateSoftDeleteOverride,_0x3bce9b);if(!_0x507e1f)return'';const _0x351696=_0x3bce9b['masterDetail'][_0x406fd0(0x204)],_0x2d77bc=_0x3bce9b[_0x406fd0(0x148)][_0x406fd0(0x19c)];let _0x5f1554='\x0a';return _0x5f1554+=_0x406fd0(0x132)+(_0x2c8ac9?'\x0a\x20\x20\x20\x20\x20\x20//\x20cascadeDelete\x20=\x20true:\x20DELETE\x20child\x20records\x20first,\x20then\x20header\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Deleting\x20child\x20records\x20from\x20'+_0x351696+_0x406fd0(0x242)+_0x386641+_0x406fd0(0x144)+_0x386641+_0x406fd0(0x166)+_0x351696+'\x20WHERE\x20'+_0x2d77bc+_0x406fd0(0x1a1)+_0x351696+'`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20DELETE\x20header\x20record\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderQuery\x20=\x20`DELETE\x20FROM\x20${this.writeSource}\x20WHERE\x20${whereClause}\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderResult\x20=\x20await\x20client.query(deleteHeaderQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(deleteHeaderResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedData\x20=\x20deleteHeaderResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Header\x20record\x20deleted\x20successfully\x27);\x0a\x20\x20\x20\x20\x20\x20':'\x0a\x20\x20\x20\x20\x20\x20//\x20cascadeDelete\x20=\x20false:\x20Only\x20DELETE\x20header\x20record\x0a\x20\x20\x20\x20\x20\x20//\x20Database\x20foreign\x20key\x20constraint\x20akan\x20handle\x20validasi\x20child\x20records\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Deleting\x20header\x20record\x20(cascadeDelete\x20=\x20false)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderQuery\x20=\x20`DELETE\x20FROM\x20${this.writeSource}\x20WHERE\x20${whereClause}\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderResult\x20=\x20await\x20client.query(deleteHeaderQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(deleteHeaderResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedData\x20=\x20deleteHeaderResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Header\x20record\x20deleted\x20successfully\x27);\x0a\x20\x20\x20\x20\x20\x20')+'\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Data\x20successfully\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20deletedData'+(_0x2c8ac9?',\x0a\x20\x20\x20\x20\x20\x20\x20\x20deletedChildRecords:\x20deleteChildResult.rowCount':'')+'\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20deleteData:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a',_0x5f1554;}function a0_0x4c62(){const _0x4abfa=['DhLWzq','Bgv0igjHC2vrDwvYEsa9iga','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','zMLSDgvY','zM9YBxvSyq','zMLLBgq','cIaGicaGicaGlY8GqNvPBgqGzgv0ywLSifvqrefursbXDwvYEqOGicaGicaGignVBNn0igrLDgfPBezPzwXKCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfzHBhvLCYa9ifTDoWOGicaGicaGigXLDcbKzxrHAwXqBgfJzwHVBgrLCKLUzgv4id0GmtSkcIaGicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAxrLBsKPihSkicaGicaGicaGigLMicHRzxKGpt09igrLDgfPBfbYAw1HCNLlzxKPignVBNrPBNvLoWOGicaGicaGicaG','Aw5JBhvKzxm','ntqYode3muHcwgTczG','t1H4tMu','jYWkicaGicaGicaGigrVy3vTzw50yxrPB246icDtzwuGAw5KAxzPzhvHBcbLBMrWB2LUDcbKB2n1BwvUDgf0Aw9UjYWkicaGicaGicaGigDLBMvYyxrLzdOGjW','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','ie9srevsiejzigeU','j107cGOGicaGicaVlYberuXfveuGy2HPBgqGCMvJB3jKCYbTzw5Nz3vUywTHBIbMB3jLAwDUs2v5cIaGicaGignVBNn0igrLBgv0zunOAwXKuxvLCNKGpsbGrevmrvrfiezst00G','l2XVB2T1CcaTifbLBMnHCMLHBIa','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwq','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CMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1Tyw5Hz2vYjYK7cIaGicaGicaGicbJB25ZDcbFx2nHy2HLuMvNid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1PBNzHBgLKyxrPB24TCMvNAxn0CNKNktSkicaGicaGicaGignVBNn0if9FChjLzML4id0Gx19JywnOzu1NCI5WCMvMAxG7cIaGicaGicaGicbMB3iGkgnVBNn0if9FDcbVzIb0B3vJAgvKksb7cIaGicaGicaGicaGic8Vie1HC3rLCIbZDwrHAcbKAs1PBNzHBgLKyxrLihzPysb0AgLZlMLUDMfSAwrHDgvdywnOzsGPigv4Axn0Aw5NiokgKIbOAw5KyxjPigrVyMvSlGOGicaGicaGicaGicbPzIaOx190id09psbFx3nKq2fZy2fKzu1LDgeUBwfZDgvYksbJB250Aw51ztSkicaGicaGicaGicaGlY8Gu3rYAxaGC2nOzw1HiokgKIbIzw50DwSGyMfYzsb5yw5NigrPCgfRywKGBw9KzwWGzgvZy2vUzgfUDcbWywrHihn1CgvYkhrHyMXLtMfTzsKUcIaGicaGicaGicaGic8Vigv4DhjHy3rdywnOzu1VzhvSzsbHDgfZig5HBweGyMfYzsdIHPiGj2rLzMf1BhqNoYbLEhrYywn0q2fJAgvfBMrWB2LUDcdIHPiGyMfYzsbPDhuGC2vUzgLYAs4kicaGicaGicaGicaGy29UC3qGx19IyxjLid0Gx190lMLUzgv4t2yOjY4Nksa+psaWid8Gx190lNn1yNn0CMLUzYHFx3qUBgfZDeLUzgv4t2yOjY4NksaRidePidOGx190oWOGicaGicaGicaGicbJB25ZDcbFx21Vzca9icDKzwzHDwX0jZSkicaGicaGicaGicaGy29UC3qGx19LCca9if9FyMfYztSkicaGicaGicaGicaGyxDHAxqGx19JywnOzu1NCI5PBNzHBgLKyxrLugf0DgvYBIHFx3bYzwzPEcaRif9FBw9KicSGjZONicSGx19LCcaRicC6kICPoWOGicaGicaGicaGicaVlYbdyxnJywrLihbYB2nLC3nVCI9KyxnOyM9HCMqGEwfUzYbIzxjNyw50Dw5NihbHzgeGDgfIzwWGzgvZy2vUzgfUDcaOCMvNAxn0CNKGyNKTzw5KCg9PBNqPlGOGicaGicaGicaGicbJB25ZDcbFx3jLz1bHDhrLCM5Zid0Gx19JywnOzvjLzY5NzxrjBNzHBgLKyxrPB25qyxr0zxjUCYHFx2vWlcbFx3bYzwzPEcK7cIaGicaGicaGicaGigzVCIaOy29UC3qGx19YCcbVzIbFx3jLz1bHDhrLCM5ZksbHD2fPDcbFx2nHy2HLtwDYlMLUDMfSAwrHDgvqyxr0zxjUkf9FCNaPoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkgvYCIKGEWOGicaGicaGicaGlY8Gr3jHy2vMDwWG4OcuigTLz2fNywXHBIbPBNzHBgLKyxnPignHy2HLigrLC2nLBMrHBNqGDgLKywSGBwvTyMf0ywXRyw4GC29MDc1KzwXLDguUcIaGicaGicaGFqOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGBwvZC2fNztOGj1n1y2nLC3nMDwXSEsbKzwXLDgvKicCGkYbTyxn0zxjezwXLDgvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGigrLBgv0zwrFy291BNq6ig1HC3rLCKrLBgv0zwrjDgvTCY5Szw5NDgGScIaGicaGicaGzgvSzxrLzf9PDgvTCZOGBwfZDgvYrgvSzxrLzeL0zw1ZcIaGicaGih07cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIa','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbeEw5HBwLJigXVB2T1CcbKzw5Nyw4GC3vWCg9YDcbMAwX0zxjPBMCGDgfTyMfOyw4GzgfUihbLBMnHCMLHBIbTDwX0As1MAwvSzaOGicaQiebWyxjHBsb7C3rYAw5NFsbZzwfYy2GGlsblyxrHigT1BMnPihbLBMnHCMLHBGOGicaQiebWyxjHBsb7t2jQzwn0FsbLEhrYyuzPBhrLCNmGlsbgAwX0zxiGDgfTyMfOyw4Gkg1PC2fSoIbJB21Wyw55x2LKkqOGicaQiebYzxr1CM5ZihTbCNjHEx0GqxjYyxKGB2jQzwSGAgfZAwWGBg9VA3vWcIaGicOVcIaGyxn5BMmGz2v0tg9VA3vWrgf0yur5BMfTAwmOC2vHCMnOlcbLEhrYyuzPBhrLCNmGpsb7FsKGEWOGicaGDhj5ihSkicaGicaGlY8Gr3vUywTHBIbJDxn0B20GBg9VA3vWignVBMzPzYbQAwTHigfKysWGzMfSBgjHy2SGA2uGDgv4DezPzwXKCYbKzxrLy3rPB24kicaGicaGy29UC3qGBg9VA3vWq29UzMLNid0G','m1rRAfLZEa','ksb8FcaWktS','CMv1C2fIBgu','sLfvuwu','tw9KzwW','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsb1CgrHDguG','mJG0odu4wvDxq3bc','zMLLBgrmywjLBhm','lY8GvgfIzwWGDgfUCgeGyxvKAxqGy29SDw1UCZOGzgLZywjSzsbPBMPLy3rPB24GAgvSCgvYcG','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','jYWkicaGicaGBw9KDwXLtMfTztOGjW','ignVBxbVC2L0zsb1CgrHDguGC3vJy2vZC2z1BdOG','Dhj1zq','jYK7cGOGicaGlY8Gs29SB20GBwLUAw11Bsb1BNr1AYbTzw1WCM9ZzxmGC2vIDwfOig5Vzgu6ihbRicHPzgvUDgL0yxmGDMLZAxrLzc1ZzxqVBg9JAYaRifDirvjfifvqrefursKkicaGic8VicSGDgLHCcbMAwvSzcbYzxvZywjSzsaOyMfJysbVCMLNAw5HBcbZzwjLBhvTig11DgfZAsKGkYbWyxjLBNrdB2X1Bw4GDgLHCcbHBMfRicHUAwXHAsb1BNr1AWOGicaGlY8GCMvZDhjPy3qTy2HLy2SGjIbLEhbHBMqPlIbezwr1CcWGDxj1DgfUihn0ywjPBc4kicaGignVBNn0if9FC2rtzwXLy3rdB2XZid0Gkg5VzguPid0+ihSkicaGicaGy29UC3qGy29SCYa9ifTDoWOGicaGicbJB25ZDcbZzwvUid0GBMv3ifnLDcGPoWOGicaGicbJB25ZDcbHzgqGpsaOyYKGpt4GEYbPzIaOyYaMjIaHC2vLBI5OyxmOyYKPihSGC2vLBI5HzgqOyYK7ignVBhmUChvZAcHJktSGFsb9oWOGicaGicbHzgqOBM9Kzs5WAYK7cIaGicaGigzVCIaOy29UC3qGCNuGB2yGBM9Kzs5YzxvZywjSzsKGywrKkhj1lMzPzwXKktSkicaGicaGzM9YicHJB25ZDcbJAcbVzIbUB2rLlMnOAwXKCMvUksbHzgqOy2GUCgfYzw50q29SDw1UktSkicaGicaGCMv0DxjUignVBhmUAM9PBIGNlcaNktSkicaGih07cGOGicaGlY8Gv2fSAYbJyxnJywrLihjLA3vYC2LMicH3B3jRBgLZDcberLmGkYb2AxnPDgvKlxnLDcaNDgfIBgv8CgSNksbWywrHifnbvfuGy2XPzw50iokgKIbHDg9TAwmUcIaGicaVlYbuAwfWig5Vzgu6icGXksbYzxn0CMLJDc1WzxiTBM9Kzsa0mdKSicGYksbZB2z0lwrLBgv0zsaOBxv0yxnPihjLDxnHyMXLicCJiYCRDxvPzhy3icSkicaGic8VigLZx2rLBgv0zwqVzgvSzxrLzf9HDc9KzwXLDgvKx2j5ksWGkdmPigv4CgfUzcbHBMfRieflveLgignHC2nHzguUien5y2XLl2rPyw1VBMqGyw1HBIbSzxDHDaOGicaGlY8GDMLZAxrLzc1ZzxqGkYbMAwX0zxiGAxnFzgvSzxrLzd1gquXtrsbZywf0igv4CgfUzc4GsgfUEweGyMfYAxmGBwfZDgvYicHKzxb0Ac0WlcbPC01HC3rLCIKkicaGic8VigrPA3vTChvSA2fUihvUDhvRihjLC3bVBNnLigjHy2T3yxjKlwnVBxbHDc4kicaGignVBNn0if9Fy2fZy2fKzvnVzNrezwXLDguGpsbHC3LUyYaOy2XPzw50lcbTyxn0zxjsB3DZlcbKzwXLDgvKqNKPid0+ihSkicaGicaGy29UC3qGDMLZAxrLzca9ig5LDYbtzxqOktSkicaGicaGy29UC3qGDg91y2HLzca9ig5LDYbtzxqOktSkicaGicaGy29UC3qGBwfZDgvYrgvSzxrLzeL0zw1Zid0Gw107cIaGicaGignVBNn0ihDVCMSGpsbTyxn0zxjsB3DZlM1HCcGOCIKGpt4GkhSGDgfIBgu6if9FC2rdyxnJywrLtwv0ys5Tyxn0zxiSihjVDZOGCIWGAxnnyxn0zxi6ihrYDwuGFsKPoWOGicaGicb3AgLSzsaOD29YAY5Szw5NDgGGpIaWksb7cIaGicaGicaGy29UC3qGy3vYCMvUDca9ihDVCMSUCg9WkcK7cIaGicaGicaGy29UC3qGBM9Kzsa9if9FC2rdyxnJywrLtwv0ys5UB2rLC1TJDxjYzw50lNrHyMXLxtSkicaGicaGicbJB25ZDcbWA1zHBca9ign1CNjLBNqUCM93w25VzguUCgTDoWOGicaGicaGignVBNn0ihzPC2L0zwrlzxKGpsbJDxjYzw50lNrHyMXLicSGj3WNicSGCgTwywW7cIaGicaGicaGAwyGkhzPC2L0zwqUAgfZkhzPC2L0zwrlzxKPksbJB250Aw51ztSkicaGicaGicb2AxnPDgvKlMfKzcH2AxnPDgvKs2v5ktSkcIaGicaGicaGlY8GkdePihjLC3rYAwn0lxbLCI1UB2rLiokaLcbNzw5LCMfSAxnHC2KGrKSTu0qTmIbqAgfZzsaWmYbRzsbtrvrjqvaGBM9Kzs4Gqw5HAYbZB2z0lwrLBgv0zqOGicaGicaGic8VicaGicdIHPiGAgfUEweGCM93ieflveLgicHPC19KzwXLDgvKpuzbtfnfksbTzw1IBg9RAxi7igfUywSGBM9UlxnVzNqTzgvSzxrLiokgKIbYB3CGyxbHihb1BI4kicaGicaGicbMB3iGkgnVBNn0ignOig9Mig5VzguUy2HPBgrYzw4PihSkicaGicaGicaGigLMicHJAc5VBKrLBgv0zsaHpt0Gj3jLC3rYAwn0jYKGy29UDgLUDwu7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0Gy3vYCMvUDc5YB3DBy2GUCgfYzw50q29SDw1UxtSkicaGicaGicaGigLMicHFx3jLC3rYAwn0vMfSid09psbUDwXSihX8if9FCMvZDhjPy3rwywWGpt09ihvUzgvMAw5LzcKGy29UDgLUDwu7cIaGicaGicaGicbJB25ZDcbFx2fJDgL2zuzPBhrLCIa9ignOlMnOAwXKu29MDerLBgv0zsa/icCGqu5eia','id0Gke51BwjLCIHPDgvTlG','j10kicaGicaGicaGic5MAwX0zxiOzMLLBgqGpt4Giwf1Dg9hzw5LCMf0zuzPzwXKCY5PBMnSDwrLCYHMAwvSzcKPoWOkicaGicaGicbJB25ZDcbTAxnZAw5NrMLLBgrZid0GCMvXDwLYzwrgAwvSzhmUzMLSDgvYkgzPzwXKid0+icfYzxeUyM9KEvTMAwvSzf0GFhWGCMvXlMjVzhLBzMLLBgrDid09psaNjYK7cGOGicaGicaGigLMicHTAxnZAw5NrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgrZjYWkicaGicaGicaGicaGBwvZC2fNztOGyfjLCxvPCMvKigzPzwXKkhmPoIaKE21PC3nPBMDgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbfBMrWB2LUDcb1CgrHDguGBwvTyNv0DwHRyw4GChjPBwfYEsbRzxKkicaGicaGAwyGkgvUzhbVAw50id09psaNDxbKyxrLjYKGEWOGicaGicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','rfv1v0i','cIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGigLMicGHqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGixjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ifSkicaGicaGicaGicaGEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8Vid09psbfvKvovcbmsuzfq1Ldteu6ig9UqMvMB3jLierftevursa9pt0kicaGigXLDcbVBgreyxrHid0GBNvSBdSkicaGigXLDcbUzxDeyxrHid0GBNvSBdSkicaGignVBNn0ihjLCxvLC3reyxrHid0GCMvXlMjVzhK7cIaGicbSzxqGCMvZCg9UC2veyxrHid0GBNvSBdSkcIaGicaVlYbdzwSGyxbHA2fOigrHDgeGzxHPC3qGC2vIzwX1BsbKzwXLDguGzgfUigfTyMLSig9SzcbKyxrHihvUDhvRigv2zw50igXPzMvJEwnSzqOGicaGlY8GtwvUz2D1BMfRyw4Gu0vmrunuicOGzgfYAsb0ywjLBcb1DgfTysaODgfUCgeGzxHWBgLJAxqGC2vSzwn0ksbRyxjLBMeGzMLLBgroyw1LcIaGicaVlYbIAxnHig1LBMDHBMr1BMCGA29SB20GzgfYAsbkt0LoicHTAxmUignPDhLFBMfTzsKGEwfUzYb0AwrHAYbHzgeGzgKGDgfIzwWGDxrHBwekicaGigLMicHYzxeUyM9KEs53AgvYzsaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpIaWksb7cIaGicaGignVBNn0igzPCNn0q29UzgL0Aw9Uid0GCMvXlMjVzhKUD2HLCMvBmf07cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxHPC3rPBMDeyxrHid0GyxDHAxqG','igXVB2T1CdONlcbLCNjVCIK7cIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGBg9VA2LUzYb1Cca','odCZntm0z1DnuNL0','id0GCMvXDwLYzsGNlI4VlI4VBw9KzwXZlW','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0','Bwfmr0K','Bgv0igjHC2vrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','BgvUz3rO','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','zxHWB3j0uxvLCNK','jYWkicaGicaGBw9KDwXLoIaN','ounOANPrtW','ywDNCMvNyxrLq29UzMLN','q21bAwW','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGCM91DgvYid0GzxHWCMvZCY5sB3v0zxiOktSky29UC3qG','y29TCg9Uzw50CW','zMLLBgrZ','ihX8icfbCNjHEs5PC0fYCMf5kgrHDgeU','C29MDerLBgv0zuzRq2HLy2TZ','cGOGicaGlY8GuMvWBgfJzsbHBNKGCMvTywLUAw5NihbSywnLAg9SzgvYCYaTigD1BMfRyw4GCMvHzfnVDxjJzsb1BNr1AYbVCgvYyxnPihjLywqkicaGigjHC2vrDwvYEsa9igjHC2vrDwvYEs5YzxbSywnLkc8KE3rHyMXLtMfTzx0VzYWGDgHPCY5YzwfKu291CMnLktSkicaGigjHC2vrDwvYEsa9igjHC2vrDwvYEs5YzxbSywnLkc8KE3rOAxmUDgfIBgv9l2CSihrOAxmUCMvHzfnVDxjJzsK7cGOGicaGCMv0DxjUigjHC2vrDwvYEtSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDfjLywrrDwvYEsb1BNr1AYbLBMrWB2LUDcaVCMvHzaOGicaQifbYAw9YAxrHCZOGDMLLD05HBwuGlt4GDMLLD1f1zxj5ic0+ihrHyMXLtMfTzsaOu0vmrunuicOGrLjptsbYzwfKu291CMnLkqOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0GuxvLCNKGB3b0Aw9UCWOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifnrtcbXDwvYEsbKyxnHCIb1BNr1AYaVCMvHzaOGicaQlWOGigDLDfjLywrrDwvYEsHVChrPB25Zid0GE30PihSkicaGic8VifbYAw9YAxr5ide6ihzPzxDoyw1LicHYzwfSigrHDgfIyxnLihzPzxCPcIaGicbPzIaODgHPCY52Awv3tMfTzsaMjIb0AgLZlNzPzxDoyw1Lice9psb0AgLZlNrHyMXLksb7cIaGicaGihjLDhvYBIaNu0vmrunuicOGrLjptsaNicSGDgHPCY52Awv3tMfTztSkicaGih0k','Dg9ju09tDhjPBMC','lMDLDerHDgeOEWOGicaGicaGicaGD2HLCMu6ifT7igTLEtOGzMLYC3rdB25KAxrPB24UA2v5lcb2ywX1ztOGzMLYC3rdB25KAxrPB24UDMfSDwuGFv0kicaGicaGicb9ktSkcIaGicaGicaGAwyGkcfLEgLZDgLUz0rHDgeUC3vJy2vZCYb8FcaHzxHPC3rPBMDeyxrHlMrHDgeGFhWGzxHPC3rPBMDeyxrHlMrHDgeUBgvUz3rOid09psaWksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicaGig1LC3nHz2u6icC','id0Gvfjvrsbgt1iGvvbeqvrfjZSkicaGicaGy29UC3qGBg9JA1jLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHSB2nRuxvLCNKSihDOzxjLqNvPBhqUCgfYyw1ZktSkcIaGicaGigLMicHSB2nRuMvZDwX0lNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGlY8GvgLKywSGywrHihjVDYb0zxjOyxb1CZOGDgLKywSGzgL0zw11A2fUlcbHDgf1ihjLy29YzcbHA3rPzIaOyNvRyw4GDgvYAgfWDxmPlGOGicaGicaGignVBNn0ig5VDezVDw5KrxjYB3iGpsbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqGB3iGBM90igrLBgv0zwqNktSkicaGicaGicbUB3rgB3vUzevYCM9YlNn0yxr1C0nVzguGpsa0mdq7cIaGicaGicaGDgHYB3CGBM90rM91BMrfCNjVCJSkicaGicaGFqOkicaGicaGlY8GmI4GuMvZDg9Yzsb0AwfWihjVDYb0zxjOyxb1CYaOC3rYAxaGC3vMzML4iokgKIbRB25MBgLRiokgKIbgsYdIHPiGCMvZzxqPlGOGicaGicbJB25ZDcbYzxn0B3jLzeL0zw1Zid0Gw107cIaGicaGigzVCIaOy29UC3qGBg9JA2vKuM93ig9MigXVy2Tszxn1BhqUCM93CYKGEWOGicaGicaGignVBNn0ihnLDenSyxvZzxmGpsbBxtSkicaGicaGicbJB25ZDcb1CgrHDgvqyxjHBxmGpsbBxtSkicaGicaGicbSzxqGCca9ide7cG','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLicyMihjLC3vSDc5KyxrHicyMihjLC3vSDc5KyxrHlMXLBMD0Aca+idaPihSkicaGicaGy29UC3qGCMvJB3jKid0GCMvZDwX0lMrHDgfBmf07cIaGicaGigLMicHYzwnVCMrBCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1UxsaHpt0GDw5KzwzPBMvKicyMcIaGicaGicaGicbtDhjPBMCOCMvJB3jKw3jLCs5FCMvXDwvZDfnJB3bLlMnVBhvTBL0Pice9psbtDhjPBMCOCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicbTzxnZywDLoIaN','Du12uM8','id0GjdeGt1jerviGqLKGBgLUzv9UDw1IzxjGoW','vvvyChq','cIaGicaVlYbiyw5KBguGA2H1C3vZihvUDhvRigvYCM9YicjeyxrHihrPzgfRigrPDgvTDwTHBIikicaGigLMicHLCNjVCI5TzxnZywDLid09psaNrgf0ysb0AwrHAYbKAxrLBxvRyw4NihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','jZSkicaGicaGy29UC3qGDgv4DezPzwXKid0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbSB29RDxbdB25MAwCUDgv4DezPzwXKcIaGicaGicaGoIb0zxH0rMLLBgrZwZbDoWOkicaGicaGBgv0ihf1zxj5id0GyfnftevdvcaKE2LKrMLLBgr9lcaKE3rLEhrgAwvSzh0GrLjptsaKE3rOAxmUz2v0tg9VA3vWu291CMnLkcL9ydSkicaGicaGAwyGkhDOzxjLq29UzgL0Aw9UCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCxvLCNKGkZ0GycbxsevsrsaKE3DOzxjLq29UzgL0Aw9UCY5QB2LUkcCGqu5eicCPFwa7cIaGicaGih0kicaGicaGCxvLCNKGkZ0GycbpuKrfuIbcwsaKE2XVB2T1CenVBMzPzYaMjIbSB29RDxbdB25MAwCUAgfZq3vZDg9Tvgv4Dca/icCYjYa6icDHlICGkYb0zxH0rMLLBgrZwZbDFwa7cGOGicaGicbJB25ZB2XLlMXVzYGNpt09ierfqLvhierztKfnsumGte9ps1vqid09psCPoWOGicaGicbJB25ZB2XLlMXVzYGNuxvLCNK6jYWGCxvLCNKPoWOGicaGicbJB25ZB2XLlMXVzYGNugfYyw1ZoICSihbHCMfTCYK7cIaGicaGignVBNnVBguUBg9NkcDfEhrYysbMAwX0zxjZoICSigv4DhjHrMLSDgvYCYK7cIaGicaGignVBNnVBguUBg9NkcDmB29RDxaGy29UzMLNoICSigXVB2T1CenVBMzPzYK7cIaGicaGignVBNnVBguUBg9NkcC9pt0Gru5eierfqLvhid09psCPoWOkicaGicaGy29UC3qGzgf0ysa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsWGCgfYyw1ZktSkcIaGicaGihjLDhvYBIbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw1BAwrgAwvSzf0GFhWGAxrLBs4','jYWkicaGicaGicaGihnLCNzPy2vZoIb7FsWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8ihjLCs5IB2r5lNvWzgf0zwrFyNKGFhWGj3n5C3rLBsCScIaGicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcWkicaGicaGicaGicaGlY8GsLDuigzVCNDHCMrPBMCGkeXHEwvYideGuKXtktOGqxv0Ag9YAxPHDgLVBIbOzwfKzxiGzgfYAsbYzxf1zxn0igfZBgKkicaGicaGicaGicaGlY8GzgKTzM9YD2fYzcbRzsb3B3jRzMXVDYbOB29RignHBgWGywDHCIbLBMrWB2LUDcb0DwP1yw4GEwfUzYbWDw55yqOGicaGicaGicaGicaVlYbYzxf1zxn0u2nVCguGywT0AwyGDgv0yxaGBwvUzxjPBweGCMvXlNvZzxiGzgvUz2fUihnJB3bLihLHBMCGC2fTys4kicaGicaGicaGicaGlY8Gu2vSywX1igrPlxnLDcaOyNvRyw4GA29UzgLZAw9UywWGCgfKysbWyxLSB2fKlNjLCxvLC3rty29WzsKGA2fYzw5HcIaGicaGicaGicaGic8VigHVB2SGvvjmihr1ANvHBIbTDw5NA2LUihb1BNLHihjLCxvLC3rty29WzsbZzw5KAxjPihDHBgf1ChvUig1VzhvSzqOGicaGicaGicaGicaVlYbZDw1IzxiGDgLKywSUcIaGicaGicaGicaGigf1DgHizwfKzxi6ihjLCs5OzwfKzxjZlMf1DgHVCML6yxrPB24GFhWGBNvSBaOGicaGicaGicaGFqOGicaGicaGih07cGOGicaGicaGic8VieLUAMvJDcbZzxj2AwnLCYbQAwTHihrLCNnLzgLHcIaGicaGicaGDhj5ihSkicaGicaGicaGignVBNn0ihSGCMvZB2X2zvnLCNzPy2vZih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl3nLCNzPy2uTCMvZB2X2zxiNktSkicaGicaGicaGigv2zw50q29UDgv4Dc5Zzxj2AwnLCYa9ihjLC29SDMvtzxj2AwnLCYGPoWOGicaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicaGic8VifnLCNzPy2uGCMvZB2X2zxiGB3bZAw9UywWkicaGicaGicb9cGOGicaGicaGihjLC3vSDca9igf3ywL0ia','zM9YzwLNBKTLEq','zgf0yxrHyMXLC1f1zxj5','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj2nYzwf0zsCPoWO','ihLHBMCGBwv3yxjPC2KGzNvUz3nPlwz1BMDZAsbKyxjPiejHC2vnB2rLBaOGkIbuywjSztOG','jYdIHPiG','id0GjdfGoWOGicaGicbJB25ZDcbKzwXLDgvdAgLSzfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzwXLDgvdAgLSzff1zxj5lcbBAgvHzgvYuhjPBwfYEuTLEvzHBhvLxsK7cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50FsbJAgLSzcbYzwnVCMqOCYKGzNjVBsa','l2nYzwf0zs1JB21WB3nPDguGlsbdB21WB3nPDguGy3jLyxrLia','cGOGicaGlY8GuMvWBgfJzsbHBNKGCMvTywLUAw5NihbSywnLAg9SzgvYCWOGicaGyMfZzvf1zxj5id0GyMfZzvf1zxj5lNjLCgXHy2uOl1WKxhT0ywjSzu5HBwvCFs9Nlcb0AgLZlNjLywrtB3vYy2uPoWOGicaGyMfZzvf1zxj5id0GyMfZzvf1zxj5lNjLCgXHy2uOl1WKxhT0AgLZxc50ywjSzvX9l2CSihrOAxmUCMvHzfnVDxjJzsK7cGOGicaGCMv0DxjUigjHC2vrDwvYEtS','CMvXDwvZDfnJB3bL','ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGlY8GuKvbrcbVCgvYyxrPB25ZoIbPBMPLy3qGC2nVCguGAw50BYbYzxeUyM9KEs53AgvYzqOGigLMicHBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNCMvHzc1JB21WB3nPDguNxs5PBMnSDwrLCYHLBMrWB2LUDcKPihSkicaGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGicaGCMvXlMjVzhKUD2HLCMuGpsbBC2nVCgvdB25KAxrPB25DoWOGicaGFsbLBhnLigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksKGEWOGicaGicbYzxeUyM9KEs53AgvYzs51BNnOAwz0khnJB3bLq29UzgL0Aw9UktSkicaGih0GzwXZzsbPzIaOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPksb7cIaGicaGignVBNn0ig9YAwDPBMfStg9NAwmGpsbYzxeUyM9KEs53AgvYzs5SB2DPyYb8FcaNqu5ejZSkicaGicaGAwyGkg9YAwDPBMfStg9NAwmGpt09icDbtKqNksb7cIaGicaGicaGCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCY51BNnOAwz0khnJB3bLq29UzgL0Aw9UktSkicaGicaGFsbLBhnLihSkicaGicaGicbYzxeUyM9KEs53AgvYzsa9ihSkicaGicaGicaGigXVz2LJoIaNqu5ejYWkicaGicaGicaGignVBMrPDgLVBNm6ifSkicaGicaGicaGicaGC2nVCgvdB25KAxrPB24ScIaGicaGicaGicaGihSGBg9NAwm6ig9YAwDPBMfStg9NAwmSignVBMrPDgLVBNm6ihjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFqOGicaGicaGicaGxqOGicaGicaGih07cIaGicaGih0kicaGih0kicb9cGOGic8VierftevurtOGChjLCgvUzcbZy29WzsbJB25KAxrPB24GDg8GD2HLCMuGyxjYyxKkicbPzIaOzw5KCg9PBNqGpt09icDKzwXLDguNksb7cIaGicbPzIaOCMvXlMjVzhKUD2HLCMuPihSkicaGicaGAwyGkefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGCMvXlMjVzhKUD2HLCMuUDw5ZAgLMDcHZy29WzunVBMrPDgLVBIK7cIaGicaGih0kicaGih0kicb9cGOGic8ViensrufursaVieferdOGzM9Yy2uGC2nVCguGy29SDw1UihzHBhvLcIaGAwyGkgvUzhbVAw50id09psaNywrKjYb8FcbLBMrWB2LUDca9pt0Gj2nYzwf0zsCPihSkicaGihjLCs5IB2r5wYC','DMLLD1f1zxj5','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzW','cIaGicaGignVBNn0ignHBgn1Bgf0Aw9UCYa9ia','zgf0yxrHyMXLCW','ksb8FcaWoWOGicaGicaGihjLDhvYBIbZDw0GkYaOCxr5icOGChjPy2uPoWOGicaGicb9lcaWktSkicaGih0','cIaGicaGic8VifnVzNqTzgvSzxrLihzPC2LIAwXPDhKGC2nVCguGkfiXnsKkicaGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','igjHCNukCM91DgvYlNbVC3qOjY9JCMvHDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','ydSkcIaGicaGic8ViejHBMD1BIbxsevsrsbJBgf1C2uGAMLRysbHzgeGzgfUihrPzgfRigTVC29UzWOGicaGicbPzIaOkg9WDgLVBNmUD2HLCMuGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLksaMjIbVChrPB25ZlNDOzxjLlMXLBMD0Aca+idaPihX8cIaGicaGicaGicaOB3b0Aw9UCY53AgvYzsaMjIbVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmPicyMig9WDgLVBNmUD2HLCMuUy29UzgL0Aw9UCY5Szw5NDgGGpIaWksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGicaGihf1zxj5icS9iga','zLn6yw8','icaGihjLDhvYBIbMB3jTyxr0zwq7','oWOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','cI8Vifbpu1qGl2fWAs8','icaGic8VicGVCMvHzcWGl2zPCNn0lcbKyxrHDgfIBgvZlcbJCMvHDguSihvWzgf0zsKGzgKGC2f0DsbJAg9RzxbVAw50lcb0yw5Wysb1yMfOiejHC2vnB2rLBc9NzxrszwfKuxvLCNKUcG','l2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGicaGicaGignVBNn0igHLywX0AeLUzM8Gpsb7cIaGicaGicaGicbZDgf0Dxm6icDVAYCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOks5YzxbSywnLkcDujYWGjYaNks5YzxbSywnLkc9ClLXKEZn9wIqVlcaNjYKScIaGicaGicaGicbZzxj2AwnLoIaN','DxbKyxrLzej5','BNvSBa','cIaQcIaQiez1BMDZAsb1BNr1AYbTzw5NzwTZzwT1C2KGBw9KDwWG','Cg9W','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','y3jLyxrLzef0','BenYAwy','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','lNjLC3rVCMveyxrHkhjLCs5IB2r5lcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','laOGicaGicb3B3jRzMXVD0nVBMzPzZOG','cNjVDxrLCI5WB3n0kcCVy3jLyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','iezst00GjYaRihDYAxrLu291CMnLicSkicaGicaGicaNifDirvjficGNicSGD2HLCMvcDwLSDc5ZCwWGkYaNksbbtKqG','id0GtLvmtcCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','BwLZC2LUzW','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','iJOG','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHihnHAMeGkgv4y2X1zguGzgv0ywLSigfYCMf5ksb1BNr1AYb2ywXPzgf0Aw9UcIaGicaGignVBNn0igHLywrLCKrHDgfgB3jwywXPzgf0Aw9Uid0GEYaUlI5KyxrHih07cIaGicaGia','DhjPBq','jYWkicaGicaGywrKAxrPB25HBenVBNrLEhq6ihSkicaGicaGicb1C2vYx2LKoIbYzxeUAgvHzgvYC1SNDxnLCI1PzcDDihX8ihjLCs5OzwfKzxjZwYD4lxvZzxiTAwqNxsb8FcaNC3LZDgvTjYWkicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBaOGicaGicb9cIaGicb9oWOkicaGignVBNn0ihjLC3bVBNnLrgf0ysa9igf3ywL0ia','iezst00GjYaRihrOAxmUz2v0tg9VA3vWu291CMnLkcKGkYbG','zgf0ysb8FcbBxq','oWOGicaGicbJB25ZDcbJB3vUDfrVDgfSuMvZDwX0id0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgnVDw50vg90ywXrDwvYEsK7cIaGicaGignVBNn0ihrVDgfSuMvJB3jKCYa9ignVDw50vg90ywXszxn1BhqGjIyGy291BNruB3rHBfjLC3vSDfSWxsa/ihbHCNnLsw50kgnVDw50vg90ywXszxn1BhrBmf0UDg90ywWPidOGmdSkcIaGicaGic8ViduUie1LBMDOAxr1BMCGANvTBgfOigrHDgeGDgvYzMLSDgvYicHQAwTHigfKysb3AgvYzs9ZzwfYy2GPcIaGicaGigXLDcbMAwX0zxjLzfjLy29YzhmGpsb0B3rHBfjLy29Yzhm7cIaGicaGigLMicH3AgvYzunSyxvZzsKGEWOGicaGicaGignVBNn0ignVDw50rMLSDgvYzwrrDwvYEsa9ig5LzwrZu3vICxvLCNKkicaGicaGicaGid8Gj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicGNicSGyMfZzvf1zxj5icSGjYKGyMfZzv9XDwvYEsaNicSGD2HLCMvdBgf1C2ukicaGicaGicaGidOGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2uGkYaNicCGkYb3AgvYzunSyxvZztSkicaGicaGicbJB25ZDcbJB3vUDezPBhrLCMvKuMvZDwX0id0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgnVDw50rMLSDgvYzwrrDwvYEsWGD2HLCMvqyxjHBxmUBgvUz3rOid4Gmca/ihDOzxjLugfYyw1ZidOGDw5KzwzPBMvKktSkicaGicaGicbMAwX0zxjLzfjLy29YzhmGpsbJB3vUDezPBhrLCMvKuMvZDwX0icyMignVDw50rMLSDgvYzwrszxn1BhrBmf0GpYbWyxjZzuLUDcHJB3vUDezPBhrLCMvKuMvZDwX0wZbDlNrVDgfSksa6ida7cIaGicaGih0kcIaGicaGic8VidyUiej1AwXKie9srevsiejzignSyxvZzqOGicaGicbJB25ZDcbVCMrLCKnSyxvZzsa9ihrOAxmUyNvPBgrtB3j0q29SDw1UC0nSyxvZzsHZB3j0x2nVBhvTBNmPoWOkicaGicaGlY8GnY4GqNvPBgqGteLnsvqGzgfUie9grLnfvcbJBgf1C2uGkgTVBMrPC2LVBMfSigjLCMrHC2fYA2fUig1VzguPcIaGicaGigXLDcbSAw1PDenSyxvZztSkicaGicaGAwyGkhbHz2LUyxrLksb7cIaGicaGicaGBgLTAxrdBgf1C2uGpsbGieXjtuLuicr7CgvYugfNzx0Gt0zgu0vuicr7B2zMC2v0Fwa7cIaGicaGih0GzwXZzsb7cIaGicaGicaGBgLTAxrdBgf1C2uGpsbGieXjtuLuicr7BgLTAxr9ydSkicaGicaGFqOkicaGicaGlY8Goc4GtwvUAMfSyw5Ryw4GCxvLCNKGzMLUywWGDw50DwSGzgf0ysaOC3vICxvLCNKGD3jHChbPBMCGDw50DwSGsK9jtI9dveuPcIaGicaGignVBNn0ihf1zxj5id0GBMvLzhntDwjXDwvYEqOGicaGicaGid8Gj1nftevdvcaQiezst00GkcCGkYbIyxnLuxvLCNKGkYaNksbIyxnLx3f1zxj5icCGkYb3AgvYzunSyxvZzsaRig9YzgvYq2XHDxnLicSGBgLTAxrdBgf1C2ukicaGicaGica6igjHC2vrDwvYEsaRicCGjYaRihDOzxjLq2XHDxnLicSGB3jKzxjdBgf1C2uGkYbSAw1PDenSyxvZztSkicaGicaGy29UC29Szs5SB2COyeXPC3qGu1fmiff1zxj5oIaKE3f1zxj5FwaPoWOGicaGicbJB25ZB2XLlMXVzYGNtgLZDcbrDwvYEsbqyxjHBwv0zxjZoICSihDOzxjLugfYyw1ZktSkicaGicaGy29UC3qGzgf0ysa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsWGD2HLCMvqyxjHBxmUBgvUz3rOid4Gmca/ihDOzxjLugfYyw1ZidOGDw5KzwzPBMvKktSkcIaGicaGignVBNn0ihjLC3vSDca9ihSkicaGicaGicbKyxrHoIa','cIaGicaVlYblAxjPBsbYzxnWB25ZzqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaXks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','lMLUy2X1zgvZkgTLEsKPihSkicaGicaGicaGihDOzxjLq29UzgL0Aw9UCY5WDxnOkgbHlIr7A2v5Fsa9icqKE3bHCMfTsw5KzxGRk31GktSkicaGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8Viej1AwXKigzPBMfSihf1zxj5ic0Gz3vUywTHBIbJDxn0B20GC2vSzwn0igPPA2eGywrHcIaGicaGignVBNn0igLKrMLLBgqGpsbSB29RDxbdB25MAwCGpYbSB29RDxbdB25MAwCUAwrgAwvSzca6icC','kgrHDgeGFhWGw10PlM1HCcHFx3jVDYa9pIb7ignVBNn0if9FCIa9ihSGlI4Ux19YB3CGFtSGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','jZSkBw9KDwXLlMv4Cg9YDhmUz2vUzxjHDgvKid0GjW','zMLLBgrqB2XPy3K','C2vHCMnOq29SDw1UCW','y2HPBgruywjSzq','jYWkicaGicaGicbYzxnWB25ZzurHDgeScIaGicaGicaGEWOGicaGicaGicaGDg9WAwm6igTHzMTHq29UzMLNlNrVCgLJihX8ig51BgWScIaGicaGicaGicbRzxLgAwvSzdOGA2fMA2fdB25MAwCUA2v5rMLLBgqGFhWGjW','jZSkicaGicaGBgv0igfSAwfZrMLLBgqGpsbUDwXSoWOkicaGicaGlY8GuhjVC2vZihnLDgLHCcbJB2X1Bw4GzgfSyw0GC2vSzwn0cIaGicaGigzVCIaOy29UC3qGy29SDw1Uig9MihnLBgvJDenVBhvTBNmPihSkicaGicaGicbPzIaOy29SDw1UlNrVtg93zxjdyxnLkcKGpt09icC','cIaGFqO','Bu5NEw4','jYWkicaGicaGicaGihrHyMXLtMfTztOGjW','mZe3mZq4nfrZBNrdCq','CMvMvgfIBgu','Be5Rq0G','zhLnuLC','CMvXDwLYzwrgAwvSzhm','A2fMA2e','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbbrePvu1qGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0zbteXcqunlxsbbrePvu1qGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','y3jLyxrLzej5','cIaGicaVlYbfDMvUDcbSAwzLy3LJBguGDMfYAwfIBgvZcIaGicbSzxqGB2XKrgf0ysa9ig51BgW7cIaGicbSzxqGBMv3rgf0ysa9ig51BgW7cIaGicbJB25ZDcbYzxf1zxn0rgf0ysa9ihjLCs5IB2r5oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGic8Vig9SzerHDgeGzMv0y2GGkYbVBKjLzM9YzsaRig1HAw4GB3bLCMf0Aw9UicSGB25bzNrLCIbKAwvRC2vRDxnPigrHBgfTihnHDhuGDhjHBNnHy3rPB24GC2nVCgukicaGic8VigrPigrHBgfTig1VzgvSlMv4zwn1DgvuCMfUC2fJDgLVBLDPDgHfDMvUDhmOkqOGicaGAwyGkgnVBxbVBMvUDevUz2LUzsaMjIbdB250zxH0qNvPBgrLCIKGEWOGicaGicaVlYbhDw5HA2fUigLUDgvNCMf0zwqGDhjHBNnHy3rPB24GBw9KzwWGzgvUz2fUigv2zw50igXPzMvJEwnSzqOGicaGicb0CNKGEWOGicaGicaGignVBNn0igv2zw50q29UDgv4Dca9ihSkicaGicaGicaGignVBxbVBMvUDevUz2LUztOGy29TCg9Uzw50rw5NAw5LlaOGicaGicaGicaGq29UDgv4Dej1AwXKzxi6ienVBNrLEhrcDwLSzgvYlaOGicaGicaGicaGDgfIBgvoyw1LoIaN','yxvKAxrdB2X1Bw5Z','zMLLBgroyw1L','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGA29SB20GEwfUzYbKyxbHDcbKAwnHCMKkicaGkIbaCMv0DxjUCYb7qxjYyxL9ieTVBg9TihLHBMCGzgfWyxqGzgLJyxjPcIaGicOVcIaGz2v0u2vHCMnOywjSzunVBhvTBNmOksb7cIaGicbYzxr1CM4G','jYKkicaGicaGica6ihbHDgGUAM9PBIH3B3jRAw5NrgLYlcaN','oWOGicaG','ywr2yw5JzwrrDwvYAwvZ','B2jQzwn0','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','x2LK','C291CMnL','Dg9dyw1LBenHC2u','zMLLBgrwywXPzgf0Aw9U','j107cIaGicaGicaGicbPzIaOx19VCMLNice9psbUDwXSicyMif9FB3jPzYaHpt0GDw5KzwzPBMvKksb7cIaGicaGicaGicaGignVBNn0if9FC3rYid0Gu3rYAw5Nkf9FB3jPzYK7cIaGicaGicaGicaGigLMicHFx3n0CI5Szw5NDgGGpIa','lY8Grw5KCg9PBNqGAw5MBYdIGjqGC2vSzI1KB2n1BwvUDgLUzYbbueKkCM91DgvYlMDLDcGNl2LUzM8NlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGy29UC3qGywn0Aw9UCYa9ia','icaGicaGFqO','q2v0ALq','y2HPBgrdB2X1Bw5Z','cIaGicaGih0PktSkicaGicaGyxDHAxqGDgHPCY5ZzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcbJywnOzurHDgeSicDZDgf0AwmNktSkcIaGicaGic8VifjLDhvYBIbKzw5Nyw4GC2vSzwn0zwqGzMXHzWOGicaGicbYzxr1CM4Gzgf0ys5TyxaOAxrLBsa9pIb7cIaGicaGicaGy29UC3qGCMvZDwX0id0GEWOGicaGicaGicaGAwq6igL0zw0U','iIWGiG','cIaGicaGicaGlY8GrKSGiW','id0GtLvmtcCPoWOkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHSB2nRzwrsB3DBjW','FhWNic0Gj3X8y29KzsbHCYbKAxnWBgf5x3rLEhqIxqOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9JDxn0B21FBg9VA3vWoIbSB29RDxbdB25MAwCGpYb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMnVBxbHBNLFAwqIlcaIDMfSDwuIoIaIEw91CI1JB21Wyw55lwLKiIb9xsWkicaGicaGicaGicjZzwXLy3qIoIbBBg9VA3vWq29UzMLNlMLKrMLLBgqSigXVB2T1CenVBMzPzY50zxH0rMLLBgrDlaOGicaGicaGicaGiM5VDguIoIaIvxnPBMCGzMLLBgroyw1Ltg9VA3vWignVBMzPz3vYyxrPB24IcIaGicaGicaGFsa6ig51BgWScIaGicaGicaGzxHHBxbSzv9HzhzHBMnLzdOGEWOGicaGicaGicaGiNDOzxjLiJOGEWOGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaIy29UzgL0Aw9UCYi6ifSkicaGicaGicaGicaGicb7icjRzxKIoIaI','sxPLr2u','jZSkicaGicaGy29UC3qGCgX1z2LUugf0Aca9ihbHDgGUAM9PBIHFx2rPCM5HBwuSicCUlICSicDWBhvNAw5ZjYWGycr7Bw9KDwXLtMfTzx0TCgX1z2LUlMPZycK7cIaGicaGigXLDcbWBhvNAw4GpsbUDwXSoWOGicaGicbPzIaOzNmUzxHPC3rZu3LUyYHWBhvNAw5qyxrOksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbWBhvNAw4GpsbYzxf1AxjLkhbSDwDPBLbHDgGPoWOGicaGicaGicaGAwyGkhbSDwDPBI5VBKjLzM9YzuvUzhbVAw50C0XVywqPihSkicaGicaGicaGicaGCgX1z2LUlM9UqMvMB3jLrw5KCg9PBNrZtg9HzcHHChaSignVBMzPzYK7cIaGicaGicaGicb9cIaGicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNCgX1z2LUx2XVywrLzcCSihbSDwDPBJOGycr7Bw9KDwXLtMfTzx0TCgX1z2LUycb9lcbGugX1z2LUigXVywrLzdOGjhTTB2r1Bgvoyw1LFs1WBhvNAw4UANnGktSkicaGicaGicb9ignHDgnOicHWBhvNAw5fCNjVCIKGEWOGicaGicaGicaGBg9Nz2vYlMvYCM9YkhSGzxzLBNq6icDWBhvNAw5FBg9Hzf9LCNjVCICSigvYCM9YoIbWBhvNAw5fCNjVCI5TzxnZywDLih0SigbgywLSzwqGDg8GBg9HzcbWBhvNAw46icr7Bw9KDwXLtMfTzx0TCgX1z2LUlMPZycK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbhBg9IywWGAgvHBhrOignOzwnRigvUzhbVAw50icH0yw5WysbWCMvMAxGGBw9KDwXLkqOGicaGicbHChaUz2v0kcCVAgvHBhrOjYWGkhjLCsWGCMvZksa9pIb7cIaGicaGicaGy29UC3qGAgvHBhrOsw5MBYa9ihSkicaGicaGicaGihn0yxr1CZOGj29RjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPlNjLCgXHy2uOj1qNlcaNicCPlNjLCgXHy2uOl1WUxgr7m31Ajc8SicCNksWkicaGicaGicaGihnLCNzPy2u6icC','z21duxy','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zxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGFqOGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicb9cIaGicaGigvSC2uGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGCMvZDwX0lNzHBgLKid0GzMfSC2u7cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGigLMicH2ywX1zsa9pt0GDw5KzwzPBMvKihX8ihzHBhvLid09psbUDwXSihX8ihzHBhvLid09psaNjYKGEWOGicaGicbYzxr1CM4GCMvZDwX0oWOGicaGFqOkicaGic8VidiUifr5CguTC3bLy2LMAwmGDMfSAwrHDgLVBGOGicaGC3DPDgnOicHMAwvSzfr5CguPihSkicaGicaGy2fZzsaNC3rYAw5NjZOkicaGicaGy2fZzsaNDgv4DcC6cIaGicaGicaGlY8GDgv4DcbKAxzHBgLKyxnPigLKzw50AwSGzgvUz2fUihn0CMLUzYaODw5IB3vUzgvKihn0CMLUzYK7igHHBNLHigjLCMjLzgekicaGicaGicaVlYbWzw1LDgfHBIbvssaO4OAsihrLEhrHCMvHksWGyNvRyw4G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BICPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHigjVB2XLyw4GkhrYDwuVzMfSC2uPycK7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8VifrLCMLTysbOyw55ysbZzxqGA2fUB25PAYaOC2vSyxjHCYbnEvnrtc9pCMfJBguVu1fmAxrLktOGDhj1zs8NDhj1zsCVms8NmsCkicaGicaGlY8GzgfUigzHBhnLlYDMywXZzsCVmc8NmcCUie5PBgfPigXHAw4GreLut0XbsYWGyNvRyw4GzgLWywTZysb2AweGqM9VBgvHBIGPcIaGicaGic8VicH5yw5Nig1LBwj1yxqGC3rYAw5Nig5VBI1RB3nVBMCGC2vWzxj0AsaNBM90lweTyM9VBgvHBICGzgLHBs1KAwfTigPHzgKkicaGicaGlY8GDhj1zsKUie1LBMPHBwLUideGAw5WDxqGlt4GyMvOyxzPB3iGAwrLBNrPAYbSAw50yxmGzgLHBgvJDc4kicaGicaGAwyGkhnHBML0AxPLzca9pt0GDhj1zsb8FcbZyw5PDgL6zwqGpt09icD0CNvLjYb8FcbZyw5PDgL6zwqGpt09ideGFhWGC2fUAxrPEMvKid09psaNmsCPihSkicaGicaGicbZyw5PDgL6zwqGpsb0CNvLoWOGicaGicb9igvSC2uGAwyGkhnHBML0AxPLzca9pt0GzMfSC2uGFhWGC2fUAxrPEMvKid09psaNzMfSC2uNihX8ihnHBML0AxPLzca9pt0Gmcb8FcbZyw5PDgL6zwqGpt09icCWjYKGEWOGicaGicaGihnHBML0AxPLzca9igzHBhnLoWOGicaGicb9igvSC2uGEWOGicaGicaGigvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigeGyM9VBgvHBIaODhj1zs9MywXZzsLGktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb7cIaGicaGihzHBgLKoIbLCNjVCNmUBgvUz3rOid09psaWlaOGicaGicbLCNjVCNm6igvYCM9YCYWkicaGicaGD2fYBMLUz3m6ifTDlaOGicaGicbZyw5PDgL6zwq6ihnHBML0AxPLzaOGicaGFtSk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zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOy29UC3rYywLUDhmUywz0zxiPihSkicaGicaGicbJB25ZDcbHzNrLCKzPzwXKid0Gy29UC3rYywLUDhmUywz0zxi7cIaGicaGicaGAwyGkgrHDgfBzMLLBgroyw1LxsaMjIbKyxrHw2fMDgvYrMLLBgrDksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbPzIaOBMv3ierHDguOzgf0yvTMAwvSze5HBwvDksa8psbUzxCGrgf0zsHKyxrHw2fMDgvYrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5HzNrLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGywz0zxiGjYr7ywz0zxjgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZcIaGicb9oWOGih0k','l3vWzgf0zs1JB21WB3nPDguGlsbdB21WB3nPDguGDxbKyxrLia','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','mti4nZmWmtbkzMvjtfe','jYWkicaGicaGicaGigrLDgfPBfrHyMXLoIaN','lMXLBMD0Aca+ida7cGOGigLMicHOyxndB21WB25LBNrZksb7cIaGicbJB21WB25LBNrfBMDPBMuGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2nVBxbVBMvUDc1LBMDPBMuNks5JB21WB25LBNrfBMDPBMu7cIaGicbdB250zxH0qNvPBgrLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVy29UDgv4Dc1IDwLSzgvYjYK7cGOGicaGlY8Gtg9HzcbJB21WB25LBNqGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqGEwfUzYbZzwrHBMCGzgLNDw5HA2fUcIaGicbJB25ZDcbJB21WB25LBNrdB25MAwCGpsb7cIaGicaGihrHyMXLtMfTztOGjW','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','cIaGicaVlYbwywXPzgfZAsbKyw4GC2fUAxrHC2KGAgvHzgvYigrHDgeGzgvUz2fUignVBNn0CMfPBNqGkhrLCM1HC3vRigHHC2GPcIaGicbPzIaODhLWzw9Mia','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','jYK7cGOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8VideUieT1BMnPihjVDYbHA3rPzIb5yw5NignVy29RigTYAxrLCMLHlIbgAwX0zxiGAxnFzgvSzxrLzca9iezbtfnfig1LBMnLz2fOcIaGicaGic8VicaGigrVDwjSzsbZB2z0lwrLBgv0zsbKyw4SigjLCNnHBweGrK9sifvqrefursWGBwvUAMfTAw4GC2f0DsbWzw1LBMfUzYbZywf0ihjHy2uUcIaGicaGignVBNn0ihnLBgvJDfbHCMfTCYa9ifTDoWOGicaGicbJB25ZDcb3AgvYzuj1AwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsHJCML0zxjPys53AgvYzsWGC2vSzwn0ugfYyw1ZlcaXktSkicaGicaGy29UC3qGBg9JA1f1zxj5id0Gj1nftevdvca','zgv0ywLSvgfIBgu','sw52ywXPzcbHDwrPDenVBhvTBNmGDMfSDwuGzM9Yia','x2v4DgvUzgvKrMLLBgrZ','cIaGicaGih0PktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHicG','CuPluwC','cIaGicaGicaGlY8GrKSTu0qTmIbYzxn0CMLJDcaJ','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGDxbKyxrPBMCG','zxHWB3j0','Dgv4DezPzwXKCW','y2fZy2fKzurLBgv0zq','Dw5PDf9WCMLJzq','C29MDerLBgv0zq','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','psr7zgf0ys4','ywrQDxn0q29UzMLN','ktSkicaGicaGicbUzxDeyxrHid0GCMvZCg9UC2veyxrHoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDifvqrefursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','igrHDgeGBM90igzVDw5Kig9Yig5VDcbKzwXLDgvKjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicaGigLMicHLCNjVCI5ZDgf0DxndB2rLid09psa0mdKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0nVBMzSAwn0jYWkicaGicaGicbTzxnZywDLoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqYmIKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mJiPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNvw5WCM9JzxnZywjSzsbfBNrPDhKNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cIaGicaVlYbcywnRC3rVCcbRB25MBgLRoIbvtKLrvuuGDMLVBgf0Aw9UihnHyxqGvvbeqvrficHYywnLigTVBMT1CMvUksdIHPiGnda5lGOGicaGAwyGkgvYCM9YlMnVzguGpt09icCYmZuWnsCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0nVBMzSAwn0jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90ihjLC3rVCMu6ihrOzsbYzxvZywjSzsbJB2rLigLZigfSCMvHzhKGAw4GDxnLigj5igfUigfJDgL2zsbYzwnVCMqGkhvUAxf1zsbJB25ZDhjHAw50ksCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihjLC3rVCMLUzYa','y29UC3qGz2vUzxjHDgvKrMLLBgrZid0G','C3bSAxq','ydSkicaGicaGAwyGkhnLyxjJAfzHBhvLicyMihnLyxjJAfzHBhvLlNrYAw0OksaHpt0GjYCPihSkicaGicaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGicaGignVBNn0igXPA2vwywX1zsa9igaLjhTLC2nHCgvKu2vHCMnOvMfSDwv9jwa7cIaGicaGicaG','ufjztxa','DMLLD05HBwu','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','BMfTzq','oWOkicaGic8VieXVywqGywr2yw5JzwqGCxvLCNKGDgvTCgXHDgvZcIaGicb0AgLZlMfKDMfUy2vKuxvLCNLuzw1WBgf0zxmGpsb0AgLZlMXVywrbzhzHBMnLzff1zxj5vgvTCgXHDgvZkcK7cIaGica','jYKGEWOGicaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbJB2X1Bw47cIaGicaGicaGicbICMvHAZSGlY8Gz3vUywTHBIb5yw5NihbLCNrHBweGC2vIywDHAsb0zxH0igzPzwXKcIaGicaGicaGFqOkicaGicaGicaVlYbkAwTHigj1A2fUihjLy29NBML6zwqGzMLLBgqSig1HC2LOihrHBwjHAgTHBIaOBxvUz2TPBIbJB21WDxrLzcbJB2X1Bw4PcIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGDgv4DezPzwXKid0Gy29SDw1UoWOGicaGicb9cGOGicaGicaVlYbcyw5NDw4GCxvLCNKGu0vmrunuigrLBMDHBIbZDxbWB3j0igv4ChjLC3nPB25ZcIaGicaGigXLDcbXDwvYEsa9igbtruXfq1qGjhTZzwXLy3rdBgf1C2v9iezst00GjhT0AgLZlMDLDeXVB2T1CfnVDxjJzsGPFsa','DgHPCY5HDwrPDenVBhvTBNmGpsbUDwXSoWO','jYWkicaGicaGDgfIBgvoyw1LoIaN','ywT0Awy','ydSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKPoWOkicaGicaGlY8Gq2fJAguGCMvZDwX0ihrHBNbHihnLBgvJDgvKigzSywCkicaGicaGy29UC3qGy2fJAgveyxrHid0Gzgf0ys5TyxaOAxrLBsa9pIaOEWOGicaGicaGigLKoIbPDgvTlG','zM9YrwfJAa','lY8Gu2TPCcbhru5fuKfuruqGquXxqvLtignVBhvTBNmkicaGicaGicaGigLMicHNzw5LCMf0zwrgAwvSzhmUAw5JBhvKzxmOA2v5ksKGy29UDgLUDwu7','iIK7cIaGicaGicaGicaGicaGzMTfCNjVCI5ZDgf0DxndB2rLid0GndiYoWOGicaGicaGicaGicaGihrOCM93igzRrxjYB3i7cIaGicaGicaGicaGih0kicaGicaGicaGih0kicaGicaGicb9','icaGicaGicaVlYbbDxrVlwnHBgn1Bgf0zsa','cIaGicaVlYbbzgqGBwv0ywrHDgeGDw50DwSGzgvIDwDNAw5NicHKzxzLBg9WBwvUDcbVBMX5kqOGicaGAwyGkhbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNicyMihjLC3vSDc5ZDwnJzxnZksb7cIaGicaGihjLC3vSDc5FBwv0ywrHDgeGpsb7cIaGicaGicaGzw5KCg9PBNq6icC','BwLZC2LUzYbVCIbZB2z0lwrLBgv0zwq','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGicb7icjRzxKIoIaI','uKHPC2i','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndaZksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDqCM8GrMvHDhvYzsbszxf1AxjLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb1CgDYywrLoIaNAhr0Chm6lY9Yzxn0zM9Yz2uUzgv2l3bYAwnPBMCNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGigLMicHLCNjVCI5ZDgf0DxndB2rLid09psa0mdaGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGysb2ywXPzcbMAwvSzcCPihX8cIaGicaGicaGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNsw52ywXPzcbHz2DYzwDHDguGzNvUy3rPB24Nksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0LUDMfSAwqGywXPyxmNksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj29UBhKGywXSB3DLzcb3AxrOienpvu5ujYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGzgvMAw5LzcbPBIbHz2DYzwDHDguGy29UzMLNjYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUBYbQB2LUigrLzMLUAxrPB25ZigzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj1zHBgLKyxrPB24GzxjYB3iNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigfNz3jLz2f0Aw5Nia','igrLBMDHBIbHy3rPB25ZoIa','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','zgv0ywLSq29UzMLN','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','laOGicaGicbLEhbVCNrrDwvYEtOG','DxbKyxrLq29TCg9ZAxrL','lMDLDfn0yxrPy0XVB2T1CerHDgeOC2vSzwn0zwruywCPoWOkicaGicaGicbJB25ZB2XLlMXVzYHGu3rHDgLJigXVB2T1CcbYzxn1BhrZoIaKE2XPC3qUBgvUz3rOFsbYzwnVCMrZigzVDw5KycK7cIaGicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGicbJB3vUDdOGBgLZDc5Szw5NDgGScIaGicaGicaGicbKyxrHoIbSAxn0laOGicaGicaGicaGC2vSzwn0zwruywC6ihnLBgvJDgvKvgfNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','mtH1ywLHz20','cIaGicaVlYbmB2fKigfKDMfUy2vKihf1zxj5ihrLBxbSyxrLCWOGicaGy29UC3qGCxvLCNLezwzPBML0Aw9UCYa9ihSk','iokgKIbTyxn0zxiU','igrHDgeGCMvZDg9YzwqGC3vJy2vZC2z1BgX5ycK7cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzs1Yzxn0B3jLigrHDgeG','jYWGzw5KCg9PBNroyw1Llcb1CgXVywrdB25MAwCPoWOGicaGicaGicaGicaGicaGBg9Nz2vYlMLUzM8OEWOGicaGicaGicaGicaGicaGicbLDMvUDdOGj3vWBg9Hzf9YB3v0zxnFCMvNAxn0zxjLzcCScIaGicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicaGigzPzwXKCZOGt2jQzwn0lMTLExmODxbSB2fKq29UzMLNlMzPzwXKCYb8Fcb7FsKkicaGicaGicaGicaGicaGih0SigbvCgXVywqGCM91DgvZihjLz2LZDgvYzwqGzM9Yicr7zw5KCg9PBNroyw1LFwaPoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFsbJyxrJAcaODxbSB2fKrxjYB3iPihSkicaGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEWOGicaGicaGicaGicaGicaGzxzLBNq6icD1CgXVywrFCMvNAxn0CMf0Aw9Ux2vYCM9YjYWkicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicbLCNjVCJOGDxbSB2fKrxjYB3iUBwvZC2fNzqOGicaGicaGicaGicaGih0SigbvCgXVywqGCMvNAxn0CMf0Aw9UigzHAwXLzcbMB3iGjhTLBMrWB2LUDe5HBwv9oIaKE3vWBg9HzevYCM9YlM1LC3nHz2v9ycK7cIaGicaGicaGicaGih0kcIaGicaGicaGicb9ignHDgnOicHLBMrWB2LUDevYCM9Yksb7cIaGicaGicaGicaGignVBNnVBguUzxjYB3iOyevYCM9YigXVywrPBMCGzw5KCg9PBNqGjhTMAwXLFtPGlcbLBMrWB2LUDevYCM9YlM1LC3nHz2uPoWOGicaGicaGicaGicaVlYbdB250Aw51zsbSB2fKAw5Nig90AgvYigvUzhbVAw50CWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGih0Gy2f0y2GGkgrPCKvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGCMvHzgLUzYbTB2r1BgvZigrPCMvJDg9YEsaKE21VzhvSzxneAxj9oMaSigrPCKvYCM9YlM1LC3nHz2uPoWOGicaGicb9cGOGicaGicaVlYbszwDPC3rLCIbJBgvHBNvWihjVDxrLicHVChrPB25HBcbHzg1PBIbLBMrWB2LUDcKkicaGicaGDhj5ihSkicaGicaGicbfEhbVCNriyw5KBgvYlNjLz2LZDgvYq2XLyw51CfjVDxrLkgfWCcK7cIaGicaGih0Gy2f0y2GGkgnSzwfUDxbfCNjVCIKGEWOGicaGicaGigXVz2DLCI5LCNjVCIH7igv2zw50oIaNy2XLyw51Cf9YB3v0zv9LCNjVCICSigvYCM9YoIbJBgvHBNvWrxjYB3iUBwvZC2fNzsb9lcaNrxHWB3j0ignSzwfUDxaGCM91DguGCMvNAxn0CMf0Aw9UigzHAwXLzcCPoWOGicaGicb9cGOGicaGicaVlYbezwzHDwX0ihjVB3qGzw5KCg9PBNqkicaGicaGyxbWlMDLDcGNlYCSicHYzxeSihjLCYKGpt4GEWOGicaGicaGihjLCY5ZDgf0DxmOndaZks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDgB3jIAwrKzw4NlaOGicaGicaGicaGBwvZC2fNztOGj0fJy2vZCYb0BYb0AguGCMvXDwvZDgvKihjLC291CMnLigLZigzVCMjPzgrLBICScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9ktSkcIaGicaGic8VieHVB2SGDw50DwSGBw91BNqGBwLKzgXLD2fYzsb0yw1IywHHBIbZzwjLBhvTidqWncbOyw5KBgvYcIaGicaGic8VierPz3vUywTHBIbVBgvOihDVCMTIzw5JAcbvssbKyw4GBwLKzgXLD2fYzsbLA3n0zxjUywWGBgfPBM55yqOGicaGicbPzIaOy29UzMLNlM9UqxbWuMvHzhKGjIyGDhLWzw9MignVBMzPzY5VBKfWCfjLywr5id09psaNzNvUy3rPB24Nksb7cIaGicaGicaGy29UzMLNlM9UqxbWuMvHzhKOyxbWktSkicaGicaGFqOkicaGicaGlY8Gnda0igHHBMrSzxiGDw50DwSGDw5RBM93BIbYB3v0zxmkicaGicaGyxbWlNvZzsGOCMvXlcbYzxmPid0+ihSkicaGicaGicbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrM9YyMLKzgvUjYWkicaGicaGicaGig1LC3nHz2u6icDby2nLC3mGDg8GDgHLihjLCxvLC3rLzcbYzxnVDxjJzsbPCYbMB3jIAwrKzw4NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFsK7cGOGicaGicaVlYbhBg9IywWGzxjYB3iGAgfUzgXPBMCGBwLKzgXLD2fYzqOGicaGicbHChaUDxnLkcHLCNiSihjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGr2XVyMfSievYCM9YieHHBMrSzxiGlsaKE3jLCs5TzxrOB2r9icr7CMvXlNvYBh06ycWGzxjYktSkcIaGicaGicaGlY8GsgfUzgXLihnWzwnPzMLJigvYCM9Yihr5CgvZcIaGicaGicaGAwyGkgvYCIbPBNn0yw5Jzw9Mifn5BNrHEevYCM9YicyMigvYCI5ZDgf0DxmGpt09idqWmcaMjIaNyM9KEsCGAw4GzxjYksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDuAguGCgf5Bg9HzcbZzw50igLZig5VDcbHihzHBgLKiePtt04GzM9YBwf0jYWkicaGicaGicaGicaGzgv0ywLSCZOGzxjYlM1LC3nHz2uScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cGOGicaGicaGic8VieHHBMrSzsbVDgHLCIbLCNjVCNmkicaGicaGicbPzIaOixjLCY5OzwfKzxjZu2vUDcKGEWOGicaGicaGicaGy29UC3qGC3rHDhvZq29Kzsa9igvYCI5ZDgf0DxndB2rLihX8igvYCI5ZDgf0DxmGFhWGntaWoWOGicaGicaGicaGy29UC3qGzxjYB3jszxnWB25Zzsa9ihSkicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGigvYCM9YoIbLCNiUBMfTzsb8FcaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGicaGicaGBwvZC2fNztOGzxjYlM1LC3nHz2uGFhWGj0fUigvYCM9Yig9Jy3vYCMvKig9UihrOzsbZzxj2zxiNlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFtSkcIaGicaGicaGicaVlYbbzgqGC3rHy2SGDhjHy2uGAw4Gzgv2zwXVCg1LBNqkicaGicaGicaGigLMicHWCM9JzxnZlMvUDI5ot0rfx0vovIaHpt0Gj3bYB2r1y3rPB24Nksb7cIaGicaGicaGicaGigvYCM9YuMvZCg9UC2uUC3rHy2SGpsbLCNiUC3rHy2S7cIaGicaGicaGicb9cGOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOC3rHDhvZq29KzsKUANnVBIHLCNjVCLjLC3bVBNnLktSkicaGicaGicb9cGOGicaGicaGig5LEhqOzxjYktSkicaGicaGFsK7cGOGicaGicaVlYbtDgfYDcbZzxj2zxikicaGicaGy29UC3qGC2vYDMvYid0GyxbWlMXPC3rLBIHWB3j0lcbZzxj2zxjbzgrYzxnZlcaOzxjYksa9pIb7cIaGicaGicaGAwyGkgvYCIKGEWOGicaGicaGicaGy29UC29Szs5LCNjVCIHGrMfPBgvKihrVihn0yxj0icr7Bw9KDwXLtMfTzunHCgL0ywXPEMvKFsbZzxj2zxi6ycWGzxjYktSkicaGicaGicaGihjLAMvJDcHLCNiPoWOGicaGicaGicaGCMv0DxjUoWOGicaGicaGih0kcIaGicaGicaGlY8Grgv0zxjTAw5LigrPC3bSyxKGvvjmigjHC2vKig9UihnLCNzLCKfKzhjLC3mkicaGicaGicbJB25ZDcbKAxnWBgf5sg9ZDca9icHZzxj2zxjbzgrYzxnZid09psaNmc4WlJaUmcCGFhWGixnLCNzLCKfKzhjLC3mPid8Gj2XVy2fSAg9ZDcCGoIbZzxj2zxjbzgrYzxnZoWOkicaGicaGicbSB2Dtzxj2zxjszwfKEsH7cIaGicaGicaGicbWB3j0laOGicaGicaGicaGBw9KDwXLoIaN','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLzcaOC2v0igf1Dg9dywXJDwXHDgvgAwvSzhmUDg90ywXFyw1VDw50lMzVCM11BgeGB3iGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uP','BwfW','ieXjtuLuideNlaOGicaGicaGicaGicaGif9FzMTwywXZcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2zRq2HLy2SUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicaGicaGicbJB25ZDcbMA0vYCM9Yid0GBMv3ievYCM9Ykcjdyw5UB3qGCMvZDg9YztOGCMvMzxjLBMnLzcbWyxjLBNqGCMvJB3jKigLUicC','y29SDw1UCW','lI4UjYK7cGOGicaGicaVlYbhzxqGChjPBwfYEsbRzxKGDMfSDwuGDw50DwSGzgvSzxrLignOAwXKihjLy29YzhmkicaGicaGy29UC3qGAgvHzgvYuxvLCNKGpsbGu0vmrunuia','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','wxzqufK','cIaGica','ihn0AwXSignVBNrHAw5ZicjMAwXLoIiGCMvMzxjLBMnLicG','cIaGicbJB25ZDcb2ywXPzezPzwXKCYa9ifSkicaGicaG','BLLtvgq','ksb8FcbKyxrHlG','C3rYAw5NAwz5','j107cIaGicaGicaGicbPzIaOx19JDxiGit09ig51BgWGjIyGx19JDxiGit09ihvUzgvMAw5LzcKGEWOGicaGicaGicaGicbJB25ZDcbFx2n1CLn0CIa9ifn0CMLUzYHFx2n1CIK7cIaGicaGicaGicaGignVBNn0if9FC2vWswr4id0Gx19JDxjtDhiUBgfZDeLUzgv4t2yOjYmJjYK7cIaGicaGicaGicaGic8VieXLz2fJEsb0yw5WysaNiYmNiokgKIbVCMLNAw5HBca9ig5PBgfPigfWysbHzgfUEweGkhn0CMLWigrPBgv3yxrPigrPigjHD2fOks4kicaGicaGicaGicaGy29UC3qGx19VCMLNAw5HBca9if9FC2vWswr4id49idaGpYbFx2n1CLn0CI5ZDwjZDhjPBMCOmcWGx19ZzxbjzhGPidOGx19JDxjtDhi7cIaGicaGicaGicaGic8VieTVBMzSAwSGkdqWosK6ig9YAwDPBMfSigTPBMKGzgLWywTHAsbYzwnVCMqGywT0AwyGBgfPBIbZzwXHAw4GCM93igLUAs4kicaGicaGicaGicaGy29UC3qGx19JB25MBgLJDca9igf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGicaNu0vmrunuideGrLjptsaNicSGD3jPDgvtB3vYy2uGkYaNifDirvjfia','id0G','cIaGicbMB3iGkgnVBNn0if9FC2rdB2WGB2yG','id0GtK9xkcKNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','jZSkicaGicaGy29UC3qGzM9YzwLNBKTLEsa9icC','DgHPCY5HDwrPDenVBhvTBNmGpsa','lcbYDw5UAw5NihDPDgHVDxqGzxzLBNrZycK7cN0kcI8QkGOGkIa','cIaGicaVlYbhzxqGy29YCMvSyxrPB24GsuqGzNjVBsbOzwfKzxiGkg9WDgLVBMfSkqOGicaGy29UC3qGy29YCMvSyxrPB25jzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGBNvSBdSk','icaGihrOAxmUDMfSAwrHDgLVBKnVBMzPzYa9ihT9oYaVlYboBYbMAwvSzcb2ywXPzgf0Aw9UignVBMzPzWO','C29MDerLBgv0zuzRq2HPBgrYzw4','laOGicaGicb1CgXVywrdB25MAwC6ia','icaGic8VifnVzNqTzgvSzxrLig1PzgrSzs1NCM91BMqGkgf1zgL0lxbHCML0EsK6ihrPz2eGA29SB20GC29MDc1KzwXLDguGDgv0yxaGzgKGDMfSAwrgAwvSzhmk','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbmB2nRigfJCxvPC2L0Aw9UigzHAwXLzaOGicaGAwyGkgvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0zHAwXLzcb0BYbHy3f1AxjLigXVy2SNksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdKPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNuMvZB3vYy2uGyNvZEsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGy2HHBMDPBMCGC3rHDhvZjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSk','ksdIHPiGnda5igjPBgeGBwfZAwGGzgLYzwzLCMvUC2LRyw4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0GBg9JA2vKuM93wYC','cGOGic8QkGOGicaQie92zxjYAwrLigzVCM1HDfjLC3bVBNnLrgf0ysb1BNr1AYa','AxnbCNjHEq','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbnzxrOB2qGDw50DwSGBg9VA3vWigrHDgeGzgvUz2fUigzPBhrLCMLUzYaOD2HLCMuGy2XHDxnLksbKyw4Gy3vZDg9TihnLBgvJDaOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0Gt3b0Aw9UCYbKzw5Nyw4GD2HLCMuGzgfUihnLBgvJDaOGicaQiebYzxr1CM5ZihTbCNjHEx0GqxjYyxKGB2jQzwSGAgfZAwWGBg9VA3vWigrLBMDHBIbMB3jTyxqGE2LKlcb0zxH0FqOGicaQlWOGigfZEw5JigDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkg9WDgLVBNmPihSkicaGihrYEsb7cIaGicaGic8VienOzwnRignHy2HLigzPCNn0icHPzIbLBMfIBgvKkqOGicaGicbJB25ZDcbJywnOzu9WDgLVBNmGpsb7ic4UlM9WDgLVBNmSihr5Cgu6icDMAwX0zxiNih07cIaGicaGignVBNn0ignHy2HLzfjLC3vSDca9igf3ywL0ihrOAxmUz2v0q2fJAgvKtg9VA3vWkgnHy2HLt3b0Aw9UCYWGj2zPBhrLCICPoWOGicaGicbPzIaOy2fJAgvKuMvZDwX0ksb7cIaGicaGicaGCMv0DxjUignHy2HLzfjLC3vSDdSkicaGicaGFqOkicaGicaGy29UC3qGC2vSzwn0q29SDw1UCYa9ig9WDgLVBNmUC2vSzwn0ihX8ifSN','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','jYWGjW','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzYWGzxzLBNrdB250zxH0','oWOGicaGBgv0ihnLBgvJDca9ig51BgW7cIaGicbPzIaOCMvXlMjVzhKUC2vSzwn0icyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUC2vSzwn0ksKGEWOGicaGicbJB25ZDcbPBNzHBgLKrMLLBgrZid0GCMvXlMjVzhKUC2vSzwn0lMzPBhrLCIHMAwvSzca9pIaHDMfSAwrgAwvSzhmUAw5JBhvKzxmOzMLLBgqPktSkicaGicaGAwyGkgLUDMfSAwrgAwvSzhmUBgvUz3rOid4GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbZzwXLy3qGzMLLBgrZjYWkicaGicaGicaGig1LC3nHz2u6igbjBNzHBgLKigzPzwXKkhmPoIaKE2LUDMfSAwrgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGDMfSAwrgAwvSzhm6ihzHBgLKrMLLBgrZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGicbZzwXLy3qGpsbYzxeUyM9KEs5ZzwXLy3q7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGCgfYyw1LDgvYihbHz2LUyxnPicHOyw55ysbQAwTHig1VzguGCgfNAw5HC2KPcIaGicbPzIaOCgfNAw5HDguPihSkicaGicaGAwyGkhbHz2uGpcaXksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWywDLoIbBj1bHz2uGBxvZDcbIzsbNCMvHDgvYihrOyw4GmcDDcIaGicaGicaGicb9cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGigLMicHWzxjqywDLidWGmsb8FcbWzxjqywDLid4GmtaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWzxjFCgfNztOGwYDqzxiGCgfNzsbTDxn0igjLigjLDhDLzw4GmsbHBMqGmtaWj10kicaGicaGicaGih0kicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicaGigLMicHZzwfYy2HwywX1zs5Szw5NDgGGpIaYntuPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbTzxnZywDLoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGC2vHCMnOx3zHBhvLoIbBj1nLyxjJAcb2ywX1zsbTDxn0ig5VDcbLEgnLzwqGmJu1ignOyxjHy3rLCNmNxqOGicaGicaGih0kicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGA29SB20GC2vHCMnOAw5NcIaGicbPzIaOixzHBgLKrMLLBgrZlMLUy2X1zgvZkhnLyxjJAej5ksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGig1LC3nHz2u6icDwywXPzgf0Aw9UigzHAwXLzcCScIaGicaGicaGzxjYB3jZoIb7cIaGicaGicaGicbZzwfYy2HFyNK6ifTGsw52ywXPzcbZzwfYy2GGzMLLBgqUifzHBgLKigzPzwXKCZOGjhT2ywXPzezPzwXKCY5QB2LUkcCSicCPFwbDcIaGicaGicaGFqOGicaGicb9ktSkicaGih0kcIaGicaVlYbcDwLSzcbVChrPB25ZihvUDhvRig1VzgvScIaGicbJB25ZDcbVChrPB25Zid0GEWOGicaGicbZzwfYy2HwywX1ztOGC2vHCMnOvMfSDwuScIaGicaGihnLyxjJAej5oIbZzwfYy2HcEsWkicaGicaGC29YDf9JB2X1Bw5ZoIbZB3j0x2nVBhvTBNmScIaGicaGihDOzxjLoIb3AgvYzsWkicaGicaGC2vSzwn0oIbZzwXLy3qkicaGih07cGOGicaGAwyGkhbHz2LUyxrLksb7cIaGicaGig9WDgLVBNmUCgfNzsa9ihbHz2u7cIaGicaGig9WDgLVBNmUCgvYugfNzsa9ihbLCLbHz2u7cIaGicaGig9WDgLVBNmUB2zMC2v0id0GkhbHz2uGlsaXksaQihbLCLbHz2u7cIaGicb9igvSC2uGEWOGicaGicbVChrPB25ZlMXPBwL0id0GBgLTAxq7cIaGicb9cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbTzw5KyxbHDgTHBIbKyxrHigXPC3qkicaGignVBNn0ihjLC3vSDca9igf3ywL0ia','icaGicaGjW','DMLZAwjPBgL0Eq','ihzHBhvLicGNicSGx19ZDhiUBgvUz3rOicSGjYbJAgfYCYKGzxHJzwvKCYbIyxnLigXLBMD0Aca','ydSkcIaGicaGignVBNn0ihbHCMfTCYa9ifTGjsr7C2vHCMnOihX8icCNFsvGxtSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKSihbHCMfTCYK7cGOGicaGicbJB25ZDcbYzxn1BhqGpsbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw0U','ih0kicaGicaGicbDcIaGicaGih0PoWOGicaGicbPzIaOiv9FC2rdAgvJAY5ZDwnJzxnZihX8icfFx3nKq2HLy2SUzgf0ysb8FcbFx3nKq2HLy2SUzgf0ys5Szw5NDgGGpt09idaPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicaGig1LC3nHz2u6icC','C3rYAw5N','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','lMrLBgv0zsiGBxvZDcbIzsbHBIbHCNjHEsCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cGOGicaGicaVlYbusurbsYbTzwXHA3vRyw4Gyxv0BY1JywXJDwXHDgLVBIbKAsbLBMrWB2LUDaOGicaGicaVlYbdywXJDwXHDgLVBIbHA2fUigrPBgfRDwTHBIbKAsbnB2rLBcbZzxrLBgfOihnLBxvHig9WzxjHC2KGzgf0ywjHC2uGC2vSzxnHAqOGicaGicaVlYbnB2rLBcbHA2fUifnftevdvcb1BgfUzYbZzw11ysbPDgvTCYbKyw4GAgL0Dw5NihrVDgfSigrHCMKGAgfZAwWGywTOAxikicaGicaGy29UC29Szs5SB2COj0nVBxbVC2L0zvvWzgf0zsbVCgvYyxrPB25ZoICSihSkicaGicaGicbKzwXLDgvFy291BNq6icHVCgvYyxrPB25ZlMrLBgv0zsb8FcbBxsKUBgvUz3rOlaOGicaGicaGihvWzgf0zv9JB3vUDdOGkg9WzxjHDgLVBNmUDxbKyxrLihX8ifTDks5Szw5NDgGScIaGicaGicaGAw5Zzxj0x2nVDw50oIaOB3bLCMf0Aw9UCY5PBNnLCNqGFhWGw10PlMXLBMD0AaOGicaGicb9ktSkicaGih0kicaGia','sLzOsMC','j10PoWOGicaGicaGignVBNn0ihvWzgf0zvf1zxj5id0Gj1vqrefursaNicSGD3jPDgvtB3vYy2uGkYaNifnfvcaNicSGC2v0q2XHDxnLCY5QB2LUkcCSicCPicSkicaGicaGicaGicCGv0HfuKuG','zgvSzxrL','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEYaVlYbqB3n0z3jLu1fmihvUAxf1zsb2Aw9SyxrPB24kicaGicaGy29UC3qGzgv0ywLSCYa9igj1AwXKrhvWBgLJyxrLrgv0ywLSCYHLCNjVCIK7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeDxbSAwnHDguGzw50CNKNlaOGicaGicaGig1LC3nHz2u6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNlaOGicaGicaGic4UlIHKzxrHAwXZid8GEYbKzxrHAwXZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihvWzgf0Aw5Nia','ks4G','jYWkicaGicaGicbXDwvYEtOGCMvXlMjVzhKScIaGicaGicaGCMvZDwX0q291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9oWOGicaGFqOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ig1LBMrHCgf0A2fUigrHDgeG','qLjdtwm','iL0kicaGicaGicaGih0ScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cGOGicaGicaVlYbwywXPzgfZAsbZzwXLy3qGzMLLBgrZigPPA2eGywrHicHZDxbWB3j0ifnrtcbLEhbYzxnZAw9UCYKkicaGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGicbJB25ZDcb2ywXPzezPzwXKCYa9ia','lNjLzhvJzsGOC3vTlcbPDgvTksa9pIb7cIaGicaGicaGy29UC3qGCxr5id0GtNvTyMvYkgL0zw0U','cI8ViokuGokuGokuGcbszxf1zxn0ifnJB3bLie1PzgrSzxDHCMuGkeXHEwvYideGuKXtksdILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILidILiaklY8GrhLUyw1PyYbWzxiTCMvXDwvZDcbMAwX0zxjPBMCGyNKGjW','Dg90ywXFCxr5','iICScIaGicaGicaGzxHHBxbSztOG','ksb7cIaGicaGigrLBgv0zsbYzxeUyM9KEvTFx3nKq29SxtSkicaGih0','ww1AA28','cIaGicaVlYbgBgfNihvUDhvRihnLBgyTzg9JDw1LBNrPBMCGqvbjicHLBMrWB2LUDcaVAw5MBYKkicaGihrOAxmUAgfZvMLLD1f1zxj5id0G','ywrQDxn0','lY8Gq3vZDg9Tigf1zgL0ignVBhvTBNmGBwfWCgLUzYbKyxjPihbHEwXVywqk','C3rHCNrZv2L0Aa','jYWGDMfSDwu6ia','cIaGicb9oWO','cIaGicb9oWOkicaGignVBxbVBMvUDevUz2LUzs5SB2fKq29UzMLNDxjHDgLVBKzYB21pyMPLy3qOy29TCg9Uzw50q29UzMLNks50AgvUkhjLC3vSDca9pIb7cIaGicaGigLMicHYzxn1BhqUC3vJy2vZCYKGEWOGicaGicaGignVBNnVBguUBg9NkgbdB21WB25LBNqGy29UzMLNDxjHDgLVBIbSB2fKzwqGzM9Yia','zgv0zwn0vgv4DenVBhvTBG','C2XPy2u','zMLUza','ChvZAa','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGsu5trvjuievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwqGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5PBNnLCNqPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HjBNnLCNqOcIaGicaGicaGjW','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFq','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGD3jPDguGkgfKzcWGDxbKyxrLlcbKzwXLDguPcG','ice9psaNB2jQzwn0jYb8FcbbCNjHEs5PC0fYCMf5kgrHDgeU','igrHDgeGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','laOGicaGicbKyxrHyMfZzvr5Cgu6icDWB3n0z3jLCYCScIaGicaGigDLBMvYyxrLzdOGjW','CgfYzw50q29SDw1U','ifn1yM1VzhvSzsaTief1Dg8Tz2vUzxjHDgvKig9Uia','ywXS','C29MDerLBgv0zuzRugfYzw50CW','laOGicaGicbPBxbVCNrdB25MAwC6ia','Dg90ywXFyw1VDw50','lMDLDeXPC3qOB3b0Aw9UCYK7cGOGicaGlY8GrM9YBwf0ihjLC3bVBNnLigjLCMrHC2fYA2fUig1VzgukicaGigLMicHWywDPBMf0zsKGEWOGicaGicbJB25ZDcb0B3rHBfbHz2vZid0Gtwf0Ac5JzwLSkhjLC3vSDc50B3rHBfjLy29YzhmGlYbWzxjqywDLktSkicaGicaGy29UC3qGAgfZtMv4Dca9ihbHz2uGpcb0B3rHBfbHz2vZoWOGicaGicbJB25ZDcbOyxnqCMv2Aw91CYa9ihbHz2uGpIaXoWOkicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGigrHDge6ihjLC3vSDc5KyxrHihX8ifTDlaOGicaGicaGignVDw50oIbYzxn1BhqUzgf0ysa/ihjLC3vSDc5KyxrHlMXLBMD0Aca6idaScIaGicaGicaGCgfNAw5HDgLVBJOGEWOGicaGicaGicaGy3vYCMvUDf9WywDLoIbWywDLlaOGicaGicaGicaGCgvYx3bHz2u6ihbLCLbHz2uScIaGicaGicaGicb0B3rHBf9YzwnVCMrZoIbYzxn1BhqUDg90ywXszwnVCMrZihX8idaScIaGicaGicaGicb0B3rHBf9WywDLCZOGDg90ywXqywDLCYWkicaGicaGicaGigHHC19UzxH0oIbOyxnozxH0laOGicaGicaGicaGAgfZx3bYzxzPB3vZoIbOyxnqCMv2Aw91CWOGicaGicaGih0kicaGicaGFsK7cIaGicb9igvSC2uGEWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGzgf0ytOGCMvZDwX0lMrHDgeGFhWGw10ScIaGicaGicaGy291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmaOGicaGicb9ktSkicaGih0kcIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','s0zADeC','ieforca','ksbMCM9TigfSBcbPDgvTCWOGicaGicbKyxrHlNrVDgfSx2fTB3vUDca9igrHDgeU','ktOGCgfYzw50ihDHAMLIia','kg1HC3rLCI1KzxrHAwWGDhjHBNnHy3rPB24P','icH3AxrOigrLDgfPBcbPDgvTCYK','zMLSDgvYCW','D2XXCwy','jZSkicaGicaG','cIaQifzPzxC6ia','B1DgBuK','BwfZDgvY','icaGic8VieD1BMfRyw4GCgfYzw50ig1LDgHVzcb5yw5Nihn1zgfOigLUy2X1zguGzgf0zxrPBwuGzM9YBwf0DgLUzWO','id0GvfjvrsCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','cIaGicbPzIaOixjLC3vSDc5KyxrHihX8ihjLC3vSDc5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','cI8VieTHzMTHifbYB2r1y2vYifnLCNzPy2uGDw50DwSGzxzLBNqGChvIBgLZAgLUzWPSzxqGA2fMA2ftzxj2AwnLid0GBNvSBdSkDhj5ihSkicbRywzRyvnLCNzPy2uGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3nLCNzPy2vZl2THzMTHu2vYDMLJzsCPlMDLDeLUC3rHBMnLkcK7cN0Gy2f0y2GGkguPihSkicbJB25ZB2XLlMvYCM9YkcDduKLusunbtdOGs2fMA2eGC2vYDMLJzsbMywLSzwqGDg8GBg9HzcbIDxqGs2fMA2eGChvIBgLZAgLUzYbPCYbJB25MAwD1CMvKoICSiguUBwvZC2fNzsK7cIaGDgHYB3CGztSkFqOklY8Gs2fMA2eGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqky29UC3qGA2fMA2fdB25MAwCGpsa','yxv0B0nHBgn1Bgf0zuzPzwXKCW','cIaGicaVlYbnB2rLBcbTzxrHzgf0yqOGicaGDgHPCY5TB2rLBe1LDgfKyxrHid0GEWOGicaGicbLBMrWB2LUDe5HBwu6icC','DxbSB2fKq29UzMLN','zgvMyxvSDfnJB3bL','igjLCMrHC2fYA2fUigTYAxrLCMLHcNjVDxrLCI5WB3n0kcCVzMLYC3qNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','jYbPCYbTAxnZAw5Nig9YihnVzNqTzgvSzxrLzciPoWOGicaGicaGicaGicaGif9FzMTfCNiUC3rHDhvZq29Kzsa9idqYmJSkicaGicaGicaGicaGicb0AhjVDYbFx2zRrxjYoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGFq','BM9Kzxm','iL0kicaGicaGicb9laOGicaGicaGigv4yw1WBgvFD2L0Af9VCMrLCMLUzZOGEWOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','oICSigvYCM9YktSkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbYzwfKAw5Nia','B0TNAeK','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GvMfSAwrHC2KGC3rYDwn0DxjLoIbPBNnLCNqSihvWzgf0zsWGzgvSzxrLigHHCNvZigfYCMf5igPPA2eGywrHcIaGicaGignVBNn0ig9WzxjHDgLVBNmGpsbKyxrHlG','cGOGicaGicaVlYaTls0Gsg9VAZOGB25bzNrLCKnVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbHzNrLCKn0Eca9ienclMj1AwXKq29TCg9ZAxrLvxbKyxrLqwz0zxjdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihvWzgf0zwrizwfKzxiSihSkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlaOGicaGicaGicaGzgvSzxrLzdOGzgvSzxrLzeL0zw1ZcIaGicaGicaGFsWGEWOGicaGicaGicaGDgfIBgvoyw1LoIaN','jYWGzw5KCg9PBNroyw1LlcbPBxbVCNrdB25MAwCPoWOGicaGicaGicaGicaGicaGBg9Nz2vYlMLUzM8OEWOGicaGicaGicaGicaGicaGicbLDMvUDdOGj2LTCg9YDf9YB3v0zxnFCMvNAxn0zxjLzcCScIaGicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicaGihrHyMXLoIbPBxbVCNrdB25MAwCUDgfIBgvoyw1LcIaGicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjVDxrLCYbYzwDPC3rLCMvKigzVCIaKE2vUzhbVAw50tMfTzx1GktSkicaGicaGicaGicaGicb9cIaGicaGicaGicaGih0Gy2f0y2GGkgLTCg9YDevYCM9Yksb7cIaGicaGicaGicaGicaGBg9Nz2vYlMvYCM9YkhSkicaGicaGicaGicaGicaGigv2zw50oIaNAw1WB3j0x3jLz2LZDhjHDgLVBL9LCNjVCICScIaGicaGicaGicaGicaGicbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlaOGicaGicaGicaGicaGicaGzxjYB3i6igLTCg9YDevYCM9YlM1LC3nHz2ukicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhTPBxbVCNrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIb1CgXVywqGCM91DgvZihvUDhvRigvUzhbVAw50igLUAsaOyxv0BY1KzxrLy3qGzgfYAsbLBwjLzgrLzcbJB25MAwCPcIaGicaGicaGicaGihrYEsb7cIaGicaGicaGicaGicaGy29UC3qGDxbSB2fKq29UzMLNid0GzxH0CMfJDfvWBg9HzenVBMzPz0zYB21fBMrWB2LUDcHLBMrWB2LUDfbHDgGPoWOGicaGicaGicaGicaGigLMicH1CgXVywrdB25MAwCPihSkicaGicaGicaGicaGicaGifvWBg9HzeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','iJOGEWOGicaGicaGicaGicaI','cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NAgfWDxmGzgf0ysa','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGBMv4DcGPoWP9ktSk','B25ezwXLDgu','laOGicaGicbYzxf1zxn0u2nVCgu6ia','Cxr5rMLLBgq','jhT3AgvYzvjLC3vSDc5ZCwX9','CNziD1e','ksb8FcaWoWOGicaGicaGicaGy29UC3qGChjPy2uGpsboDw1IzxiOAxrLBs4','zgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','cNjVDxrLCI5WB3n0kcCVzgvSzxrLjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGD2fQAwiGywT0AwyGDw50DwSGDgLHCcbRB2XVBsbgsYb5yw5NigrPAxnPicHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','qK9AyvC','D2HLCMvdBgf1C2uGkZ0GycbbtKqGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydS','iL0ScIaGicaGicaGicaIC29YDf9JB2X1Bw5ZiJOGwWOGicaGicaGicaGicb7cIaGicaGicaGicaGicaGiMnVBhvTBIi6ici','jYWkicaGicaGDMLLD05HBwu6icC','B3bvwe4','AgvHzgvYq2fSy3vSyxrPB25Z','l2rHDgf0ywjSzxmGlsbeyxrHihvUDhvRierHDgfuywjSzxmkCM91DgvYlNbVC3qOjY9KyxrHDgfIBgvZjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','ywn0AxzLx29UBhK','CMvHza','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','yxvJAuS','vgLKv2O','jYWkicaGicaGicbVBgreyxrHlaOGicaGicaGihjLC3bVBNnLrgf0ysWkicaGicaGicb7cIaGicaGicaGicb0B3bPyZOGA2fMA2fdB25MAwCUDg9WAwmGFhWGBNvSBcWkicaGicaGicaGigTLEuzPzwXKoIbRywzRyunVBMzPzY5RzxLgAwvSzcb8FcaN','cIaGicbJB25ZDcbOzwfKzxjdywXJid0G','oWOGicaGicbJB25ZDcbJB3vUDfrVDgfSuMvZDwX0id0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgnVDw50vg90ywXrDwvYEsK7cIaGicaGignVBNn0ihrVDgfSuMvJB3jKCYa9ignVDw50vg90ywXszxn1BhqGjIyGy291BNruB3rHBfjLC3vSDfSWxsa/ihbHCNnLsw50kgnVDw50vg90ywXszxn1BhrBmf0UDg90ywWPidOGmdSkcIaGicaGic8ViduUie1LBMDOAxr1BMCGANvTBgfOigrHDgeGDgvYzMLSDgvYic0Gz3vUywTHBIbYzwfKu291CMnLihvUDhvRihjLywqGB3bLCMf0Aw9UCWOGicaGicbSzxqGzMLSDgvYzwrszwnVCMrZid0GDg90ywXszwnVCMrZoWOGicaGicbPzIaOD2HLCMvdBgf1C2uPihSkicaGicaGicaVlYbbBhDHExmGD3jHCcbdveuVsK9jtIbXDwvYEsbMB3iGy291BNrPBMCGD2L0AcbMAwX0zxjZcIaGicaGicaGy29UC3qGy291BNrgAwX0zxjLzff1zxj5id0GBMvLzhntDwjXDwvYEsa/cIaGicaGicaGicaNu0vmrunuienpvu5ukcOPigfZihrVDgfSiezst00GkcCGkYbIyxnLuxvLCNKGkYaNksbIyxnLx3f1zxj5icCGkYb3AgvYzunSyxvZzsa6cIaGicaGicaGicaNu0vmrunuienpvu5ukcOPigfZihrVDgfSiezst00GjYaRihrOAxmUCMvHzfnVDxjJzsaRicCGjYaRihDOzxjLq2XHDxnLoWOGicaGicaGignVBNnVBguUBg9NkcDdB3vUDcbgAwX0zxjLzcbrDwvYEtONlcbJB3vUDezPBhrLCMvKuxvLCNKPoWOGicaGicaGignVBNnVBguUBg9NkcDdB3vUDcbgAwX0zxjLzcbqyxjHBwv0zxjZoICSihDOzxjLugfYyw1ZktSkicaGicaGicbJB25ZDcbJB3vUDezPBhrLCMvKuMvZDwX0id0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgnVDw50rMLSDgvYzwrrDwvYEsWGD2HLCMvqyxjHBxmPoWOGicaGicaGigzPBhrLCMvKuMvJB3jKCYa9ignVDw50rMLSDgvYzwrszxn1BhqGjIyGy291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','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','l2rLBgv0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihjLCxvLC3qGyM9KEqOGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKignHBM5VDcbIzsbLBxb0EsCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','oWOGicaGD29YA2zSB3DdB25MAwCUx3bYB2PLy3qGpsaN','ih07cGOGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGihjLCs5IB2r5lNDOzxjLid0Gw3nVzNrezwXLDgvdB25KAxrPB25DoWOGih0GzwXZzsbPzIaOqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKPihSkicaGihjLCs5IB2r5lNDOzxjLlNvUC2HPzNqOC29MDerLBgv0zunVBMrPDgLVBIK7cIaGFsbLBhnLigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKPihSkicaGignVBNn0ig9YAwDPBMfStg9NAwmGpsbYzxeUyM9KEs53AgvYzs5SB2DPyYb8FcaNqu5ejZSkicaGigLMicHVCMLNAw5HBeXVz2LJid09psaNqu5ejYKGEWOGicaGicbYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZlNvUC2HPzNqOC29MDerLBgv0zunVBMrPDgLVBIK7cIaGicb9igvSC2uGEWOGicaGicbYzxeUyM9KEs53AgvYzsa9ihSkicaGicaGicbSB2DPyZOGj0forcCScIaGicaGicaGy29UzgL0Aw9UCZOGwWOGicaGicaGicaGC29MDerLBgv0zunVBMrPDgLVBIWkicaGicaGicaGihSGBg9NAwm6ig9YAwDPBMfStg9NAwmSignVBMrPDgLVBNm6ihjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFqOGicaGicaGif0kicaGicaGFtSkicaGih0kicb9cGOGig5LEhqOktSkFsK7cG','x21LDgfKyxrH','Dg9qyxnJywXdyxnL','jZSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBzgv0ywLSs2v5xtSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBDgHPCY5WCMLTyxj5s2v5xtSkcIaGicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbKzxrHAwXpChmGpsbKyxrHw2rLDgfPBeTLEv0GFhWGE307cIaGicaGicaGy29UC3qGyMvMB3jLq3r4id0Gq0iUyNvPBgrdB21WB3nPDgvvCgrHDgvczwzVCMvdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihSkicaGicaGicaGigLUC2vYDdOGzgv0ywLSt3bZlMLUC2vYDcb8FcbBxsWkicaGicaGicaGihvWzgf0ztOGzgv0ywLSt3bZlNvWzgf0zsb8FcbBxsWkicaGicaGicaGigrLBgv0ztOGzgv0ywLSt3bZlMrLBgv0zsb8FcbBxqOGicaGicaGih0SihSkicaGicaGicaGihrHyMXLtMfTztOGjW','oWOkicaGic8VifzHBgLKyxnPihbYAw1HCNKGA2v5cIaGicbPzIaOiwrHDgeU','z2vUzxjHDgvK','zw50CMLLCW','y29Kzq','jYK7cGOVlYbjC3n1zsaJmtm6igvRC3rYywSGzMLLBgqGCgvUEwvIywiGA29UzMXPAYbKyxjPigvYCM9YihvUAxf1zs12Aw9SyxrPB24Gug9ZDgDYzvnrtc4klY8GtwvUz2vTyMfSAwTHBIbTyxaGEYbMAwvSzdOGw3bLC2fUxsb9igf0yxuGBNvSBcaOy2fSBc1ZAxrLig1LBMCTB21PDcbGzgv0ywLSC2aPlGPMDw5JDgLVBIbIDwLSzer1CgXPy2f0zurLDgfPBhmOzxjYB3iPihSkicbPzIaOiwvYCM9YihX8ihr5CgvVzIbLCNjVCI5KzxrHAwWGit09icDZDhjPBMCNksbYzxr1CM4GBNvSBdSkicbJB25ZDcbTid0GzxjYB3iUzgv0ywLSlM1HDgnOkc9Es2v5ifWOkfTEkv0RkvWPps8PoWOGigLMicGHBsKGCMv0DxjUig51BgW7cIaGy29UC3qGy29SCYa9ig1Bmv0UC3bSAxqOjYWNks5TyxaOkgmPid0+igmUDhjPBsGPlNjLCgXHy2uOl14IFciKl2CSicCNksKUzMLSDgvYkejVB2XLyw4PoWOGigLMicHJB2XZlMXLBMD0Aca9pt0GmcKGCMv0DxjUig51BgW7cIaGy29UC3qGBxnNid0Gy29SCY5Szw5NDgGGpIaXcIaGica/icDbihjLy29Yzcb3AxrOihrOAxmGy29TyMLUyxrPB24GB2yGDMfSDwvZigfSCMvHzhKGzxHPC3rZjWOGicaGoIaNqsbYzwnVCMqGD2L0Acb0AgLZihzHBhvLigfSCMvHzhKGzxHPC3rZjZSkicbJB25ZDcbKzxrHAwXZid0GE307cIaGzM9YicHJB25ZDcbJig9MignVBhmPigrLDgfPBhnBy10GpsbBBxnNxtSkicbYzxr1CM4Gzgv0ywLSCZSkFqO','cIaGicbJB25ZDcb3B3jRzMXVD0nVBMzPzYa9ia','Bg9JA2vKuM93wYC','cI8Vie5VigfJDgLVBNmGzw5HyMXLzcbMB3iGDgHPCYbLBMrWB2LUDaOVlYbfBMfIBguGywn0Aw9UCYbPBIbWyxLSB2fKihrVigDLBMvYyxrLigvUzhbVAw50CW','icyMiefYCMf5lMLZqxjYyxKO','ifDirvjfia','cNjVDxrLCI5WB3n0kcCVDxbKyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','cIaGicaGicaGlY8GCMv1C2fIBguGjW','y29UC3rYywLUDhm','lNvWzgf0zsiGBxvZDcbIzsbHBIbHCNjHEsCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicaGigLMicHVCgvYyxrPB25ZlMrLBgv0zsaMjIaHqxjYyxKUAxnbCNjHEsHVCgvYyxrPB25ZlMrLBgv0zsKPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifbHBMDNAwWGBw9KzwWGCMvHzenVBxbVC2L0zsbTzxrOB2qkicaGignVBNn0ihjLC3vSDca9igf3ywL0ia','cIaGicaVlYbwywXPzgfZAsbWCMLTyxj5igTLEqOGicaGy29UC3qGChjPBwfYEuTLEsa9icC','C29Tzq','cIaGicaGih0','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','yuPqwfG','AM9PBG','Bg9VA3vW','ChjPBwfYEuTLEq','laOGicaGicbMAwvSzeXHyMvSCZOG','EeHqEu0','id0GrKfmu0uNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','cIaGicaVlYbiyw5KBguGzM9YzwLNBIbRzxKGy29UC3rYywLUDcbLCNjVCNmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mdmNksb7ic8VifbVC3rNCMvtuuWGzM9YzwLNBIbRzxKGDMLVBgf0Aw9UcIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDgB3jLAwDUigTLEsbJB25ZDhjHAw50jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90igrLBgv0ztOGCMvJB3jKigLZihn0AwXSihjLzMvYzw5JzwqGyNKGB3rOzxiGzgf0ysCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigrLBgv0Aw5Nia','AxrLBxm','oWOkicaGignVBNn0ihDYAxrLu291CMnLid0GDgHPCY5NzxruywjSzvnVDxjJzsGND3jPDguNktSkicaGignVBNn0ihjLDhvYBMLUz0zPzwXKCYa9ihrOAxmUz2v0uMv0DxjUAw5NrMLLBgrZkcK7cIaGicaVlYbKzwXLDgvKx2j5oIbIB2r5igvRC3bSAxnPDcdIHPiGzxzLBNrdB250zxH0lMfKzgL0Aw9UywXdB250zxH0lNvZzxjFAwqG4OAsicDZExn0zw0NlIbszxnVBhvZAqOGicaGlY8GEwfUzYbtqu1bigrPCgfRywKGDw50DwSGBwfZDgvYierbtIbZzwX1CNvOigrLC2nLBMrHBNqGCgfKysbJyxnJywrLicHgsY1trc0Zicm2ks4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','jYWkicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGFsK7cN0PoWOkBw9KDwXLlMv4Cg9YDhmGpsbYB3v0zxi7','oIbHBMfRicC','zw5HyMXLza','CMvWBgfJzq','jYK7cGOGicaGicb0CNKGEWOGicaGicaGic8VievUC3vYzsbTB2r1BgvZigrPCMvJDg9YEsbLEgLZDhmkicaGicaGicbPzIaOiwzZlMv4Axn0C1n5BMmOBw9KDwXLC0rPCIKPihSkicaGicaGicaGigzZlM1RzgLYu3LUyYHTB2r1BgvZrgLYlcb7ihjLy3vYC2L2ztOGDhj1zsb9ktSkicaGicaGicaGignVBNnVBguUBg9NkgbdCMvHDgvKig1VzhvSzxmGzgLYzwn0B3j5oIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGFqOkicaGicaGicaVlYbszwfKigrHBIbSB2fKihnLBxvHigvUzhbVAw50igzPBgvZcIaGicaGicaGy29UC3qGzMLSzxmGpsbMCY5YzwfKzgLYu3LUyYHTB2r1BgvZrgLYktSkicaGicaGicbJB25ZDcbLBMrWB2LUDezPBgvZid0GzMLSzxmUzMLSDgvYkgzPBguGpt4GzMLSzs5LBMrZv2L0AcGNlMPZjYKPoWOkicaGicaGicbPzIaOzw5KCg9PBNrgAwXLCY5Szw5NDgGGpt09idaPihSkicaGicaGicaGignVBNnVBguUBg9NkgboBYbLBMrWB2LUDcbMAwXLCYbMB3vUzcbPBIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGicbJB25ZB2XLlMXVzYHGqwrKigvUzhbVAw50igzPBgvZihrVigvUywjSzsbbueKGzNvUy3rPB25HBgL0EwaPoWOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNzw5KCg9PBNrZx2XVywrPBMCNlcbJB3vUDdOGzw5KCg9PBNrgAwXLCY5Szw5NDgGGFsWGyeXVywrPBMCGjhTLBMrWB2LUDezPBgvZlMXLBMD0Ah0Gzw5KCg9PBNqOCYLGktSkicaGicaGicb9cGOGicaGicaGic8VifjLz2LZDgvYihnLDgLHCcbLBMrWB2LUDaOGicaGicaGigzVCIaOy29UC3qGzMLSzsbVzIbLBMrWB2LUDezPBgvZksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDe5HBwuGpsbWyxrOlMjHC2vUyw1LkgzPBguSicCUANmNktSkicaGicaGicaGicaGy29UC3qGzw5KCg9PBNrqyxrOid0GCgf0Ac5QB2LUkg1VzhvSzxneAxiSigzPBguPoWOkicaGicaGicaGicaGlY8Gq2XLyxiGBw9KDwXLignHy2HLihvUDhvRigrLDMvSB3bTzw50cIaGicaGicaGicaGigLMicHYzxf1AxjLlMnHy2HLw2vUzhbVAw50ugf0Af0PihSkicaGicaGicaGicaGicbKzwXLDguGCMvXDwLYzs5JywnOzvTLBMrWB2LUDfbHDgHDoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDfjVDxrLCIa9ihjLCxvPCMuOzw5KCg9PBNrqyxrOktSkcIaGicaGicaGicaGigLMicGHzw5KCg9PBNrsB3v0zxiPihSkicaGicaGicaGicaGicbJB25ZB2XLlNDHCM4OyevUzhbVAw50icr7zw5KCg9PBNroyw1LFsbKAwqGBM90igv4Cg9YDcbHihjVDxrLCMaPoWOGicaGicaGicaGicaGignVBNrPBNvLoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIbLBMrWB2LUDcbKzw5Nyw4GChjLzML4cIaGicaGicaGicaGignVBNn0igvUzhbVAw50uhjLzML4id0Gyc9HCgKV','D29YA2zSB3C','cGOGicaGicaGic8ViduUifjLC2v0igTVBg9TihnVzNqTzgvSzxrLlIb1CgrHDgvKxYOGveLequSGzgLZzw50DwGGkgTVBNnPC3rLBIbsmtqPlGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','nZC3mJm1EM9PqvbR','ELPbChK','ywDNCMvNyxrL','Efb4Bhm','oICSigvYCM9YktSk','cIaGicaVlYbgsY1trc0XoIbJzwSGCgfYzw50igfRDgLMigHHBNLHihvUDhvRigTVBg9TiezlihLHBMCGzgLZzxj0ywTHBIbIB2r5icHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','ChjPy2vgAwvSza','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','ywn0Aw9U','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','laOGicaGicaGihrLEhq6igL0zw0U','oMaSigvYCI5TzxnZywDLktSkicaGih0PoWOGih0kFsbJyxrJAcaOzsKGEWOGigLMicHOyxndB21WB25LBNrZksb7cIaGicaVlYbdB21WB25LBNrZigrPA29UzMLNDxjHC2KGDgfWAsbLBMDPBMuGz2fNywWGBg9HzcdIGjqGAw5PigvYCM9YlcbIDwTHBIbVChrPB25HBaOGicaGy29UC29Szs5LCNjVCIHGq1jjveLdquW6ienVBxbVBMvUDcbLBMDPBMuGzMfPBgvKihrVigXVywqGzM9Yia','id0GjW','iL07cGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbqyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicjZzwXLy3rLzf90ywCIoIaIB3b0Aw9UywWTAwqTAwyTBMvLzgvKiIWkicaGicaGicaGicj3AgvYzsi6ifT7icjRzxKIoIaI','qNzhDMK','mtCYotCXmNHdAuHAwq','id0Gjde','ihn0yxrPyYbSB29RDxa6jYWGzxjYB3iPoWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigzLDgnOAw5Nia','y3jLyxrL','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','Aw5MBW','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSk','laOGicaGicaGihrVDgfSuMvJB3jKCZOGzMLSDgvYzwrszwnVCMrZlaOGicaGicaGihrVDgfSvw5MAwX0zxjLzdOGDg90ywXszwnVCMrZcIaGicaGih07cGOGicaGicbPzIaOCgfNAw5HDguPihSkicaGicaGicbYzxn1BhqUCgfNzsa9ihbHz2u7cIaGicaGicaGCMvZDwX0lNbLCLbHz2uGpsbWzxjqywDLoWOGicaGicb9cGOGicaGicaVlYbdywnOztOGu3rVCMuGCMvZDwX0igLUignHy2HLcIaGicaGigf3ywL0ihrOAxmUC2v0q2fJAgvKtgLZDcHVChrPB25ZlcbYzxn1BhqPoWOGicaGicbJB25ZB2XLlMXVzYHGw0nHy2HLxsbtrvqGzM9YigXPC3qGlsaKE2nHy2HLsw5MB31GktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmAxn0oICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbnzw1Iyw5NDw4Gv0HfuKuGy2XHDxnLigrHCMKGzMLSDgvYig9IAMvJDaOGicaQiebWyxjHBsb7t2jQzwn0FsbMAwX0zxjZic0Gt2jQzwn0igzPBhrLCIbKzw5Nyw4GzM9YBwf0ihTJB2X1Bw46ihzHBhvLFqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzsbtuuWGyxrHDsbLBxb0EsbZDhjPBMCkicaGkI8kicbIDwLSze9IAMvJDezPBhrLCKnSyxvZzsHMAwX0zxjZksb7cIaGicbPzIaOiwzPBhrLCNmGFhWGDhLWzw9MigzPBhrLCNmGit09icDVyMPLy3qNihX8ie9IAMvJDc5RzxLZkgzPBhrLCNmPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGy29UzgL0Aw9UCYa9ifTDoWOkicaGigzVCIaOy29UC3qGw2nVBhvTBIWGDMfSDwvDig9Mie9IAMvJDc5LBNrYAwvZkgzPBhrLCNmPksb7cIaGicaGic8VifzHBgLKyxnPigTVBg9TigHHCNvZigfKysbKywXHBsb2ywXPzezPzwXKCWOGicaGicbPzIaODgHPCY52ywXPzezPzwXKCY5PBMnSDwrLCYHJB2X1Bw4PicyMihzHBhvLice9psbUDwXSicyMihzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09icCNksb7cIaGicaGicaGlY8GrxnJyxbLihzHBhvLihvUDhvRig1LBMnLz2fOifnrtcbPBMPLy3rPB24kicaGicaGicbJB25ZDcbLC2nHCgvKvMfSDwuGpsb2ywX1zs50B1n0CMLUzYGPlNjLCgXHy2uOlYCVzYWGiICNiIK7cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GpsaNjhTLC2nHCgvKvMfSDwv9j2aPoWOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUignVBMrPDgLVBNmUBgvUz3rOid4Gmca/ignVBMrPDgLVBNmUAM9PBIGNieforcaNksa6icCNoWOGih0kcG','laOGicaGicbHzgP1C3rdB25MAwC6ia','cIaGicaVlYbdzwSGyxbHA2fOihbYAw1HCNKGA2v5igfKywXHAcbvvuLeihLHBMCGDMfSAwqGkgPPA2eGChjPBwfYEsbRzxKGywrHBgfOicDPzcCPcIaGicbJB25ZDcb1DwLKuMvNzxGGpsaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSXltvDwZaToweTzL17m30TwZG5ywjDwZaToweTzL17m30TwZaToweTzL17mtj9jc9PoWOGicaGy29UC3qGAxnwywXPzfvvsuqGpsbWCMLTyxj5s2v5id09psaNAwqNicyMihv1AwrszwDLEc50zxn0khjLCs5IB2r5w3bYAw1HCNLlzxLDktSkcIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','DgfIBgvoyw1L','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGvvbeqvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKvxbKyxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrvCgrHDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI51CgrHDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HvCgrHDguOcIaGicaGicaGjW','jYWkicaGicaGicaGignVCNjLBgf0Aw9Uswq6ignVCNjLBgf0Aw9UswqkicaGicaGicb9cIaGicaGicKUy2f0y2GOzxjYid0+ignVBNnVBguUzxjYB3iOj1TlywzRyv0Gqxn5BMmGChvIBgLZAcbLCNjVCJONlcbLCNiUBwvZC2fNzsKPoWOGicaGFqO','oWOGicaGicbSzxqGC2vSzwn0q2XHDxnLid0GjW','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFsWkicaGicaGicaGicaGEWOGicaGicaGicaGicaGicjJB2X1Bw4IoIaI','DxbKyxrL','zNDKsNO','D2HLCMvdBgf1C2uGpsbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydS','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZktSkcIaGicbJB25ZB2XLlMXVzYHGtg9VA3vWihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGzgf0ytOGBgLZDcWkicaGicaGC2vHCMnOoIbZzwfYy2GScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','iezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3DOzxjLq2XHDxnLFwa7cIaGicaGignVBNn0igHLywrLCLjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhqUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqNktSkicaGicaGFqOkicaGicaGy29UC3qGAgvHzgvYuhjPBwfYEuTLEvzHBhvLid0GAgvHzgvYuMvZDwX0lNjVD3nBmf1BjW','laOGicaGicbYzxf1AxjLzezPzwXKCZOG','zgf0zuzPzwXKCW','oIaKE3jLC3vSDc5JB21WB25LBNrZtg9HzgvKFsbJB21WB25LBNrZycK7cIaGicaGih0kicaGih0PlMnHDgnOkgvYCIa9pIb7cIaGicaGignVBNnVBguUzxjYB3iOyezHAwXLzcb0BYbSB2fKignVBxbVBMvUDcbJB25MAwD1CMf0Aw9UigzVCIa','BwfZDgvYrgv0ywLS','laOGicaGicaGihrLEhq6igL0zw1BDgv4DezPzwXKtMfTzv0GFhWGAxrLBs4','uu50AuK','oWOkicaGic8VifbHBMDNAwWGy29UC3rYDwn0B3iGCgfYzw50igrLBMDHBIbUyw1HihrHyMvSlcb2ywXPzezPzwXKCYWGzgfUigrHDgf0ywjSzxnxAgvYzqOGicaGC3vWzxiOjW','zgf0zvrPBwvgAwvSzhm','x2XVB2T1CenVBMzPzW','jYa6cIaGicaGicaGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGjW','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGywrQDxn0Aw5Nia','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLza','laOGicaGicbJB21WB25LBNrZoIa','id0GjdeGqu5eia','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zsa9icDxsevsrsaNicSGzMLSDgvYq2XHDxnLoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gnc4GuhjVC2vZihbHCMfTzxrLCIb3AgvYzsbKzw5Nyw4GzM9YBwf0igfKDMfUy2vKignVBMrPDgLVBNmkicaGicaGBgv0ihDOzxjLugfYyw1Zid0Gw107cIaGicaGigLMicH3AgvYzsaMjIaOqxjYyxKUAxnbCNjHEsH3AgvYzsKGFhWGkhDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsH3AgvYzs5JB25KAxrPB25ZksKPksb7cIaGicaGicaGDhj5ihSkicaGicaGicaGigXLDcbWyxjHBxmGpsbBxtSkicaGicaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSkicaGicaGicaGignVBNn0ihDOzxjLuMvZDwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsH3AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGicaGigLMicH3AgvYzvjLC3vSDc5ZCwWPihSkicaGicaGicaGicaGAwyGkhDOzxjLq2XHDxnLksb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGkZ0GjYbbtKqGkcCGkYb3AgvYzvjLC3vSDc5ZCwWGkYaNksC7cIaGicaGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGpsaNv0HfuKuGjYaRihDOzxjLuMvZDwX0lNnXBdSkicaGicaGicaGicaGFqOGicaGicaGicaGicb3AgvYzvbHCMfTCYa9ihDOzxjLuMvZDwX0lNbHCMfTCZSkicaGicaGicaGih0kicaGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VienOzwnRigLMihf1zxj5ig5LzwrZihn1yNf1zxj5ihDYyxbWAw5NicHdveuGB3iGsK9jtIKkicaGicaGy29UC3qGAxndDgvrDwvYEsa9igjHC2vrDwvYEs50B0XVD2vYq2fZzsGPlNrYAw0Oks5ZDgfYDhnxAxrOkcD3AxrOjYK7cIaGicaGignVBNn0igHHC0PVAw4GpsaVxgiOAw5Uzxj8BgvMDhXYAwDODhXJCM9ZC3XMDwXSkvXZk2PVAw5CyI9PlNrLC3qOyMfZzvf1zxj5ksb8FcaVxgjQB2LUxgiVAs50zxn0kgjHC2vrDwvYEsK7cIaGicaGignVBNn0ig5LzwrZu3vICxvLCNKGpsbPC0n0zvf1zxj5ihX8igHHC0PVAw47cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GlsbNDw5HA2fUihjLywrtB3vYy2uGDw50DwSGCMvHzcbVCgvYyxrPB25ZcIaGicaGignVBNn0ignVDw50vg90ywXrDwvYEsa9ig5LzwrZu3vICxvLCNKGpWOGicaGicaGicDtruXfq1qGq09vtLqOkIKGyxmGDg90ywWGrLjptsaOjYaRigjHC2vrDwvYEsaRicCPigjHC2vFCxvLCNK','zMLYC3q','Cu9Tu0m'];a0_0x4c62=function(){return _0x4abfa;};return a0_0x4c62();}function generateSoftDeleteRestoreOverride(_0x2fa360){const _0x3587ad=a0_0x3751,_0x273a6b={'gmCQv':_0x3587ad(0x22a),'lhVBd':_0x3587ad(0x1c2)},_0x2b695d=_0x2fa360[_0x3587ad(0x10a)]||_0x2fa360['fieldName']&&_0x2fa360['fieldName'][0x0]||'id',_0x1d0b1a=_0x2fa360['softDelete']&&Array['isArray'](_0x2fa360['softDelete'][_0x3587ad(0x16f)])?_0x2fa360['softDelete'][_0x3587ad(0x16f)]:[],_0x1a6ddc=Array['isArray'](_0x2fa360[_0x3587ad(0x190)])?_0x2fa360['softDeleteFkChecks']['filter'](_0x479dd3=>_0x479dd3&&Array[_0x3587ad(0x25a)](_0x479dd3[_0x3587ad(0x241)])&&_0x479dd3[_0x3587ad(0x241)]['length']>0x0&&typeof _0x479dd3['refTable']==='string'&&_0x479dd3['refTable']&&Array['isArray'](_0x479dd3['refColumns'])&&_0x479dd3['refColumns']['length']===_0x479dd3[_0x3587ad(0x241)][_0x3587ad(0x185)]):[],_0x54db14=[_0x2b695d];for(const _0x2aa44a of _0x1d0b1a){if(_0x2aa44a&&_0x2aa44a['field']&&!_0x54db14['includes'](_0x2aa44a[_0x3587ad(0x15e)]))_0x54db14[_0x3587ad(0x280)](_0x2aa44a[_0x3587ad(0x15e)]);}for(const _0x21038d of _0x1a6ddc){for(const _0x38e333 of _0x21038d[_0x3587ad(0x241)]){if(_0x38e333&&!_0x54db14['includes'](_0x38e333))_0x54db14['push'](_0x38e333);}}const _0x1bf2f8=_0x54db14['join'](',\x20'),_0x2acd41=_0x1d0b1a['map'](_0x5635a7=>{const _0x6b0fa5=_0x3587ad,_0x878166=_0x5635a7['field'],_0x3aa2ac=_0x5635a7[_0x6b0fa5(0x185)];return _0x6b0fa5(0xff)+_0x878166+'\x27\x20(base\x20length\x20'+_0x3aa2ac+'):\x20strip\x20suffix\x20\x27##\x27\x20+\x20konflik\x20409\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cur\x20=\x20lockedRow[\x27'+_0x878166+_0x6b0fa5(0x24b)+_0x878166+_0x6b0fa5(0x153)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20AND\x20'+_0x2b695d+'\x20<>\x20$2\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__original,\x20lockedRow[\x27'+_0x2b695d+'\x27]]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__conflict.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conflictError\x20=\x20new\x20Error(\x22Cannot\x20restore:\x20\x27'+_0x878166+'\x27\x20value\x20\x27\x22\x20+\x20__original\x20+\x20\x22\x27\x20is\x20already\x20in\x20use\x20by\x20an\x20active\x20record\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conflictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20conflictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Strip\x20hanya\x20bila\x20ada\x20suffix\x20\x27##\x27\x20(legacy\x20dibiarkan\x20apa\x20adanya,\x20cukup\x20reset\x20kolom).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__sepIdx\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+_0x878166+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__original);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x3587ad(0x108)](''),_0x56a0f7=_0x1a6ddc['map']((_0x4fabb5,_0x32c974)=>{const _0x4a1846=_0x3587ad,_0x18bb62=_0x4fabb5['parentSoftDelete']===!![],_0xfe2e55=_0x4fabb5[_0x4a1846(0x1d8)],_0x2c8d85=_0x4fabb5[_0x4a1846(0x241)]['map'](_0x60994=>_0x4a1846(0xfa)+_0x60994+'\x27]')[_0x4a1846(0x108)](',\x20'),_0x597d1c=_0x4fabb5['refColumns']['map']((_0x2c775a,_0x542b5f)=>_0x2c775a+'\x20=\x20$'+(_0x542b5f+0x1))[_0x4a1846(0x108)]('\x20AND\x20'),_0x1294aa=_0x18bb62?_0x4a1846(0x28f)+IS_DELETED_COLUMN+'\x20=\x20FALSE':'',_0xa8ecc=_0x18bb62?_0x273a6b[_0x4a1846(0x1f8)]:_0x273a6b['lhVBd'];return _0x4a1846(0x1f3)+_0x32c974+'\x20→\x20'+_0xfe2e55+'\x20(parentSoftDelete='+_0x18bb62+_0x4a1846(0x291)+(_0x18bb62?_0x4a1846(0x223):'ada')+'\x20(422)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVals\x20=\x20['+_0x2c8d85+'];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20nullable:\x20bila\x20ada\x20nilai\x20NULL,\x20parent\x20tidak\x20diwajibkan\x20→\x20skip\x20cek.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVals.every((v)\x20=>\x20v\x20!==\x20null\x20&&\x20v\x20!==\x20undefined))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0xfe2e55+'\x20WHERE\x20'+_0x597d1c+_0x1294aa+_0x4a1846(0x240)+_0xfe2e55+'\x27\x20is\x20'+_0xa8ecc+_0x4a1846(0x227);})['join']('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20restore\x20override\x20(R20).\x20/restore\x20membalik\x20soft\x20delete\x20secara\x20atomic.\x0a\x20\x20\x20*\x20Atomic\x20(satu\x20transaction):\x20SELECT\x20FOR\x20UPDATE\x20row\x20terhapus\x20(is_deleted=TRUE)\x20→\x20strip\x20suffix\x0a\x20\x20\x20*\x20reusable\x20+\x20konflik\x20409\x20+\x20FK\x20422\x20→\x20UPDATE\x20reset\x20is_deleted/deleted_at/deleted_by\x20→\x20COMMIT\x20→\x0a\x20\x20\x20*\x20invalidateCache.\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20restored_count,\x20restored_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20restoreData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20row\x20terhapus\x20yang\x20cocok\x20kriteria.\x20Filter\x20is_deleted\x20=\x20TRUE\x20memastikan\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20hanya\x20record\x20yang\x20benar-benar\x20ter-soft-delete\x20yang\x20dipulihkan;\x20FOR\x20UPDATE\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20menjamin\x20satu\x20pemenang\x20saat\x20restore\x20bersamaan.\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20'+_0x1bf2f8+_0x3587ad(0x1c0)+IS_DELETED_COLUMN+_0x3587ad(0x194)+_0x2acd41+_0x56a0f7+_0x3587ad(0x117)+IS_DELETED_COLUMN+_0x3587ad(0x10d)+DELETED_AT_COLUMN+_0x3587ad(0x1c1)+DELETED_BY_COLUMN+_0x3587ad(0x1f4)+_0x2b695d+_0x3587ad(0x269)+_0x2b695d+_0x3587ad(0x234);}function generateRestoreMethod(_0x3f828d){const _0x32aa93=a0_0x3751,_0x2eda41={'xHPyM':function(_0x14161e,_0x56377f){return _0x14161e(_0x56377f);}},_0x3c5986=_0x3f828d[_0x32aa93(0x123)]||{};if(!_0x3c5986['restore']||!_0x2eda41[_0x32aa93(0x10c)](isSoftDeleteEnabled,_0x3f828d))return'';return generateSoftDeleteRestoreOverride(_0x3f828d);}function hasSoftDeleteFkParents(_0x359bc8){const _0x109add=a0_0x3751;return Array['isArray'](_0x359bc8[_0x109add(0x28a)])&&_0x359bc8['softDeleteFkParents']['length']>0x0;}function generateSoftDeleteFkParentsCheck(_0x2e1215){const _0x33fa6c=a0_0x3751,_0x52e0d7={'rmGsW':function(_0x1b6805,_0x5e9910){return _0x1b6805(_0x5e9910);}};if(!_0x52e0d7['rmGsW'](hasSoftDeleteFkParents,_0x2e1215))return'';const _0x123059=_0x2e1215['softDeleteFkParents'][_0x33fa6c(0x23f)]((_0x39f884,_0x2c746b)=>{const _0x264ec3=_0x33fa6c,_0x495ca7=_0x39f884[_0x264ec3(0x241)][0x0],_0x447b97=_0x39f884['refTable'],_0x492294=_0x39f884['refColumns'][0x0];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x2c746b+'\x20\x27'+_0x495ca7+_0x264ec3(0x1a0)+_0x447b97+'.'+_0x492294+':\x20parent\x20wajib\x20aktif\x20(is_deleted=FALSE)\x20→\x20else\x20422.\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVal\x20=\x20body[\x27'+_0x495ca7+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Pemicu\x20=\x20kolom\x20FK\x20hadir\x20non-null;\x20null/undefined\x20→\x20skip\x20(FK\x20nullable,\x20tak\x20ada\x20parent).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVal\x20!==\x20null\x20&&\x20__fkVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkRes\x20=\x20await\x20pool.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x447b97+_0x264ec3(0xfd)+_0x492294+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__fkVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkRes.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkErr\x20=\x20new\x20Error(\x22Cannot\x20\x22\x20+\x20operation\x20+\x20\x22:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x447b97+_0x264ec3(0x2a3);})['join']('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20FK-SD-1\x20forward\x20block.\x20Tolak\x20create/update\x20anak\x20yang\x20menunjuk\x20parent\x20soft-delete\x20yang\x0a\x20\x20\x20*\x20terhapus\x20(is_deleted=TRUE)\x20atau\x20tidak\x20ada\x20(422).\x20Hanya\x20FK\x20ber-parent\x20soft-delete-enabled\x0a\x20\x20\x20*\x20(registry\x20softDeleteFkParents)\x20yang\x20dicek;\x20FK\x20null/absent\x20→\x20skip.\x20Dipanggil\x20route\x20/create\x0a\x20\x20\x20*\x20dan\x20/update\x20sebelum\x20addData/updateData.\x20Pre-check\x20pool\x20terpisah\x20(non-transaksional):\x20lihat\x0a\x20\x20\x20*\x20catatan\x20atomicity\x20Bagian\x20B\x20di\x20report\x20Phase\x2002.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20body\x20-\x20request\x20body\x20(req.body)\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20\x27create\x27\x20|\x20\x27update\x27\x20(untuk\x20pesan\x20error\x20422)\x0a\x20\x20\x20*/\x0a\x20\x20async\x20checkSoftDeleteFkParents(body,\x20operation)\x20{\x0a\x20\x20\x20\x20if\x20(!body\x20||\x20typeof\x20body\x20!==\x20\x27object\x27)\x20return;\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a'+_0x123059+_0x33fa6c(0x1d4);}function createPostgresModelTemplate(_0x58121d,_0x2273e3,_0x34a71c){const _0x235892=a0_0x3751,_0x44dfd9={'PRYMp':function(_0x4951b5,_0x3755fe){return _0x4951b5(_0x3755fe);},'LDRft':function(_0x2c0ee4,_0x47d907){return _0x2c0ee4(_0x47d907);},'ibLDb':'\x20\x20\x20\x20','qJKQg':'[\x27name\x27,\x20\x27nama\x27,\x20\x27code\x27,\x20\x27kode\x27,\x20\x27all\x27]','QNtiI':function(_0xbdcac0,_0x15a494){return _0xbdcac0(_0x15a494);},'TLYjQ':'viewQuery','UUXpt':'\x20+\x20\x27','DeBmF':function(_0x5d6df1,_0x4f9e44){return _0x5d6df1+_0x4f9e44;},'QKBkI':function(_0x2ce812,_0x1aff75){return _0x2ce812(_0x1aff75);}};assertNoFileReferenceLeftover(_0x34a71c);const _0x139f54=FileUtils[_0x235892(0xf2)](_0x2273e3),_0xf9e790=new Date()[_0x235892(0x192)]()[_0x235892(0x114)]('T','\x20')[_0x235892(0x114)](/\.\d{3}Z$/,''),_0x4edf8e=buildValidFieldsString(_0x34a71c),_0x1fdb9f=buildSearchColumnsCode(_0x34a71c),_0x471f11=_0x44dfd9[_0x235892(0x218)](buildFiltersCode,_0x34a71c),_0x31a8dc=buildLookupOverrideCode(_0x2273e3,_0x34a71c),_0x5f3de5=buildAdvancedQuerySection(_0x34a71c),_0xd4b75e=_0x44dfd9['LDRft'](buildFieldMappingCode,_0x34a71c),_0x4618b0=buildAuditColumnsSection(_0x34a71c,_0x44dfd9['ibLDb']),_0x11058d=_0x44dfd9['LDRft'](buildFormatResponseDataBody,_0x34a71c),_0x49f4b5=isSoftDeleteEnabled(_0x34a71c)?_0x235892(0x1cd)+JSON[_0x235892(0x24a)](SOFT_DELETE_COLUMNS)+')\x20delete\x20__r[__sdCol];\x20return\x20__r;\x20})':_0x235892(0x1c9),_0x42c23c=_0x34a71c[_0x235892(0x2a1)]&&_0x34a71c['defaultScope'][_0x235892(0xe5)]?buildDefaultScopeSQL(_0x34a71c['defaultScope']['read'],''):'',_0x38d61e=((()=>{const _0x55a12c=_0x235892,_0x2bee67=softDeleteVisibilityFilter(_0x34a71c);return _0x2bee67!==null?'\x20WHERE\x20'+IS_DELETED_COLUMN+_0x55a12c(0x24c)+_0x2bee67:'';})()),_0x36dbf5=_0x34a71c[_0x235892(0x219)]||_0x34a71c[_0x235892(0x13a)],_0x56e47a=_0x34a71c[_0x235892(0x13a)];return'const\x20BaseModel\x20=\x20require(\x27@restforgejs/platform/src/models/base-model\x27);\x0aconst\x20db\x20=\x20require(\x27@restforgejs/platform/src/utils/db\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a//\x20AdvancedFilterHelper\x20dihapus\x20—\x20semua\x20filtering\x20ditangani\x20oleh\x20buildObjectFilterClause\x20dan\x20buildComplexWhereClause\x0a\x0a/**\x0a\x20*\x20'+_0x139f54+'\x20Model\x20-\x20Auto-generated\x20on\x20'+_0xf9e790+'\x0a\x20*\x0a\x20*\x20Model\x20untuk\x20'+_0x2273e3+_0x235892(0x19f)+_0x34a71c['tableName']+(_0x34a71c['viewName']?_0x235892(0x297)+_0x34a71c['viewName']:'')+'\x0a\x20*\x20Fields:\x20'+(_0x34a71c[_0x235892(0x1e1)]?_0x34a71c['fieldName']['length']:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0aclass\x20'+_0x139f54+'Model\x20extends\x20BaseModel\x20{\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Constructor\x0a\x20\x20\x20*/\x0a\x20\x20constructor()\x20{\x0a\x20\x20\x20\x20//\x20Definisikan\x20validFields\x20-\x20semua\x20field\x20yang\x20valid\x20untuk\x20tabel\x20'+_0x2273e3+_0x235892(0x247)+_0x4edf8e+'\x0a\x20\x20\x20\x20];\x0a\x0a\x20\x20\x20\x20//\x20Definisikan\x20datatablesWhere\x20sesuai\x20payload\x0a\x20\x20\x20\x20const\x20datatablesWhere\x20=\x20'+(_0x34a71c['datatablesWhere']?JSON[_0x235892(0x24a)](_0x34a71c['datatablesWhere']):_0x44dfd9[_0x235892(0x208)])+_0x235892(0x14b)+_0x34a71c[_0x235892(0x13a)]+'\x27,\x20validFields,\x20datatablesWhere);\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20primary\x20key\x20dari\x20payload\x20atau\x20fallback\x20ke\x20fieldName\x20pertama\x0a\x20\x20\x20\x20this.primaryKey\x20=\x20\x27'+(_0x34a71c[_0x235892(0x10a)]||_0x34a71c[_0x235892(0x1e1)]&&_0x34a71c['fieldName'][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20viewName\x20untuk\x20operasi\x20read\x20jika\x20berbeda\x20dari\x20tableName\x0a\x20\x20\x20\x20this.viewName\x20=\x20\x27'+_0x36dbf5+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x36dbf5+'\x27;\x20//\x20Source\x20untuk\x20operasi\x20read\x20(get,\x20list,\x20lookup,\x20datatables)\x0a\x20\x20\x20\x20this.writeSource\x20=\x20\x27'+_0x56e47a+_0x235892(0x283)+_0x4618b0+_0x235892(0x276)+!!_0x34a71c['viewQuery']+';\x0a\x20\x20\x20\x20this.hasExportQuery\x20=\x20'+!!_0x34a71c[_0x235892(0x187)]+_0x235892(0x21f)+(_0x34a71c['dateTimeFields']&&Object['keys'](_0x34a71c['dateTimeFields'])['length']>0x0?'\x0a\x20\x20\x20\x20//\x20DateTime\x20fields\x20configuration\x0a\x20\x20\x20\x20this.dateTimeFields\x20=\x20'+JSON[_0x235892(0x24a)](_0x34a71c[_0x235892(0x14c)],null,0x6)+_0x235892(0x1e4):'')+(_0x34a71c[_0x235892(0x2a0)]&&_0x34a71c['uploadConfig']['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON[_0x235892(0x24a)](Object['keys'](_0x34a71c[_0x235892(0x2a0)][_0x235892(0x18e)]))+_0x235892(0x1e4):'')+'\x0a'+_0x44dfd9['QNtiI'](_generateValidationConfig,_0x34a71c[_0x235892(0x1eb)])+_0x235892(0x29f)+_0x2273e3+_0x235892(0x177)+_0x58121d+_0x235892(0x222)+_0x34a71c['tableName']+_0x235892(0xe0)+_0x36dbf5+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldCount:\x20'+(_0x34a71c['fieldName']?_0x34a71c['fieldName']['length']:0x0)+_0x235892(0x286)+_0xf9e790+'\x27,\x0a\x20\x20\x20\x20\x20\x20features:\x20'+JSON['stringify'](_0x34a71c[_0x235892(0xf1)]?.['features']||[])+_0x235892(0x131)+_0x5f3de5+'\x0a\x0a\x20\x20\x20\x20return\x20templates;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getListQuery\x20untuk\x20menyesuaikan\x20dengan\x20kebutuhan\x20'+_0x2273e3+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20'+_0x2273e3+'\x0a\x20\x20\x20*/\x0a\x20\x20getListQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Load\x20query\x20dasar\x20dengan\x20placeholder\x20replacement\x0a\x20\x20\x20\x20'+buildQueryLoadingCode(_0x34a71c[_0x235892(0x19d)],'datatablesQuery')+_0x235892(0x191)+(_0x34a71c['viewQuery']?'\x20\x20\x20\x20//\x20Priority\x202:\x20viewQuery\x20(virtual\x20view\x20dari\x20payload)\x0a\x20\x20\x20\x20'+buildQueryLoadingCode(_0x34a71c['viewQuery'],_0x44dfd9['TLYjQ'])+_0x235892(0x1a3):_0x235892(0x122))+_0x235892(0x156)+_0x38d61e+_0x235892(0x14e)+(_0x38d61e?_0x44dfd9[_0x235892(0x198)]+_0x38d61e+'\x27':'')+_0x235892(0xec)+(_0x42c23c?'WHERE\x20'+_0x42c23c:'')+_0x235892(0x217)+(_0x42c23c?_0x235892(0xde):_0x235892(0x142))+'\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20\x20\x20let\x20whereParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(where\x20&&\x20(Array.isArray(where)\x20||\x20(where.conditions\x20&&\x20Array.isArray(where.conditions))))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20whereResult\x20=\x20this.buildComplexWhereClause(where,\x20params,\x20paramIndex);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereResult.sql)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20+=\x20\x27\x20AND\x20(\x27\x20+\x20whereResult.sql\x20+\x20\x27)\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20\x27WHERE\x20\x27\x20+\x20whereResult.sql;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereParams\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x204.\x20Menghitung\x20total\x20data\x20keseluruhan\x20(tanpa\x20filter)\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query'+_0x38d61e+'\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource'+(_0x38d61e?_0x44dfd9['DeBmF']('\x20+\x20\x27',_0x38d61e)+'\x27':'')+_0x235892(0x1ca)+_0x49f4b5+_0x235892(0x137)+_0x1fdb9f+'\x0a\x0a'+_0x471f11+'\x0a\x0a'+_0x31a8dc+'\x0a\x0a'+_0xd4b75e+_0x235892(0x259)+_0x2273e3+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20dari\x20database\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Data\x20yang\x20sudah\x20diformat\x20untuk\x20response\x20'+_0x2273e3+'\x0a\x20\x20\x20*/\x0a\x20\x20formatResponseData(data)\x20{\x0a'+_0x11058d+'\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Execute\x20advanced\x20query\x20berdasarkan\x20nama\x0a\x20\x20\x20*\x20@param\x20{string}\x20queryName\x20-\x20Nama\x20query\x20dari\x20advancedQueryTemplates\x0a\x20\x20\x20*\x20@param\x20{Object}\x20params\x20-\x20Parameter\x20untuk\x20query\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Hasil\x20query\x0a\x20\x20\x20*/\x0a\x20\x20async\x20executeAdvancedQuery(queryName,\x20params\x20=\x20{})\x20{\x0a\x20\x20\x20\x20if\x20(!this.advancedQueryTemplates[queryName])\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Advanced\x20query\x20\x27${queryName}\x27\x20not\x20found.\x20Available\x20queries:\x20${Object.keys(this.advancedQueryTemplates).join(\x27,\x20\x27)}`);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20this.advancedQueryTemplates[queryName];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20placeholders\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${tableName}/g,\x20this.table);\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${this.table}/g,\x20this.table);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20parameter\x20placeholders\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(params))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20placeholder\x20=\x20new\x20RegExp(`\x5c$\x5c{params\x5c\x5c.${key}\x5c}`,\x20\x27g\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(placeholder,\x20value);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Executing\x20advanced\x20query\x20\x27${queryName}\x27:\x20${query}`);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20await\x20db.executeQuery(query);\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20executing\x20advanced\x20query\x20\x27${queryName}\x27:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20data\x20before\x20insert/update\x20operations\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20yang\x20akan\x20divalidasi\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20Operasi\x20(insert/update)\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Validation\x20result\x0a\x20\x20\x20*/\x0a\x20\x20async\x20validateData(data,\x20operation\x20=\x20\x27insert\x27)\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20isValid:\x20true,\x0a\x20\x20\x20\x20\x20\x20errors:\x20[],\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitizedData:\x20{}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20we\x20have\x20fieldValidation\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20hasFieldValidation\x20=\x20this.validationConfig\x20&&\x20Object.keys(this.validationConfig).length\x20>\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(hasFieldValidation)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Loop\x20semua\x20field\x20yang\x20ada\x20di\x20validationConfig\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20fieldName\x20in\x20this.validationConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20value\x20=\x20data[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20value\x20jika\x20autoGenerate\x20dan\x20nilai\x20kosong.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20dan\x20uuid\x20diperlakukan\x20sama:\x20UUID\x20v7\x20via\x20uuid\x20package\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20(konsisten\x20lintas\x20dialect;\x20cocok\x20dengan\x20konvensi\x20payload\x20category.json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20yang\x20memakai\x20type:\x20\x22string\x22\x20dengan\x20constraint\x20autoGenerate\x20+\x20primaryKey).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20constraints.autoGenerate\x20&&\x20(!value\x20||\x20value\x20===\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(config.type\x20===\x20\x27uuid\x27\x20||\x20config.type\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27timestamp\x27\x20||\x20config.type\x20===\x20\x27datetime\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27date\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString().split(\x27T\x27)[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20per-field\x20dengan\x20constraints\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fieldResult\x20=\x20await\x20this.validateFieldConstraints(fieldName,\x20value,\x20operation);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20errors\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!fieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...fieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20warnings\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.warnings\x20&&\x20fieldResult.warnings.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.warnings.push(...fieldResult.warnings);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Set\x20sanitized\x20value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.sanitized\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20fieldResult.sanitized;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20field\x20yang\x20tidak\x20ada\x20di\x20validationConfig\x20(backward\x20compatibility)\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.validationConfig[field]\x20&&\x20data[field]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback\x20ke\x20generic\x20sanitization\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20data[field]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cross-field\x20validation\x20(contoh:\x20before/after\x20date)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(result.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20crossFieldResult\x20=\x20await\x20this._validateCrossFieldConstraints(result.sanitizedData,\x20operation);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!crossFieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...crossFieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20Tidak\x20ada\x20fieldValidation\x20-\x20gunakan\x20generic\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20data[field];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Required\x20field\x20validation\x20untuk\x20insert\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20(field\x20===\x20\x27id\x27\x20||\x20field\x20===\x20\x27name\x27\x20||\x20field\x20===\x20\x27nama\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field\x20!==\x20\x27id\x27)\x20{\x20//\x20ID\x20bisa\x20auto-generated\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(`Field\x20\x27${field}\x27\x20is\x20required\x20for\x20${operation}\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Sanitize\x20dan\x20validate\x20value\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Generic\x20email\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.email\x20&&\x20!/^[^\x5cs@]+@[^\x5cs@]+\x5c.[^\x5cs@]+$/.test(data.email))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(\x27Invalid\x20email\x20format\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20result.errors.push(`Validation\x20error:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Sanitize\x20field\x20value\x20berdasarkan\x20tipe\x20field\x20(generic\x20fallback)\x0a\x20\x20\x20*\x20@param\x20{string}\x20fieldName\x20-\x20Nama\x20field\x0a\x20\x20\x20*\x20@param\x20{*}\x20value\x20-\x20Nilai\x20field\x0a\x20\x20\x20*\x20@returns\x20{*}\x20Sanitized\x20value\x0a\x20\x20\x20*/\x0a\x20\x20sanitizeFieldValue(fieldName,\x20value)\x20{\x0a\x20\x20\x20\x20if\x20(typeof\x20value\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Trim\x20whitespace\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.trim();\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Escape\x20special\x20characters\x20untuk\x20mencegah\x20injection\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.replace(/[<>]/g,\x20\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Truncate\x20jika\x20terlalu\x20panjang\x0a\x20\x20\x20\x20\x20\x20if\x20(value.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20value.substring(0,\x20255);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20value;\x0a\x20\x20}\x0a'+_generateValidateFieldConstraints()+'\x0a\x20\x20'+generateCompositeMethods(_0x34a71c)+_0x44dfd9['QKBkI'](generateDeleteMethod,_0x34a71c)+_0x44dfd9['PRYMp'](generateRestoreMethod,_0x34a71c)+_0x44dfd9[_0x235892(0x14a)](generateSoftDeleteFkParentsCheck,_0x34a71c)+'\x0a}\x0a\x0a//\x20Export\x20singleton\x20instance\x0amodule.exports\x20=\x20new\x20'+_0x139f54+'Model();';}function getEnabledActions(_0x4889ea){const _0x117095=a0_0x3751,_0x5bf035={'MiYcd':function(_0x5854a2,_0x531ac1){return _0x5854a2!==_0x531ac1;},'LMNpE':_0x117095(0x1e6)};if(!_0x4889ea[_0x117095(0x123)]||_0x5bf035['MiYcd'](typeof _0x4889ea[_0x117095(0x123)],_0x5bf035['LMNpE']))return[];return Object['entries'](_0x4889ea['action'])['filter'](([,_0x1a4ea1])=>_0x1a4ea1)[_0x117095(0x23f)](([_0x47dd0d])=>_0x47dd0d);}function buildEndpointFunctions(_0x46fa9b,_0x4df704,_0x1f098d,_0xb3cb5d,_0x3bfe18,_0x3b5210=null,_0x1bf918=![]){const _0x118a79=a0_0x3751,_0x48ca6d={'CXSHB':function(_0x3bb54b,_0x55f7f6,_0x295961,_0x15d12d,_0x2af000,_0x66a623){return _0x3bb54b(_0x55f7f6,_0x295961,_0x15d12d,_0x2af000,_0x66a623);},'xPxls':function(_0xd4eb98,_0x45c6fc,_0x379071,_0x58c416,_0x266b5f){return _0xd4eb98(_0x45c6fc,_0x379071,_0x58c416,_0x266b5f);},'MTwYl':function(_0x5587c0,_0x913d43,_0x39f49a,_0x530d66,_0x47fceb,_0x4b359f,_0x1c136c){return _0x5587c0(_0x913d43,_0x39f49a,_0x530d66,_0x47fceb,_0x4b359f,_0x1c136c);},'aetSE':function(_0x3567a7,_0x503afa,_0x5cf046,_0x4c3732,_0x5af065,_0x1c1281,_0x55b635){return _0x3567a7(_0x503afa,_0x5cf046,_0x4c3732,_0x5af065,_0x1c1281,_0x55b635);},'dyMRW':function(_0x586082,_0x3cfedb,_0x45ecc2,_0xd93523,_0x2e6278){return _0x586082(_0x3cfedb,_0x45ecc2,_0xd93523,_0x2e6278);},'lNkCH':function(_0x5308e6,_0x232223,_0x6563bd,_0x1ed8c5,_0x14b5f7){return _0x5308e6(_0x232223,_0x6563bd,_0x1ed8c5,_0x14b5f7);},'cAUCf':function(_0x2737e5,_0x3b8e09){return _0x2737e5===_0x3b8e09;}},_0x22069d=_0x1f098d[_0x118a79(0x123)]||{},_0x33c55c=getEnabledActions(_0x1f098d);let _0x56ad37='';if(!_0x3b5210){const _0x5134af=FileUtils['toCamelCase'](_0x4df704);_0x3b5210=_0x5134af+_0x118a79(0x171);}return _0x22069d['datatables']&&(_0x56ad37+=generateDatatablesFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d[_0x118a79(0x130)]&&(_0x56ad37+=generateCreateFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210,_0x1bf918)),_0x22069d[_0x118a79(0x140)]&&(_0x56ad37+=_0x48ca6d['CXSHB'](generateUpdateFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210,_0x1bf918)),_0x22069d[_0x118a79(0x277)]&&(_0x56ad37+=generateAdjustFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d[_0x118a79(0x11a)]&&(_0x56ad37+=generateAggregateFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d['delete']&&(_0x56ad37+=generateDeleteFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210,_0x1bf918)),_0x22069d['restore']&&isSoftDeleteEnabled(_0x1f098d)&&(_0x56ad37+=_0x48ca6d['xPxls'](generateRestoreFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d['first']&&(_0x56ad37+=_0x48ca6d['MTwYl'](generateFirstFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0xb3cb5d,_0x3bfe18,_0x3b5210)),_0x22069d[_0x118a79(0x109)]&&(_0x56ad37+=_0x48ca6d['aetSE'](generateLookupFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0xb3cb5d,_0x3bfe18,_0x3b5210)),_0x22069d[_0x118a79(0xe5)]&&(_0x56ad37+=_0x48ca6d[_0x118a79(0x1da)](generateReadFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d['createComposite']&&(_0x56ad37+=generateCreateCompositeFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d[_0x118a79(0x237)]&&(_0x56ad37+=generateUpdateCompositeFunction(_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d['readComposite']&&(_0x56ad37+=_0x48ca6d[_0x118a79(0x1d9)](generateReadCompositeFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x22069d[_0x118a79(0x116)]&&(_0x56ad37+=_0x48ca6d[_0x118a79(0x11b)](generateWorkflowFunction,_0x46fa9b,_0x4df704,_0x1f098d,_0x3b5210)),_0x48ca6d['cAUCf'](_0x33c55c[_0x118a79(0x185)],0x0)&&(_0x56ad37+=_0x118a79(0xfb)),_0x56ad37;}function generateDatatablesFunction(_0x8f07db,_0x2e9860,_0x371cbd,_0x59dacd=null){const _0x4424f5=a0_0x3751;if(!_0x59dacd){const _0x50ccdf=FileUtils[_0x4424f5(0x1ea)](_0x2e9860);_0x59dacd=_0x50ccdf+_0x4424f5(0x171);}return'\x0a//\x20POST\x20/api/'+_0x8f07db+'/'+_0x2e9860+_0x4424f5(0xe3)+_0x2e9860+'/datatables:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Extract\x20parameters\x20dari\x20request\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20req.body.search?.value\x20||\x20req.body.searchValue\x20||\x20req.body.search_value\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20req.body.searchBy\x20||\x20req.body.search_by\x20||\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20perPage:\x20parseInt(req.body.length\x20||\x20req.body.pagination?.perpage\x20||\x2010,\x2010),\x0a\x20\x20\x20\x20\x20\x20start:\x20parseInt(req.body.start\x20||\x200,\x2010),\x0a\x20\x20\x20\x20\x20\x20draw:\x20req.body.draw\x20||\x20\x271\x27\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20options.sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Pass\x20format\x20DataTables\x20parameters\x20jika\x20ada\x20(fallback)\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][column]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20=\x20req.body[\x27order[0][column]\x27];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][dir]\x27]\x20=\x20req.body[\x27order[0][dir]\x27];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20dalam\x20format\x20filters\x20object\x0a\x20\x20\x20\x20if\x20(req.body.filters\x20&&\x20typeof\x20req.body.filters\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Filter\x20out\x20values\x20that\x20should\x20be\x20ignored\x20(\x22all\x22,\x20\x22-\x22,\x20\x22\x22,\x20null,\x20undefined)\x0a\x20\x20\x20\x20\x20\x20const\x20filteredFilters\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20Object.keys(req.body.filters).forEach(key\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20req.body.filters[key];\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ignore\x20filter\x20if\x20value\x20is\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20string,\x20null,\x20or\x20undefined\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20\x22all\x22\x20&&\x20value\x20!==\x20\x22-\x22\x20&&\x20value\x20!==\x20\x22\x22\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20filteredFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Only\x20set\x20filters\x20if\x20there\x20are\x20valid\x20filters\x20remaining\x0a\x20\x20\x20\x20\x20\x20if\x20(Object.keys(filteredFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.filters\x20=\x20filteredFilters;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20filters\x20(ignoring\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20values):\x27,\x20JSON.stringify(filteredFilters,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27All\x20filters\x20ignored\x20due\x20to\x20\x22all\x22,\x20\x22-\x22,\x20or\x20empty\x20values\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x20(mendukung\x20format\x20array\x20legacy\x20dan\x20format\x20object\x20baru)\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20where\x20conditions:\x27,\x20JSON.stringify(req.body.where,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Invalid\x20where\x20format,\x20ignoring\x20where\x20parameter\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20parameters\x0a\x20\x20\x20\x20if\x20(options.perPage\x20>\x201000)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x201000;\x20//\x20Limit\x20untuk\x20mencegah\x20overload\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(options.perPage\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x2010;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x59dacd+'.getDatatables(options);\x0a\x0a\x20\x20\x20\x20//\x20Menambahkan\x20nomor\x20baris\x20untuk\x20DataTables\x20jika\x20diperlukan\x0a\x20\x20\x20\x20if\x20(result.data\x20&&\x20Array.isArray(result.data))\x20{\x0a\x20\x20\x20\x20\x20\x20result.data\x20=\x20result.data.map((item,\x20index)\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20...item,\x0a\x20\x20\x20\x20\x20\x20\x20\x20rownumerator:\x20options.start\x20+\x20index\x20+\x201\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x2e9860+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20options:\x20options,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json(result);\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x2e9860+'\x20datatables:\x27,\x20error);\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x2e9860+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateCreateFunction(_0x234373,_0x28493f,_0x541f73,_0x22d990=null,_0x2eed8f=![]){const _0x5814f6=a0_0x3751,_0x444f82={'vAcPJ':function(_0x3ef722,_0x3f3d38){return _0x3ef722(_0x3f3d38);},'TncEd':function(_0x3e1bc3,_0x183af1){return _0x3e1bc3(_0x183af1);}};if(!_0x22d990){const _0x43dabb=FileUtils['toCamelCase'](_0x28493f);_0x22d990=_0x43dabb+'Model';}const _0x286c92=_0x444f82['vAcPJ'](isSoftDeleteEnabled,_0x541f73)?_0x5814f6(0x24d)+JSON[_0x5814f6(0x24a)](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x18cdb2=_0x444f82['TncEd'](hasSoftDeleteFkParents,_0x541f73)?_0x5814f6(0xdc)+_0x22d990+_0x5814f6(0x19e):'',_0x316a06=hasSoftDeleteFkParents(_0x541f73)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x3d2529=_0x2eed8f?_0x5814f6(0x281)+_0x234373+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x28493f+_0x5814f6(0x1d2)+(_0x541f73[_0x5814f6(0x10a)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x541f73['tableName']+_0x5814f6(0x13d):'',_0x5851f4=_0x2eed8f?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'\x0a\x20\x20\x20\x20//\x20Get\x20correlation\x20ID\x20from\x20header\x20(optional)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20null;\x0a';return'\x0a//\x20POST\x20/api/'+_0x234373+'/'+_0x28493f+'/create\x20-\x20Menambahkan\x20data\x20'+_0x28493f+_0x5814f6(0x1ad)+_0x28493f+_0x5814f6(0x1c3)+_0x5851f4+'\x0a\x20\x20\x20\x20//\x20Validasi\x20data\x20dengan\x20model\x20jika\x20tersedia\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x22d990+_0x5814f6(0x266)+_0x22d990+'.validateData(req.body,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20sanitized\x20data\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}'+_0x286c92+'\x0a'+_0x18cdb2+'\x0a\x20\x20\x20\x20//\x20Event\x20lifecycle\x20variables\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x541f73[_0x5814f6(0x13a)]+_0x5814f6(0x106)+_0x22d990+'.addData(req.body,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20mode\x20lama\x20tanpa\x20events\x20(tetap\x20propagasi\x20requestId\x20untuk\x20Live\x20Sync)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x22d990+'.addData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20INSERT\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x28493f+'\x20data\x20added\x20successfully:\x20${responseData.'+(_0x541f73[_0x5814f6(0x10a)]||'id')+'\x20||\x20\x27new\x20record\x27}`);\x0a'+_0x3d2529+_0x5814f6(0x1cb)+_0x28493f+'\x20data\x20successfully\x20added\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menambahkan\x20data\x20'+_0x28493f+':\x27,\x20error);\x0a'+_0x316a06+'\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20error\x20types\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x20//\x20PostgreSQL\x20unique\x20violation\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x20//\x20PostgreSQL\x20foreign\x20key\x20violation\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20adding\x20'+_0x28493f+_0x5814f6(0x176);}function generateUpdateFunction(_0x16aaa2,_0x35cf88,_0x86bc54,_0x25b58f=null,_0x4bf4cb=![]){const _0x51ad09=a0_0x3751,_0x4c368b={'JVhJg':function(_0x218823,_0x2d3f19){return _0x218823(_0x2d3f19);}};if(!_0x25b58f){const _0x597298=FileUtils[_0x51ad09(0x1ea)](_0x35cf88);_0x25b58f=_0x597298+'Model';}const _0x37a14b=_0x86bc54[_0x51ad09(0x1cf)]?',\x20'+JSON['stringify'](_0x86bc54[_0x51ad09(0x1cf)]):'',_0x2deca9=_0x86bc54['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x25b58f+_0x51ad09(0x21c)+_0x35cf88+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x25ed28=_0x4c368b['JVhJg'](softDeleteVisibilityFilter,_0x86bc54),_0x25f61e=_0x25ed28!==null?'\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20__sdCheck\x20=\x20await\x20'+_0x25b58f+_0x51ad09(0x14f)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x25ed28+_0x51ad09(0x264)+_0x35cf88+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}':'',_0x3fb69e=isSoftDeleteEnabled(_0x86bc54)?_0x51ad09(0x24d)+JSON['stringify'](SOFT_DELETE_COLUMNS)+_0x51ad09(0x274):'',_0xd68c0d=_0x4c368b[_0x51ad09(0x268)](hasSoftDeleteFkParents,_0x86bc54)?_0x51ad09(0x11d)+_0x25b58f+'.checkSoftDeleteFkParents(req.body,\x20\x27update\x27);\x0a':'',_0x1c0d88=hasSoftDeleteFkParents(_0x86bc54)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x4a1967=_0x4bf4cb?_0x51ad09(0x13c)+_0x16aaa2+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x35cf88+_0x51ad09(0xea)+(_0x86bc54['primaryKey']||'id')+_0x51ad09(0x1d6)+_0x86bc54['tableName']+_0x51ad09(0x13d):'',_0x58ca9b=_0x4bf4cb?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x51ad09(0x252);return'\x0a//\x20POST\x20/api/'+_0x16aaa2+'/'+_0x35cf88+'/update\x20-\x20Mengupdate\x20data\x20'+_0x35cf88+'\x0arouter.post(\x27/update\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x35cf88+'/update:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x58ca9b+_0x51ad09(0x103)+(_0x86bc54['primaryKey']||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x2deca9+_0x25f61e+_0x51ad09(0x139)+_0x25b58f+_0x51ad09(0x266)+_0x25b58f+_0x51ad09(0x164)+_0x3fb69e+'\x0a'+_0xd68c0d+_0x51ad09(0x1df)+_0x86bc54['tableName']+_0x51ad09(0x106)+_0x25b58f+'.updateData(req.body,\x20eventContext'+_0x37a14b+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20mode\x20lama\x20tanpa\x20events\x20(tetap\x20propagasi\x20requestId\x20untuk\x20Live\x20Sync)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x25b58f+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0x37a14b+_0x51ad09(0x213)+_0x35cf88+'\x20data\x20updated\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a'+_0x4a1967+'\x0a\x20\x20\x20\x20//\x20Kirim\x20response\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x35cf88+'\x20data\x20successfully\x20updated\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mengupdate\x20data\x20'+_0x35cf88+':\x27,\x20error);\x0a'+_0x1c0d88+_0x51ad09(0x199)+_0x35cf88+_0x51ad09(0x26b)+_0x35cf88+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateAdjustFunction(_0xc2ab05,_0x9d9e99,_0x316a05,_0xfa864e=null){const _0x36d776=a0_0x3751;if(!_0xfa864e){const _0xa4496d=FileUtils[_0x36d776(0x1ea)](_0x9d9e99);_0xfa864e=_0xa4496d+_0x36d776(0x171);}const _0x4e5b89=_0x316a05[_0x36d776(0x212)]?JSON[_0x36d776(0x24a)](_0x316a05['adjustConfig']):'{}',_0x577941=_0x316a05['fieldPolicy']?',\x20'+JSON['stringify'](_0x316a05['fieldPolicy']):'',_0x5cef1d=_0x316a05[_0x36d776(0x1cf)]?',\x20null,\x20'+JSON[_0x36d776(0x24a)](_0x316a05['fieldPolicy']):'',_0x146603=_0x316a05['requestScope']?_0x36d776(0x202)+_0xfa864e+_0x36d776(0x21c)+_0x9d9e99+_0x36d776(0x285):'';return'\x0a//\x20POST\x20/api/'+_0xc2ab05+'/'+_0x9d9e99+'/adjust\x20-\x20Adjust\x20data\x20'+_0x9d9e99+'\x20(atomic\x20increment/decrement)\x0arouter.post(\x27/adjust\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x316a05['primaryKey']||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20adjust`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20adjustments\x20array\x0a\x20\x20\x20\x20if\x20(!req.body.adjustments\x20||\x20!Array.isArray(req.body.adjustments)\x20||\x20req.body.adjustments.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27adjustments\x20array\x20is\x20required\x20and\x20must\x20not\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x146603+'\x0a\x20\x20\x20\x20const\x20adjustConfig\x20=\x20'+_0x4e5b89+';\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x316a05[_0x36d776(0x13a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0xfa864e+_0x36d776(0x25e)+_0x577941+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0xfa864e+_0x36d776(0x1a8)+_0x5cef1d+_0x36d776(0x1dd)+_0x9d9e99+'\x20data\x20adjusted\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x9d9e99+_0x36d776(0x210)+_0x9d9e99+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20403)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Pro\x20Feature\x20Required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20upgrade:\x20\x27https://restforge.dev/pricing\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27constraint\x20violation\x27)\x20||\x20error.message.includes(\x27below\x20minimum\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Constraint\x20violation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27not\x20configured\x20for\x20adjustment\x27)\x20||\x20error.message.includes(\x27is\x20required\x20for\x20adjust\x27)\x20||\x20error.message.includes(\x27must\x20be\x20a\x20non-zero\x20number\x27)\x20||\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x20error.message.includes(\x27must\x20not\x20be\x20empty\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x9d9e99+_0x36d776(0x150)+_0x9d9e99+_0x36d776(0x176);}function generateAggregateFunction(_0x22f91c,_0x10537f,_0x5e495f,_0x34f3e9=null){const _0x26046d=a0_0x3751;if(!_0x34f3e9){const _0x4bb702=FileUtils[_0x26046d(0x1ea)](_0x10537f);_0x34f3e9=_0x4bb702+'Model';}const _0x4e680d=_0x5e495f[_0x26046d(0x18a)]?JSON[_0x26046d(0x24a)](_0x5e495f['aggregateConfig']):'{}';return _0x26046d(0x1b2)+_0x22f91c+'/'+_0x10537f+'/aggregate\x20-\x20Aggregate\x20data\x20(count,\x20sum,\x20avg,\x20min,\x20max)\x0arouter.post(\x27/aggregate\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20aggregateConfig\x20=\x20'+_0x4e680d+_0x26046d(0x1b1)+_0x34f3e9+_0x26046d(0x25c)+_0x10537f+_0x26046d(0x22d)+_0x10537f+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function hasSoftDeleteFkRestrictChildren(_0x218269){const _0x57496d=a0_0x3751;return Array[_0x57496d(0x25a)](_0x218269['softDeleteFkChildren'])&&_0x218269['softDeleteFkChildren'][_0x57496d(0x104)](_0x5604b2=>_0x5604b2&&_0x5604b2[_0x57496d(0xd4)]==='restrict');}function hasCascadeChildren(_0x3470b5){const _0x16092e=a0_0x3751,_0x5c5b7b={'LIKLt':function(_0x28a0c9,_0x4f1caa){return _0x28a0c9===_0x4f1caa;},'CAvjS':_0x16092e(0x1e6),'ytEci':function(_0xdbbc2a,_0x19ca0a){return _0xdbbc2a===_0x19ca0a;},'BipEI':_0x16092e(0x265)},_0x3a58ff=_0x3470b5&&_0x3470b5['softDeleteCascadeTree'];return!!(_0x3a58ff&&_0x5c5b7b['LIKLt'](typeof _0x3a58ff,_0x5c5b7b['CAvjS'])&&_0x5c5b7b['ytEci'](typeof _0x3a58ff[_0x16092e(0x299)],_0x5c5b7b['BipEI'])&&_0x3a58ff[_0x16092e(0x299)]&&_0x3a58ff[_0x16092e(0x2a4)]&&typeof _0x3a58ff[_0x16092e(0x2a4)]==='object'&&_0x3a58ff[_0x16092e(0x2a4)][_0x3a58ff['master']]);}function generateDeleteFunction(_0x1f9fc8,_0x42d09d,_0xa1132a,_0x1e8593=null,_0xa096c8=![]){const _0x463520=a0_0x3751,_0x3570b7={'zcFny':function(_0x29875a,_0x29ffce){return _0x29875a(_0x29ffce);}};if(!_0x1e8593){const _0x2e639a=FileUtils[_0x463520(0x1ea)](_0x42d09d);_0x1e8593=_0x2e639a+'Model';}const _0x25f714=_0xa096c8?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20DELETE\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabledDelete\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabledDelete\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.delete)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishDelete(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x1f9fc8+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x42d09d+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0xa1132a[_0x463520(0x10a)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xa1132a['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0x3f95ad=_0xa096c8?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x463520(0x252);return _0x463520(0x1b2)+_0x1f9fc8+'/'+_0x42d09d+'/delete\x20-\x20Menghapus\x20data\x20'+_0x42d09d+_0x463520(0xdb)+_0x42d09d+_0x463520(0xee)+_0x3f95ad+_0x463520(0x17e)+_0x1e8593+_0x463520(0x193)+_0x42d09d+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Simpan\x20data\x20untuk\x20event\x20lifecycle\x20dan\x20debug\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData\x20=\x20existingData.data[0];\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(checkError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Verification\x20Failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Could\x20not\x20verify\x20data\x20existence\x20before\x20delete\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20checkError.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xa1132a['tableName']+_0x463520(0x106)+_0x1e8593+_0x463520(0x1e7)+_0x1e8593+'.deleteData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20DELETE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20DELETE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x42d09d+_0x463520(0x136)+_0x25f714+_0x463520(0x2ac)+_0x42d09d+_0x463520(0x11c)+(_0xa1132a['softDelete']?.[_0x463520(0x113)]?_0x463520(0x133)+_0x42d09d+'\x20data\x20not\x20found\x20or\x20already\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'')+(_0x3570b7['zcFny'](hasSoftDeleteFkRestrictChildren,_0xa1132a)||hasCascadeChildren(_0xa1132a)?'\x0a\x20\x20\x20\x20//\x20FK-SD-2\x20(restrict):\x20override\x20deleteData\x20melempar\x20statusCode\x20409\x20bila\x20master\x20masih\x0a\x20\x20\x20\x20//\x20direferensikan\x20anak\x20aktif\x20(anak\x20soft-delete)\x20atau\x20anak\x20apa\x20pun\x20(anak\x20non-soft-delete).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20409)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'')+_0x463520(0x10e)+_0x42d09d+_0x463520(0x176);}function generateRestoreFunction(_0x27e49e,_0x378497,_0x5ddddd,_0x2e946c=null){const _0x3c3c70=a0_0x3751;if(!_0x2e946c){const _0x27f07d=FileUtils[_0x3c3c70(0x1ea)](_0x378497);_0x2e946c=_0x27f07d+'Model';}return'\x0a//\x20POST\x20/api/'+_0x27e49e+'/'+_0x378497+'/restore\x20-\x20Memulihkan\x20data\x20'+_0x378497+_0x3c3c70(0xe7)+_0x5ddddd['tableName']+_0x3c3c70(0x1c7)+_0x2e946c+_0x3c3c70(0x1bd)+_0x378497+_0x3c3c70(0x23c)+_0x378497+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20R20:\x20restoreData\x20melempar\x20statusCode\x20untuk\x20kondisi\x20terkontrol.\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20404)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x378497+_0x3c3c70(0x214)+_0x378497+_0x3c3c70(0x176);}function generateFirstFunction(_0x393e4b,_0x50f154,_0x3f7996,_0x58365b,_0x555ce1,_0x4de0d4=null){const _0x486f13=a0_0x3751,_0x8ede5d={'fwdJz':function(_0x2e0a0a,_0x2ed238){return _0x2e0a0a!==_0x2ed238;}};if(!_0x4de0d4){const _0x51b2ff=FileUtils[_0x486f13(0x1ea)](_0x50f154);_0x4de0d4=_0x51b2ff+_0x486f13(0x171);}const _0x495046=_0x3f7996['requestScope']?_0x486f13(0x195)+_0x50f154+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x75aa69=softDeleteVisibilityFilter(_0x3f7996),_0xdaf8bc=_0x8ede5d[_0x486f13(0x141)](_0x75aa69,null)?'\x0a\x20\x20\x20\x20getPayload.where.push({\x20key:\x20\x27'+IS_DELETED_COLUMN+_0x486f13(0x27a)+_0x75aa69+'\x20});':'',_0xf8b45a=_0x75aa69!==null?_0x486f13(0x29c)+_0x50f154+_0x486f13(0x182):'';return'\x0a//\x20POST\x20/api/'+_0x393e4b+'/'+_0x50f154+'/first\x20-\x20Mendapatkan\x20data\x20'+_0x50f154+_0x486f13(0x2a2)+_0x50f154+'/first:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20->\x20object\x20(backward\x20compatible)\x0a\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x20-\x20harus\x20object\x20tunggal\x20{key,\x20value}\x0a\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x20as\x20{key,\x20value}\x20object\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+(_0x3f7996[_0x486f13(0x10a)]||'id')+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20dan\x20where.value\x0a\x20\x20\x20\x20if\x20(!req.body.where.key\x20||\x20req.body.where.value\x20===\x20undefined\x20||\x20req.body.where.value\x20===\x20null\x20||\x20req.body.where.value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20key\x20and\x20value\x20are\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+(_0x3f7996['primaryKey']||'id')+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Tolak\x20format\x20advanced\x20(conditions/logic)\x0a\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Advanced\x20where\x20format\x20is\x20not\x20supported\x20in\x20/first\x20endpoint.\x20Use\x20/read\x20endpoint\x20for\x20complex\x20queries\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20ada\x20di\x20validFields\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0x3f7996[_0x486f13(0x1e1)]||[])+_0x486f13(0x126)+_0xdaf8bc+'\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x4de0d4+'.getData(getPayload);'+_0xf8b45a+'\x0a'+_0x495046+_0x486f13(0x229)+_0x50f154+_0x486f13(0x26d)+_0x50f154+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x50f154+_0x486f13(0x176);}function generateLookupFunction(_0x2e7d4d,_0x12f394,_0x5dfba6,_0x44be81,_0x1b9f91,_0x1925f4=null){const _0x8eb6f8=a0_0x3751;if(!_0x1925f4){const _0x5c9513=FileUtils[_0x8eb6f8(0x1ea)](_0x12f394);_0x1925f4=_0x5c9513+_0x8eb6f8(0x171);}const _0x51ff3d=_0x5dfba6[_0x8eb6f8(0x14d)]||null;return'\x0a//\x20GET\x20/api/'+_0x2e7d4d+'/'+_0x12f394+_0x8eb6f8(0x167)+_0x12f394+_0x8eb6f8(0x21d)+_0x12f394+'\x20lookup\x20request:\x20search=${search},\x20filters=`,\x20extraFilters);\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20lookup\x20data\x20dengan\x20filters\x20tambahan\x0a\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1925f4+_0x8eb6f8(0x143)+_0x12f394+_0x8eb6f8(0x17f)+_0x12f394+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a//\x20POST\x20/api/'+_0x2e7d4d+'/'+_0x12f394+'/lookup\x20-\x20Mendapatkan\x20data\x20'+_0x12f394+'\x20untuk\x20lookup\x20dengan\x20filtering\x0arouter.post(\x27/lookup\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20X-Request-Mode\x20header\x0a\x20\x20\x20\x20const\x20requestMode\x20=\x20req.headers[\x27x-request-mode\x27];\x0a\x20\x20\x20\x20console.log(`X-Request-Mode\x20header\x20for\x20POST\x20lookup:\x20${requestMode}`);\x0a\x0a\x20\x20\x20\x20if\x20(requestMode\x20!==\x20\x27static\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Request\x20Mode\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27X-Request-Mode\x20header\x20must\x20be\x20set\x20to\x20static\x20for\x20POST\x20method\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20\x27Contoh\x20penggunaan:\x20Tambahkan\x20header\x20X-Request-Mode:\x20static\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Support\x20untuk\x20fieldNameLookup\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20lookupConfig\x20=\x20'+JSON[_0x8eb6f8(0x24a)](_0x51ff3d)+';\x0a\x20\x20\x20\x20\x20\x20const\x20defaultSelect\x20=\x20lookupConfig\x20&&\x20lookupConfig.hasCustomText\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20[\x22id\x22,\x20lookupConfig.textField]\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20[\x22id\x22,\x20\x22'+_0x1b9f91+_0x8eb6f8(0x12b)+(_0x44be81['all']?_0x44be81[_0x8eb6f8(0x289)][_0x8eb6f8(0x27f)](_0x208d53=>_0x208d53!=='id')||'code':'code')+_0x8eb6f8(0x186)+_0x1b9f91+_0x8eb6f8(0x1f5)+_0x1b9f91+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%Portal%\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0x1b9f91+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%system%\x22,\x20\x22sensitive\x22:\x20false\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+(_0x44be81[_0x8eb6f8(0x20c)]?_0x44be81['textFields']['slice'](0x0,0x4)['join']('\x22,\x20\x22'):_0x5dfba6[_0x8eb6f8(0x1e1)]['slice'](0x0,0x4)['join'](_0x8eb6f8(0x1f2)))+_0x8eb6f8(0x2a5)+_0x1b9f91+_0x8eb6f8(0xdf)+(_0x5dfba6['fieldName'][0x1]||_0x1b9f91)+_0x8eb6f8(0x13f)+_0x1b9f91+'\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22direction\x22:\x20\x22ASC\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x12f394+'/lookup:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20ada\x20where\x20clause\x20(format\x20baru)\x20atau\x20selected_tag\x20(format\x20lama)\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20baru\x20dengan\x20where\x20clause\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20new\x20format\x20with\x20where\x20clause\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+(_0x44be81['all']?_0x44be81[_0x8eb6f8(0x289)]['find'](_0x1b56c5=>_0x1b56c5!=='id')||_0x8eb6f8(0xf7):'code')+'\x22,\x20\x22value\x22:\x20\x22AP2506-01\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0x1b9f91+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example_advanced:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22logic\x22:\x20\x22OR\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22conditions\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0x1b9f91+_0x8eb6f8(0x22b)+_0x1b9f91+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%system%\x22,\x20\x22sensitive\x22:\x20false\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+(_0x44be81['textFields']?_0x44be81['textFields'][_0x8eb6f8(0x27e)](0x0,0x4)['join']('\x22,\x20\x22'):_0x5dfba6['fieldName']['slice'](0x0,0x4)[_0x8eb6f8(0x108)]('\x22,\x20\x22'))+_0x8eb6f8(0x26f)+JSON[_0x8eb6f8(0x24a)](_0x5dfba6['fieldName']||[])+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20setiap\x20field\x20dalam\x20select\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20req.body.select)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20untuk\x20field\x20\x27id\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field.toLowerCase()\x20===\x20\x27id\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20AS\x20(alias)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5cs+as\x5cs+\x5cw+$/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20operators/functions\x20(||,\x20CONCAT,\x20dll)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5c|\x5c||CONCAT|COALESCE|CASE|WHEN/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validasi\x20normal\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!validFields.includes(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20invalidFields.push(field);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20validFields:\x20validFields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sqlExpressionNote:\x20\x27SQL\x20expressions\x20dengan\x20operator\x20||\x20atau\x20AS\x20alias\x20diperbolehkan\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20method\x20getLookupDataWithFilter\x0a\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1925f4+'.getLookupDataWithFilter(req.body);\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Lookup\x20with\x20filter\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20lama\x20atau\x20request\x20tanpa\x20WHERE\x20clause\x20tetapi\x20dengan\x20SELECT\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20legacy\x20format\x20with\x20selected_tag\x20or\x20select-only\x20request\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20selectedTag\x20=\x20req.body.selected_tag\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(`'+_0x12f394+'\x20static\x20lookup\x20request\x20with\x20selected_tag:\x20${selectedTag}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Jika\x20ada\x20field\x20select\x20atau\x20sort_columns,\x20gunakan\x20getLookupDataWithFilter\x20dengan\x20body\x20yang\x20dimodifikasi\x0a\x20\x20\x20\x20\x20\x20if\x20((req.body.select\x20&&\x20Array.isArray(req.body.select))\x20||\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Found\x20select\x20fields\x20or\x20sort_columns,\x20using\x20getLookupDataWithFilter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Buat\x20body\x20baru\x20dengan\x20where\x20kosong\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20modifiedBody\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[]\x20//\x20Empty\x20where\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1925f4+'.getLookupDataWithFilter(modifiedBody);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Static\x20lookup\x20with\x20select/order\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectedTag:\x20selectedTag,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20query:\x20modifiedBody,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20dengan\x20method\x20lama\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1925f4+_0x8eb6f8(0x238)+_0x12f394+_0x8eb6f8(0x12f)+_0x12f394+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateReadFunction(_0x20f8e2,_0x128e2a,_0x244ab3,_0x1c98fb=null){const _0x59c9ea=a0_0x3751;if(!_0x1c98fb){const _0x49a64b=FileUtils['toCamelCase'](_0x128e2a);_0x1c98fb=_0x49a64b+_0x59c9ea(0x171);}return _0x59c9ea(0x1b2)+_0x20f8e2+'/'+_0x128e2a+'/read\x20-\x20Manual\x20pagination\x20endpoint\x0arouter.post(\x27/read\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x128e2a+'/read:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Deteksi\x20mode:\x20paginasi\x20(page\x20dikirim)\x20atau\x20non-paginasi\x20(page\x20tidak\x20dikirim)\x0a\x20\x20\x20\x20const\x20paginate\x20=\x20req.body.page\x20!==\x20undefined;\x0a\x20\x20\x20\x20const\x20page\x20=\x20paginate\x20?\x20parseInt(req.body.page,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20perPage\x20=\x20paginate\x20?\x20parseInt(req.body.per_page\x20||\x2010,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20limit\x20=\x20!paginate\x20?\x20Math.min(Math.max(parseInt(req.body.limit\x20||\x201000,\x2010),\x201),\x205000)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20searchValue\x20=\x20req.body.search_value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20const\x20searchBy\x20=\x20req.body.search_by\x20||\x20\x27'+(_0x244ab3[_0x59c9ea(0x10a)]||_0x244ab3[_0x59c9ea(0x1e1)][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20sort_columns\x0a\x20\x20\x20\x20let\x20sort_columns\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20let\x20where\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20select\x20untuk\x20kolom\x20selektif\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0x244ab3[_0x59c9ea(0x1e1)]||[])+_0x59c9ea(0x25f)+_0x1c98fb+_0x59c9ea(0x28d)+_0x128e2a+'\x20list:\x27,\x20error);\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x128e2a+_0x59c9ea(0x1b9);}function generateCreateCompositeFunction(_0x1de54d,_0x1b8f5b,_0x4ea14b,_0x5ba5fe=null){const _0x1cd700=a0_0x3751,_0x41b2f3={'cQsnN':_0x1cd700(0x10f),'maLGI':'items.','TidWj':'(master-detail\x20transaction)','oKghI':_0x1cd700(0x23e),'eJYkz':_0x1cd700(0x293)};if(!_0x5ba5fe){const _0x31d1f6=FileUtils[_0x1cd700(0x1ea)](_0x1b8f5b);_0x5ba5fe=_0x31d1f6+_0x1cd700(0x171);}const _0x3df02f=_0x4ea14b['masterDetail']&&_0x4ea14b[_0x1cd700(0x148)]['enabled'],_0x1eb86b=_0x3df02f?_0x4ea14b['masterDetail'][_0x1cd700(0x204)]:null,_0x420a16=_0x1eb86b?_0x1eb86b['split']('.')[_0x1cd700(0x1b8)]():_0x41b2f3['cQsnN'],_0x41f519=_0x1b8f5b[_0x1cd700(0x114)](/-/g,'_'),_0x3e8fa0=_0x4ea14b['masterDetail']?.[_0x1cd700(0x230)]?.['autoCalculateFields']?.[_0x1cd700(0x28c)]?.[_0x1cd700(0x15d)]||'',_0x4c2b8a=_0x3e8fa0[_0x1cd700(0x216)]('*')[_0x1cd700(0x23f)](_0x1fd33e=>_0x1fd33e[_0x1cd700(0x1c6)]()),_0x12fd58=_0x4ea14b['masterDetail']?.[_0x1cd700(0xe2)]?.['total_qty']?.[_0x1cd700(0x1e9)]?.['replace'](_0x41b2f3[_0x1cd700(0x183)],'')||'',_0x4aafb0=_0x4c2b8a[0x0]||_0x12fd58,_0x488170=_0x4c2b8a[0x1]||_0x1cd700(0x20e);return'\x0a//\x20POST\x20/api/'+_0x1de54d+'/'+_0x1b8f5b+_0x1cd700(0x1a2)+(_0x3df02f?_0x41b2f3[_0x1cd700(0xe9)]:'')+_0x1cd700(0x1bf)+_0x1b8f5b+'/create-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x20structure\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x41f519+_0x1cd700(0x15b)+_0x41f519+_0x1cd700(0x273)+(_0x3df02f?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x41f519+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x420a16+'\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x201,\x20\x22field\x22:\x20\x22value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x202,\x20\x22field\x22:\x20\x22value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}':'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x41f519+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}')+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20req.body.'+_0x41f519+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x5ba5fe+_0x1cd700(0x1c5)+(_0x3df02f?'delete\x20headerDataForValidation.'+_0x420a16+';':'')+_0x1cd700(0x200)+_0x5ba5fe+'.validateData(headerDataForValidation,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Merge\x20sanitized\x20data\x20(termasuk\x20hash\x20result)\x20kembali\x20ke\x20data\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20'+(_0x3df02f?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x0a\x20\x20\x20\x20if\x20(!data.'+_0x420a16+_0x1cd700(0x18f)+_0x420a16+_0x1cd700(0x249)+_0x420a16+_0x1cd700(0x243)+_0x420a16+'\x22\x20must\x20be\x20a\x20non-empty\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Auto-calculate\x20totals\x20jika\x20ada\x20konfigurasi\x0a\x20\x20\x20\x20'+(_0x4ea14b['masterDetail']['headerCalculations']?_0x1cd700(0xeb)+JSON['stringify'](_0x4ea14b[_0x1cd700(0x148)]['headerCalculations'])+';\x0a\x20\x20\x20\x20if\x20(headerCalc.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20data.total_items\x20=\x20data.'+_0x420a16+'.length;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(headerCalc.total_qty\x20&&\x20headerCalc.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20headerCalc.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20data.total_qty\x20=\x20data.'+_0x420a16+'.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'+(_0x4aafb0?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Calculate\x20total_amount\x20as\x20sum\x20of\x20('+_0x4aafb0+'\x20*\x20'+_0x488170+_0x1cd700(0x290)+_0x420a16+_0x1cd700(0x270)+_0x4aafb0+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20price\x20=\x20Number(item.'+_0x488170+_0x1cd700(0x1ab):_0x41b2f3[_0x1cd700(0x2a7)])+_0x1cd700(0x245):'')+'\x0a\x0a\x20\x20\x20\x20console.log(\x27Calculated\x20totals:\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20total_items:\x20data.total_items,\x0a\x20\x20\x20\x20\x20\x20total_qty:\x20data.total_qty,\x0a\x20\x20\x20\x20\x20\x20total_amount:\x20data.total_amount\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20':'')+_0x1cd700(0x125)+_0x4ea14b['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x1eb86b+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x3df02f?_0x4ea14b['masterDetail']['foreignKey']:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20composite\x20create\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x5ba5fe+'.createComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x1b8f5b+'\x20composite\x20create\x20successful`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x1b8f5b+_0x1cd700(0xed)+(_0x3df02f?_0x41b2f3['eJYkz']:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20create\x20'+_0x1b8f5b+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20creating\x20'+_0x1b8f5b+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateUpdateCompositeFunction(_0x421835,_0x5019b7,_0x3a5056,_0x13b38d=null){const _0x3364f1=a0_0x3751;if(!_0x13b38d){const _0x4c1aab=FileUtils['toCamelCase'](_0x5019b7);_0x13b38d=_0x4c1aab+'Model';}const _0x396cbf=_0x3a5056['masterDetail']&&_0x3a5056[_0x3364f1(0x148)]['enabled'],_0x31b99f=_0x396cbf?_0x3a5056[_0x3364f1(0x148)][_0x3364f1(0x204)]:null,_0x290053=_0x31b99f?_0x31b99f[_0x3364f1(0x216)]('.')[_0x3364f1(0x1b8)]():_0x3364f1(0x10f),_0x8bec4c=_0x5019b7[_0x3364f1(0x114)](/-/g,'_'),_0x4adeb7=_0x3a5056['primaryKey']||'id',_0x2439a0=_0x3a5056['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x20—\x20master\x20record\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x13b38d+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20\x27'+_0x4adeb7+'\x27,\x20value:\x20data.'+_0x4adeb7+'\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Master\x20record\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return _0x3364f1(0x1b2)+_0x421835+'/'+_0x5019b7+_0x3364f1(0x1fb)+(_0x396cbf?_0x3364f1(0x292):'')+_0x3364f1(0xfe)+_0x5019b7+'/update-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x20structure\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x8bec4c+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x8bec4c+_0x3364f1(0x273)+(_0x396cbf?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x8bec4c+_0x3364f1(0x2ab)+_0x4adeb7+'\x22:\x20\x22existing-id\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x290053+'\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x201,\x20\x22field\x22:\x20\x22value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x202,\x20\x22field\x22:\x20\x22value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}':'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x8bec4c+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x4adeb7+'\x22:\x20\x22existing-id\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}')+_0x3364f1(0x232)+_0x8bec4c+_0x3364f1(0xf4)+_0x4adeb7+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Primary\x20key\x20('+_0x4adeb7+_0x3364f1(0x1a5)+_0x2439a0+_0x3364f1(0x201)+_0x13b38d+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20saja\x20(exclude\x20detail)\x20untuk\x20validation\x0a\x20\x20\x20\x20\x20\x20const\x20headerDataForValidation\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20'+(_0x396cbf?_0x3364f1(0xda)+_0x290053+';':'')+_0x3364f1(0x200)+_0x13b38d+'.validateData(headerDataForValidation,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Merge\x20sanitized\x20data\x20(termasuk\x20hash\x20result)\x20kembali\x20ke\x20data\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20'+(_0x396cbf?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x20(opsional\x20untuk\x20update)\x0a\x20\x20\x20\x20//\x20Untuk\x20updateComposite,\x20detail\x20items\x20berupa\x20object\x20dengan\x20{insert:\x20[],\x20update:\x20[],\x20delete:\x20[]}\x0a\x20\x20\x20\x20if\x20(data.'+_0x290053+')\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20data.'+_0x290053+_0x3364f1(0x284)+_0x290053+'))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x290053+_0x3364f1(0x2a8)+_0x290053+';\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.insert\x20&&\x20!Array.isArray(operations.insert))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x290053+'.insert\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.update\x20&&\x20!Array.isArray(operations.update))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x290053+_0x3364f1(0x101)+_0x290053+_0x3364f1(0x267):'')+_0x3364f1(0x125)+_0x3a5056['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x31b99f+_0x3364f1(0x1bc)+(_0x396cbf?_0x3a5056[_0x3364f1(0x148)]['foreignKey']:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20composite\x20update\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x13b38d+'.updateComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x5019b7+_0x3364f1(0x178)+_0x4adeb7+_0x3364f1(0x211)+_0x4adeb7+'}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x5019b7+_0x3364f1(0x168)+(_0x396cbf?_0x3364f1(0x293):'')+_0x3364f1(0x172)+_0x5019b7+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20\x22Data\x20tidak\x20ditemukan\x22\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x5019b7+_0x3364f1(0x20a)+_0x5019b7+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function a0_0x3751(_0x20f766,_0x471689){_0x20f766=_0x20f766-0xd4;const _0x4c62c2=a0_0x4c62();let _0x37510e=_0x4c62c2[_0x20f766];if(a0_0x3751['amdAJh']===undefined){var _0x359d3d=function(_0x58166f){const _0x22db59='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a19dd='',_0x2f7dcb='';for(let _0x1eded2=0x0,_0x5408e9,_0x1b3a36,_0x532fcd=0x0;_0x1b3a36=_0x58166f['charAt'](_0x532fcd++);~_0x1b3a36&&(_0x5408e9=_0x1eded2%0x4?_0x5408e9*0x40+_0x1b3a36:_0x1b3a36,_0x1eded2++%0x4)?_0x3a19dd+=String['fromCharCode'](0xff&_0x5408e9>>(-0x2*_0x1eded2&0x6)):0x0){_0x1b3a36=_0x22db59['indexOf'](_0x1b3a36);}for(let _0x374fcf=0x0,_0x247c52=_0x3a19dd['length'];_0x374fcf<_0x247c52;_0x374fcf++){_0x2f7dcb+='%'+('00'+_0x3a19dd['charCodeAt'](_0x374fcf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2f7dcb);};a0_0x3751['KQrsLc']=_0x359d3d,a0_0x3751['TFWvay']={},a0_0x3751['amdAJh']=!![];}const _0x151dea=_0x4c62c2[0x0],_0x35bedd=_0x20f766+_0x151dea,_0x12b465=a0_0x3751['TFWvay'][_0x35bedd];return!_0x12b465?(_0x37510e=a0_0x3751['KQrsLc'](_0x37510e),a0_0x3751['TFWvay'][_0x35bedd]=_0x37510e):_0x37510e=_0x12b465,_0x37510e;}function generateReadCompositeFunction(_0x170267,_0x2485d8,_0x74ef23,_0x522211=null){const _0x5c62bc=a0_0x3751;if(!_0x522211){const _0x8dfd23=FileUtils[_0x5c62bc(0x1ea)](_0x2485d8);_0x522211=_0x8dfd23+'Model';}const _0x524ab1=JSON['stringify'](_0x74ef23[_0x5c62bc(0x1e1)]||[]);return'\x0a//\x20POST\x20/api/'+_0x170267+'/'+_0x2485d8+'/read-composite\x20-\x20Read\x20header\x20with\x20detail\x20items\x0arouter.post(\x27/read-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x2485d8+'/read-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+(_0x74ef23[_0x5c62bc(0x10a)]||'id')+_0x5c62bc(0x102)+_0x522211+'.readComposite(req.body);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x2485d8+'\x20composite\x20read\x20successful:\x20${result.count\x20||\x200}\x20record(s)`);\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20read\x20'+_0x2485d8+_0x5c62bc(0x2a6)+_0x2485d8+'\x20composite\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateWorkflowFunction(_0x5b023e,_0x2ab002,_0x4b9bf3,_0x3d4cce=null){const _0x1bcd54=a0_0x3751;if(!_0x3d4cce){const _0x340491=FileUtils['toCamelCase'](_0x2ab002);_0x3d4cce=_0x340491+'Model';}const _0x374050=_0x4b9bf3['workflow']?JSON[_0x1bcd54(0x24a)](_0x4b9bf3['workflow']):'{}',_0x134fe0=_0x4b9bf3['requestScope']?_0x1bcd54(0x202)+_0x3d4cce+_0x1bcd54(0x11f)+_0x2ab002+_0x1bcd54(0x285):'';return'\x0a//\x20POST\x20/api/'+_0x5b023e+'/'+_0x2ab002+_0x1bcd54(0x154)+_0x2ab002+'\x0arouter.post(\x27/change-status\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20required\x20fields:\x20id/primary\x20key\x20dan\x20status\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x4b9bf3[_0x1bcd54(0x10a)]||'id')+'\x27;\x0a\x20\x20\x20\x20const\x20recordId\x20=\x20req.body[primaryKey]\x20||\x20req.body.id;\x0a\x20\x20\x20\x20if\x20(!recordId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20or\x20id\x20is\x20required\x20for\x20change-status`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.status)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27status\x20is\x20required\x20for\x20change-status\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x134fe0+_0x1bcd54(0xf9)+_0x374050+_0x1bcd54(0xef)+_0x5b023e+'\x27;\x0a\x20\x20\x20\x20let\x20result\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x4b9bf3['tableName']+_0x1bcd54(0x19b)+_0x3d4cce+'.changeStatusData(req.body,\x20workflowConfig,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20component\x20engine\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x3d4cce+'.changeStatusData(req.body,\x20workflowConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20CHANGE-STATUS\x20completed\x20without\x20component\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x2ab002+'\x20status\x20changed:\x20${result.workflow.previousStatus}\x20→\x20${result.workflow.newStatus}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20`Status\x20changed\x20from\x20${result.workflow.previousStatus}\x20to\x20${result.workflow.newStatus}`,\x0a\x20\x20\x20\x20\x20\x20data:\x20result.data,\x0a\x20\x20\x20\x20\x20\x20workflow:\x20result.workflow,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20change-status\x20'+_0x2ab002+_0x1bcd54(0x233)+_0x2ab002+_0x1bcd54(0x257);}function createPostgresSubmoduleTemplate(_0x694cd1,_0x32d9d8,_0x4a55f0){const _0x22d844=a0_0x3751,_0x56206d={'BRCMc':_0x22d844(0x1b6),'RHisb':function(_0x38120f,_0x10d29f){return _0x38120f(_0x10d29f);},'JQUQe':function(_0x35fa80,_0xa839d,_0x592d85){return _0x35fa80(_0xa839d,_0x592d85);},'YvPPY':function(_0x291ff6,_0x71a70a){return _0x291ff6(_0x71a70a);},'NETFr':function(_0x364d4b,_0x502e8a){return _0x364d4b!==_0x502e8a;},'IVyAa':'//\x20Endpoint\x20/info\x20dinonaktifkan\x20via\x20action.info\x20=\x20false'},_0x335d4c=FileUtils[_0x22d844(0xf2)](_0x32d9d8),_0x1708f9=new Date()[_0x22d844(0x192)]()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x2650a1=_0x4a55f0[_0x22d844(0x206)]||{'all':_0x4a55f0['fieldName']||[]},_0x11915a=FileUtils[_0x22d844(0x27d)](_0x4a55f0['fieldName']||[]),_0x552b87=FileUtils[_0x22d844(0x1ea)](_0x32d9d8),_0x3e3d9c=_0x552b87+'Model',_0x5f02bd=_0x4a55f0['kafka']&&_0x4a55f0[_0x22d844(0x1dc)][_0x22d844(0x113)]===!![],_0x56ade3=buildEndpointFunctions(_0x694cd1,_0x32d9d8,_0x4a55f0,_0x2650a1,_0x11915a,_0x3e3d9c,_0x5f02bd),_0x4f7ce8=_0x5f02bd?_0x22d844(0x29d)+JSON[_0x22d844(0x24a)](_0x4a55f0['kafka']||{'enabled':![]})+';\x0a':'';return _0x22d844(0x18c)+_0x3e3d9c+_0x22d844(0x181)+_0x694cd1+'/'+_0x32d9d8+_0x22d844(0xf8)+_0x4f7ce8+_0x22d844(0x134)+JSON[_0x22d844(0x24a)](_0x4a55f0['components'])+_0x22d844(0xfc)+JSON['stringify'](_0x4a55f0[_0x22d844(0x18d)])+')\x20&&\x20'+JSON['stringify'](_0x4a55f0['components'])+_0x22d844(0x1ff)+_0x4a55f0[_0x22d844(0x13a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldName:\x20'+JSON[_0x22d844(0x24a)](_0x4a55f0[_0x22d844(0x1e1)])+_0x22d844(0x236)+(_0x4a55f0['exportQuery']?'\x27'+_0x4a55f0['exportQuery']+'\x27':'null')+',\x0a\x20\x20\x20\x20\x20\x20columnFormats:\x20'+(_0x4a55f0['columnFormats']?JSON['stringify'](_0x4a55f0['columnFormats']):'null')+_0x22d844(0x10b)+(_0x4a55f0[_0x22d844(0x174)]?JSON[_0x22d844(0x24a)](_0x4a55f0['fieldLabels']):_0x22d844(0x1b6))+_0x22d844(0x152)+JSON['stringify'](_0x4a55f0['components'])+_0x22d844(0x28b)+(_0x4a55f0['importConfig']?JSON['stringify'](_0x4a55f0['importConfig']):_0x56206d['BRCMc'])+_0x22d844(0x138)+(_0x4a55f0[_0x22d844(0x212)]?JSON['stringify'](_0x4a55f0['adjustConfig']):_0x22d844(0x1b6))+_0x22d844(0x1be)+(_0x4a55f0[_0x22d844(0x116)]?JSON['stringify'](_0x4a55f0[_0x22d844(0x116)]):_0x56206d[_0x22d844(0x26e)])+_0x22d844(0x255)+(_0x4a55f0[_0x22d844(0x2a0)]?JSON['stringify'](_0x4a55f0[_0x22d844(0x2a0)]):_0x56206d[_0x22d844(0x26e)])+_0x22d844(0xd5)+(_0x4a55f0['requestScope']?JSON['stringify'](_0x4a55f0['requestScope']):'null')+_0x22d844(0x27c)+_0x694cd1+'/'+_0x32d9d8+_0x22d844(0x147)+_0x694cd1+'/'+_0x32d9d8+_0x22d844(0x129)+_0x694cd1+'/'+_0x32d9d8+'\x20but\x20components\x20are\x20configured:`,\x20e.message);\x0a\x20\x20\x20\x20throw\x20e;\x0a\x20\x20}\x0a\x20\x20//\x20Jika\x20tidak\x20ada\x20components,\x20silent\x20skip\x20wajar\x0a\x20\x20console.log(`No\x20component\x20engine\x20required\x20for\x20'+_0x694cd1+'/'+_0x32d9d8+_0x22d844(0x251)+_0x335d4c+_0x22d844(0x288)+_0x1708f9+'\x0a\x20*\x0a\x20*\x20Endpoints\x20untuk\x20'+_0x32d9d8+_0x22d844(0x22e)+_0x56206d[_0x22d844(0x22c)](getEnabledActions,_0x4a55f0)['join'](',\x20')+'\x0a\x20*\x20Table:\x20'+_0x4a55f0[_0x22d844(0x13a)]+'\x0a\x20*\x20Fields:\x20'+(_0x4a55f0[_0x22d844(0x1e1)]?_0x4a55f0[_0x22d844(0x1e1)][_0x22d844(0x185)]:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0a\x0a//\x20CORS\x20ditangani\x20di\x20level\x20app\x20oleh\x20cors\x20middleware\x20(lihat\x20konfigurasi\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x0a\x0a\x0a//\x20Middleware\x20untuk\x20validasi\x20payload\x20pada\x20metode\x20POST\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20===\x20\x27POST\x27)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20import\x20routes\x20(menggunakan\x20multipart/form-data,\x20bukan\x20JSON)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.path.startsWith(\x27/import-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20next();\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20umum\x20untuk\x20payload\x0a\x20\x20\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27/api/'+_0x694cd1+'/'+_0x32d9d8+'\x27\x20+\x20req.path\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20spesifik\x20untuk\x20endpoint\x20tertentu\x0a\x20\x20\x20\x20\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x20//\x20menghapus\x20/\x20di\x20awal\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20get\x20membutuhkan\x20where\x20dalam\x20format\x20{key,\x20value}\x20atau\x20[{key,\x20value}]\x20(1\x20elemen)\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27first\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20->\x20object\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20must\x20be\x20a\x20single\x20condition\x20{key,\x20value}\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Advanced\x20where\x20format\x20is\x20not\x20supported\x20in\x20/first\x20endpoint.\x20Use\x20/read\x20endpoint\x20for\x20complex\x20queries\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20delete\x20membutuhkan\x20where\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27\x20&&\x20(!req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27DELETE\x20payload\x20must\x20include\x20a\x20where\x20property\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20add\x20membutuhkan\x20data\x20yang\x20valid\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27add\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Filter\x20field\x20yang\x20memiliki\x20autoGenerate\x20dari\x20required\x20check\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20autoGenerateFields\x20=\x20'+(_0x4a55f0['fieldValidation']?JSON['stringify'](_0x4a55f0['fieldValidation'][_0x22d844(0x15c)](_0x27461c=>_0x27461c[_0x22d844(0x100)]&&_0x27461c[_0x22d844(0x100)]['autoGenerate'])[_0x22d844(0x23f)](_0x34c54b=>_0x34c54b[_0x22d844(0x21e)])):'[]')+';\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20requiredFields\x20=\x20[\x27'+_0x4a55f0[_0x22d844(0x1e1)][_0x22d844(0x15c)](_0x47802d=>_0x47802d!=='id')['slice'](0x0,0x1)['join'](_0x22d844(0x25d))+_0x22d844(0x17c)+(_0x4a55f0[_0x22d844(0x10a)]||'id')+'\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20validating\x20payload\x20for\x20${req.path}:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20next();\x0a});\x0a'+_0x56206d[_0x22d844(0x170)](buildRequestScopeMiddleware,_0x4a55f0,_0x32d9d8)+_0x56206d[_0x22d844(0x244)](buildSoftDeleteReadMiddleware,_0x4a55f0)+'\x0a'+_0x56ade3+'\x0a\x0a'+(_0x56206d['NETFr'](_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x135)],![])?_0x22d844(0x1ed)+JSON['stringify']({'datatables':!!_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x1aa)],'read':!!_0x4a55f0['action']?.[_0x22d844(0xe5)],'first':!!_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x157)],'create':!!_0x4a55f0['action']?.[_0x22d844(0x130)],'update':!!_0x4a55f0['action']?.[_0x22d844(0x140)],'delete':!!_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x26a)],'lookup':!!_0x4a55f0['action']?.[_0x22d844(0x109)],'export':!!_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x20b)],'import':!!_0x4a55f0[_0x22d844(0x123)]?.['import'],'workflow':!!_0x4a55f0[_0x22d844(0x123)]?.[_0x22d844(0x116)],'info':_0x56206d['NETFr'](_0x4a55f0['action']?.[_0x22d844(0x135)],![])})+';\x0a\x0a\x20\x20\x20\x20const\x20modelInfo\x20=\x20await\x20'+_0x3e3d9c+'.getModelInfo(actions);\x0a\x0a\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x32d9d8+_0x22d844(0x188)+_0x694cd1+'\x27,\x0a\x20\x20\x20\x20\x20\x20table:\x20modelInfo.table,\x0a\x20\x20\x20\x20\x20\x20fields:\x20modelInfo.fields,\x0a\x20\x20\x20\x20\x20\x20querySources:\x20modelInfo.querySources,\x0a\x20\x20\x20\x20\x20\x20actions:\x20actions,\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27postgres\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x1708f9+_0x22d844(0x16b)+_0x32d9d8+'\x20info:\x27,\x20error);\x0a\x20\x20\x20\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20endpoint\x20information\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});':_0x56206d['IVyAa'])+'\x0a\x0a//\x20Health\x20check\x20endpoint\x0arouter.get(\x27/health\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20res.json({\x0a\x20\x20\x20\x20status:\x20\x27ok\x27,\x0a\x20\x20\x20\x20endpoint:\x20\x27'+_0x32d9d8+_0x22d844(0x111);}function createPostgresMainModuleTemplate(_0x2d8129){const _0xad6d4c=a0_0x3751,_0x135799=FileUtils['toPascalCase'](_0x2d8129),_0x1dbd1f=FileUtils[_0xad6d4c(0x1ea)](_0x2d8129),_0x2b1ba6=new Date()[_0xad6d4c(0x192)]()['replace']('T','\x20')[_0xad6d4c(0x114)](/\.\d{3}Z$/,'');return _0xad6d4c(0x120)+_0x135799+'\x20Module\x20-\x20Auto-generated\x20on\x20'+_0x2b1ba6+_0xad6d4c(0x1b7)+_0x2d8129+'\x0a\x20*\x20@param\x20{Object}\x20config\x20-\x20Konfigurasi\x20untuk\x20menjalankan\x20modul\x0a\x20*\x20@param\x20{number}\x20config.port\x20-\x20Port\x20untuk\x20server\x0a\x20*\x20@param\x20{string}\x20config.key\x20-\x20API\x20Key\x20(opsional)\x0a\x20*\x20@param\x20{boolean}\x20config.cors\x20-\x20Enable\x20CORS\x20(default:\x20true)\x0a\x20*\x20@param\x20{boolean}\x20config.logging\x20-\x20Enable\x20request\x20logging\x20(default:\x20true)\x0a\x20*\x20@returns\x20{Promise<void>}\x20Promise\x20yang\x20tidak\x20pernah\x20resolve\x20agar\x20server\x20tetap\x20berjalan\x0a\x20*/\x0aasync\x20function\x20execute(config)\x20{\x0a\x20\x20return\x20new\x20Promise((resolve,\x20reject)\x20=>\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20app\x20=\x20express();\x0a\x20\x20\x20\x20\x20\x20const\x20port\x20=\x20config.port\x20||\x203000;\x0a\x20\x20\x20\x20\x20\x20const\x20serverAddress\x20=\x20config.serverAddress\x20||\x20\x270.0.0.0\x27;\x20//\x20Default\x200.0.0.0\x20untuk\x20backward\x20compatibility\x0a\x20\x20\x20\x20\x20\x20const\x20moduleNameCapitalized\x20=\x20\x27'+_0x135799+'\x27;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Configuration\x20options\x0a\x20\x20\x20\x20\x20\x20const\x20loggingEnabled\x20=\x20config.logging\x20!==\x20false;\x0a\x20\x20\x20\x20\x20\x20const\x20apiKeyRequired\x20=\x20!!config.key;\x0a\x0a\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27module_starting\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20module:\x20moduleNameCapitalized,\x0a\x20\x20\x20\x20\x20\x20\x20\x20port,\x0a\x20\x20\x20\x20\x20\x20\x20\x20cors:\x20process.env.CORS_ENABLED\x20!==\x20\x27false\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20helmet:\x20process.env.HELMET_ENABLED\x20===\x20\x27true\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20logging:\x20loggingEnabled,\x0a\x20\x20\x20\x20\x20\x20\x20\x20apiKey:\x20apiKeyRequired\x0a\x20\x20\x20\x20\x20\x20},\x20`Starting\x20${moduleNameCapitalized}\x20module`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20CORS\x20middleware\x20(konfigurasi\x20via\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x20\x20\x20\x20\x20\x20app.use(corsMiddleware.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Security\x20headers\x20middleware\x20(konfigurasi\x20via\x20HELMET_ENABLED\x20di\x20.env)\x0a\x20\x20\x20\x20\x20\x20app.use(securityHeaders.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20JSON\x20parsing\x20middleware\x20dengan\x20error\x20handling\x0a\x20\x20\x20\x20\x20\x20app.use(bodyParser.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit:\x20\x2710mb\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20verify:\x20(req,\x20res,\x20buf,\x20encoding)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20empty\x20buffer\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(buf.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JSON.parse(buf);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`JSON\x20Parse\x20Error\x20from\x20${req.ip}:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20JSON\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27The\x20payload\x20sent\x20is\x20not\x20a\x20valid\x20JSON\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20JSON\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20URL-encoded\x20parsing\x20middleware\x0a\x20\x20\x20\x20\x20\x20app.use(bodyParser.urlencoded({\x0a\x20\x20\x20\x20\x20\x20\x20\x20extended:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit:\x20\x2710mb\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Request\x20logging\x20middleware\x20(Pino-based)\x0a\x20\x20\x20\x20\x20\x20if\x20(loggingEnabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Generate\x20request\x20ID\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.id\x20=\x20req.headers[\x27x-request-id\x27]\x20||\x20uuidv7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.set(\x27X-Request-ID\x27,\x20req.id);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Create\x20scoped\x20logger\x20untuk\x20request\x20ini\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.log\x20=\x20createRequestLogger({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20req.method,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20path:\x20req.path,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ip:\x20req.ip\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Capture\x20start\x20time\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20startTime\x20=\x20process.hrtime();\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Log\x20response\x20ketika\x20selesai\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.on(\x27finish\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20[seconds,\x20nanoseconds]\x20=\x20process.hrtime(startTime);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20durationMs\x20=\x20parseFloat((seconds\x20*\x201000\x20+\x20nanoseconds\x20/\x201e6).toFixed(2));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logRequest(req,\x20res,\x20durationMs);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20API\x20Key\x20validation\x20middleware\x20(constant-time\x20comparison)\x0a\x20\x20\x20\x20\x20\x20if\x20(apiKeyRequired)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20crypto\x20=\x20require(\x27crypto\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20expectedKey\x20=\x20Buffer.from(config.key);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20(req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20apiKey\x20=\x20req.headers[\x27x-api-key\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!apiKey)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(401).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unauthorized\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20or\x20missing\x20API\x20Key\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20providedKey\x20=\x20Buffer.from(apiKey);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(expectedKey.length\x20!==\x20providedKey.length\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!crypto.timingSafeEqual(expectedKey,\x20providedKey))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(401).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unauthorized\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20or\x20missing\x20API\x20Key\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Rate\x20limiting\x20middleware\x20(store:\x20memory\x20untuk\x20single\x20mode,\x20Redis\x20untuk\x20cluster\x20mode)\x0a\x20\x20\x20\x20\x20\x20rateLimiter.setStore(config.cluster\x20?\x20\x27redis\x27\x20:\x20\x27memory\x27);\x0a\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20rateLimiter.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Idempotency\x20middleware\x20(protects\x20mutation\x20endpoints\x20from\x20duplicate\x20execution)\x0a\x20\x20\x20\x20\x20\x20if\x20(process.env.IDEMPOTENCY_ENABLED\x20===\x20\x27true\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20idempotencyMiddleware.middleware());\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Body\x20options\x20middleware\x20(extract\x20{data,\x20options}\x20format\x20dari\x20request\x20body)\x0a\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20bodyOptionsMiddleware.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Auto-load\x20plugin\x20(jika\x20ada)\x0a\x20\x20\x20\x20\x20\x20const\x20moduleName\x20=\x20\x27'+_0x2d8129+_0xad6d4c(0x1f7)+_0x2d8129+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Module-specific\x20health\x20check\x20endpoint\x20(dengan\x20prefix\x20module)\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x2d8129+_0xad6d4c(0x1b4)+_0x2d8129+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Service\x20info\x20endpoint\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x2d8129+'/info\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x27'+_0x135799+_0xad6d4c(0x121)+_0x2d8129+_0xad6d4c(0x163)+_0x2b1ba6+_0xad6d4c(0x21b)+_0x2d8129+_0xad6d4c(0x1e3)+_0x2d8129+_0xad6d4c(0x115)+_0x2d8129+'/${endpointName}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20app.use(endpointPrefix,\x20endpointRouter);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logEndpointRegistered(endpointName,\x20endpointPrefix);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20export\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20exportConfig\x20=\x20extractExportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(exportConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ExportHandler.registerRoutes(app,\x20\x27'+_0x2d8129+'\x27,\x20endpointName,\x20exportConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(exportError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27export_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20exportError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Export\x20registration\x20failed\x20for\x20${endpointName}:\x20${exportError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20import\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20importConfig\x20=\x20extractImportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(importConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ImportHandler.registerRoutes(app,\x20\x27'+_0x2d8129+_0xad6d4c(0x2aa)+_0x2d8129+_0xad6d4c(0x23d)+_0x2d8129+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20healthCheck:\x20`http://${displayHost}:${port}/api/'+_0x2d8129+'/health`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20serviceInfo:\x20`http://${displayHost}:${port}/api/'+_0x2d8129+_0xad6d4c(0x22f)+_0x1dbd1f+'\x20=\x20{\x20execute\x20};\x0amodule.exports.moduleName\x20=\x20\x27'+_0x2d8129+_0xad6d4c(0x1ce)+_0x2b1ba6+'\x27;';}module['exports']={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|
|
1
|
+
(function(_0xa1342d,_0x1724fe){const _0x4a1ccf=a0_0x44a2,_0x4559f4=_0xa1342d();while(!![]){try{const _0x578e44=-parseInt(_0x4a1ccf(0x279))/0x1*(parseInt(_0x4a1ccf(0x38f))/0x2)+-parseInt(_0x4a1ccf(0x1cb))/0x3*(-parseInt(_0x4a1ccf(0x335))/0x4)+-parseInt(_0x4a1ccf(0x33c))/0x5+parseInt(_0x4a1ccf(0x301))/0x6*(parseInt(_0x4a1ccf(0x22b))/0x7)+-parseInt(_0x4a1ccf(0x234))/0x8+-parseInt(_0x4a1ccf(0x2c5))/0x9+parseInt(_0x4a1ccf(0x352))/0xa*(parseInt(_0x4a1ccf(0x3b9))/0xb);if(_0x578e44===_0x1724fe)break;else _0x4559f4['push'](_0x4559f4['shift']());}catch(_0x30d60f){_0x4559f4['push'](_0x4559f4['shift']());}}}(a0_0x5930,0x5ff8b));const FileUtils=require('../utils/file-utils'),{IS_DELETED_COLUMN,DELETED_AT_COLUMN,DELETED_BY_COLUMN,SOFT_DELETE_COLUMNS,isSoftDeleteEnabled}=require('../dbschema-kit/soft-delete-constants');function softDeleteVisibilityFilter(_0x572e45){const _0x248ee9=a0_0x44a2,_0x350fcd={'VLpPa':function(_0x2d68f6,_0x17059f){return _0x2d68f6(_0x17059f);},'WJoia':'active_only','AABzE':function(_0x1f848c,_0x4e8f11){return _0x1f848c===_0x4e8f11;},'erNLm':'deleted_only','qEpan':_0x248ee9(0x24b),'nuAjt':_0x248ee9(0x390)};if(!_0x350fcd[_0x248ee9(0x2d9)](isSoftDeleteEnabled,_0x572e45))return null;const _0x26de75=_0x572e45[_0x248ee9(0x339)]&&_0x572e45['softDelete'][_0x248ee9(0x26f)]||_0x350fcd['WJoia'];if(_0x350fcd[_0x248ee9(0x35b)](_0x26de75,'include_deleted'))return null;return _0x26de75===_0x350fcd['erNLm']?_0x350fcd[_0x248ee9(0x37b)]:_0x350fcd['nuAjt'];}function assertNoFileReferenceLeftover(_0x9f3478){const _0xbf81e3=a0_0x44a2,_0xfc5f60={'nyeIh':_0xbf81e3(0x3a8),'QYcRu':'masterDetail.detailConfig.detailQuery','FkyVD':_0xbf81e3(0x2fe)},_0xa01f1c=[[_0xfc5f60['nyeIh'],_0x9f3478[_0xbf81e3(0x3a8)]],[_0xbf81e3(0x27b),_0x9f3478[_0xbf81e3(0x27b)]],[_0xfc5f60[_0xbf81e3(0x377)],_0x9f3478['masterDetail']&&_0x9f3478['masterDetail'][_0xbf81e3(0x1ef)]&&_0x9f3478[_0xbf81e3(0x2bd)]['detailConfig']['detailQuery']]];for(const [_0x8b154f,_0x3c56b5]of _0xa01f1c){if(typeof _0x3c56b5===_0xbf81e3(0x1c1)&&_0x3c56b5[_0xbf81e3(0x243)](_0xfc5f60[_0xbf81e3(0x2f2)]))throw new Error('Codegen\x20invariant\x20violation:\x20'+_0x8b154f+'\x20still\x20contains\x20\x22file:\x22\x20reference\x20('+_0x3c56b5+_0xbf81e3(0x1e5)+'Expected\x20expanded\x20SQL\x20string.\x20Check\x20PayloadProcessor.processFileReferences\x20flow.');}}function buildValidFieldsString(_0x14b3ef){const _0x2b3005=a0_0x44a2,_0x2cea9d=(_0x14b3ef[_0x2b3005(0x2a2)]||[])[_0x2b3005(0x20d)]();if(isSoftDeleteEnabled(_0x14b3ef))for(const _0x1154f2 of SOFT_DELETE_COLUMNS){if(!_0x2cea9d['includes'](_0x1154f2))_0x2cea9d[_0x2b3005(0x270)](_0x1154f2);}return _0x2cea9d[_0x2b3005(0x1db)](_0xfaba42=>'\x27'+_0xfaba42+'\x27')['join'](_0x2b3005(0x24f));}function buildFormatResponseDataBody(_0x1a1eb0){const _0x3d0fec=a0_0x44a2,_0x37d3b4={'tIHYo':function(_0x459b97,_0x4431d5){return _0x459b97+_0x4431d5;},'FSHiX':_0x3d0fec(0x20b),'zOjpA':function(_0x31f0cf,_0x1984e7){return _0x31f0cf(_0x1984e7);},'zWnvO':function(_0x374484,_0x126cf2){return _0x374484+_0x126cf2;},'NatEE':function(_0x2d72e0,_0x312c1f){return _0x2d72e0+_0x312c1f;},'PUHfd':function(_0x379000,_0x2411f3){return _0x379000+_0x2411f3;},'RDuFx':function(_0x14b18c,_0x10ab44){return _0x14b18c+_0x10ab44;},'AEnQr':function(_0x28a3f3,_0x630e92){return _0x28a3f3+_0x630e92;},'MDyTg':function(_0x2d6838,_0x8f2517){return _0x2d6838+_0x8f2517;},'yYRHi':_0x3d0fec(0x39b),'LZdFO':_0x3d0fec(0x1d1),'hVoEw':'\x20\x20\x20\x20//\x20Soft-delete\x20middle-ground\x20(audit-parity):\x20tiga\x20kolom\x20soft-delete\x20tetap\x20di\x20validFields\x0a','wkPCb':_0x3d0fec(0x226),'KtbYb':_0x3d0fec(0x34d),'WuMvO':'\x20\x20\x20\x20\x20\x20}\x0a','jYMJv':_0x3d0fec(0x29f)},_0x4f638a=_0x37d3b4['tIHYo']('\x20\x20\x20\x20//\x20Gunakan\x20parent\x20method\x20yang\x20sudah\x20include\x20datetime\x20formatting\x0a',_0x37d3b4['FSHiX']);if(!_0x37d3b4['zOjpA'](isSoftDeleteEnabled,_0x1a1eb0))return _0x4f638a;return _0x37d3b4['zWnvO'](_0x37d3b4[_0x3d0fec(0x242)](_0x37d3b4['PUHfd'](_0x37d3b4['RDuFx'](_0x37d3b4[_0x3d0fec(0x1ee)](_0x37d3b4['AEnQr'](_0x37d3b4['MDyTg'](_0x37d3b4[_0x3d0fec(0x254)],_0x37d3b4[_0x3d0fec(0x2c4)]),_0x37d3b4[_0x3d0fec(0x357)]),_0x37d3b4['wkPCb']),_0x3d0fec(0x3bf))+_0x37d3b4['KtbYb'],_0x3d0fec(0x2b7)+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a')+_0x3d0fec(0x286)+_0x37d3b4['WuMvO'],'\x20\x20\x20\x20}\x0a'),_0x37d3b4['jYMJv']);}function buildAuditColumnsSection(_0x380112,_0xf584f5){const _0x2dfcf5=a0_0x44a2,_0x1d981c={'cVZqH':function(_0x15f15f,_0x16b604){return _0x15f15f in _0x16b604;},'xvbSi':_0x2dfcf5(0x202),'vhQLa':function(_0x324ba1,_0x43c70f){return _0x324ba1===_0x43c70f;},'yuHTL':_0x2dfcf5(0x1c0),'KpoSu':_0x2dfcf5(0x3b5)};if(!_0x1d981c['cVZqH'](_0x1d981c['xvbSi'],_0x380112))return'';const _0x187b27=_0x380112['auditColumns'];if(_0x1d981c[_0x2dfcf5(0x252)](_0x187b27,![])||_0x187b27===null)return'\x0a'+_0xf584f5+_0x2dfcf5(0x2fb)+_0xf584f5+'this.auditColumns\x20=\x20null;\x0a';if(_0x1d981c['vhQLa'](typeof _0x187b27,'object')&&!Array['isArray'](_0x187b27)){const _0xb1e377=[_0x1d981c['yuHTL'],_0x2dfcf5(0x343),_0x2dfcf5(0x39d),_0x1d981c[_0x2dfcf5(0x299)]],_0x187546={};_0xb1e377['forEach'](_0x5c03a7=>{if(_0x187b27[_0x5c03a7]!==undefined)_0x187546[_0x5c03a7]=_0x187b27[_0x5c03a7];});const _0x578629=JSON['stringify'](_0x187546,null,0x2)[_0x2dfcf5(0x36d)]('\x0a')['map']((_0x5a3109,_0x594e1e)=>_0x594e1e===0x0?_0x5a3109:_0xf584f5+_0x5a3109)['join']('\x0a');return'\x0a'+_0xf584f5+_0x2dfcf5(0x1e9)+_0xf584f5+'this.auditColumns\x20=\x20'+_0x578629+';\x0a';}throw new Error(_0x2dfcf5(0x317)+_0x380112[_0x2dfcf5(0x2b1)]+':\x20must\x20be\x20false,\x20null,\x20or\x20object');}function buildSearchColumnsCode(_0x34f4e1){const _0x12be6a=a0_0x44a2;if(!_0x34f4e1[_0x12be6a(0x2c8)]||!Array[_0x12be6a(0x391)](_0x34f4e1[_0x12be6a(0x2c8)]))return'';return _0x12be6a(0x319)+JSON[_0x12be6a(0x351)](_0x34f4e1[_0x12be6a(0x2c8)],null,0x4)+_0x12be6a(0x20a);}function buildFiltersCode(_0x3217ce){const _0x37627f=a0_0x44a2;if(!_0x3217ce[_0x37627f(0x1fc)]||!Array['isArray'](_0x3217ce[_0x37627f(0x1fc)]))return'';return _0x37627f(0x1f0)+JSON['stringify'](_0x3217ce[_0x37627f(0x1fc)],null,0x4)+';\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Membangun\x20clause\x20WHERE\x20berdasarkan\x20filter\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Filter\x20options\x0a\x20\x20\x20*\x20@returns\x20{String}\x20Clause\x20WHERE\x20SQL\x0a\x20\x20\x20*/\x0a\x20\x20buildFilterWhereClause(options)\x20{\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20[];\x0a\x20\x20\x20\x20const\x20filters\x20=\x20this.getAvailableFilters();\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(filters))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20berdasarkan\x20tipe\x0a\x20\x20\x20\x20for\x20(const\x20filter\x20of\x20filters)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20filterValue\x20=\x20options[filter.name];\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(!filterValue\x20||\x20filterValue\x20===\x20\x27\x27\x20||\x20filterValue\x20===\x20\x27-\x27\x20||\x20filterValue\x20===\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20switch\x20(filter.type)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27combobox\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27select\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20=\x20UPPER(\x27${escapedValue}\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27daterange\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filterValue\x20===\x20\x27custom_range\x27\x20&&\x20options[filter.startField]\x20&&\x20options[filter.endField])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20startDate\x20=\x20options[filter.startField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endDate\x20=\x20options[filter.endField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20BETWEEN\x20\x27${startDate}\x27\x20AND\x20\x27${endDate}\x27`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27text\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20LIKE\x20UPPER(\x27%${escapedValue}%\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27number\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField\x20&&\x20!isNaN(filterValue))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20=\x20${filterValue}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20conditions.length\x20>\x200\x20?\x20`WHERE\x20${conditions.join(\x27\x20AND\x20\x27)}`\x20:\x20\x27\x27;\x0a\x20\x20}';}function buildDefaultScopeSQL(_0x4fb66e,_0x195be1='a.'){const _0x502697=a0_0x44a2,_0x217cf5={'GNrEg':'object','aIDHa':function(_0x346564,_0x166284){return _0x346564===_0x166284;},'ZcfZX':_0x502697(0x207)};if(!_0x4fb66e||typeof _0x4fb66e!==_0x217cf5[_0x502697(0x222)])return'';const _0xf8cef0=[];for(const [_0xbda578,_0x52ed3e]of Object['entries'](_0x4fb66e)){if(_0x217cf5['aIDHa'](typeof _0x52ed3e,'boolean'))_0xf8cef0[_0x502697(0x270)](''+_0x195be1+_0xbda578+_0x502697(0x3bd)+_0x52ed3e);else{if(typeof _0x52ed3e==='string')_0xf8cef0['push'](''+_0x195be1+_0xbda578+'\x20=\x20\x27'+_0x52ed3e['replace'](/'/g,'\x27\x27')+'\x27');else _0x217cf5['aIDHa'](typeof _0x52ed3e,_0x217cf5['ZcfZX'])&&_0xf8cef0[_0x502697(0x270)](''+_0x195be1+_0xbda578+_0x502697(0x3bd)+_0x52ed3e);}}return _0xf8cef0[_0x502697(0x2ca)]('\x20AND\x20');}function buildRequestScopeMiddleware(_0xffa8ec,_0x57bd64){const _0x38a0e4=a0_0x44a2;if(!_0xffa8ec['requestScope'])return'';const {column:_0xd9d700,source:_0xcd070f,bypassRoles:_0x456aa9}=_0xffa8ec[_0x38a0e4(0x292)],_0x33baf7=JSON['stringify'](_0x456aa9||[]),_0x2925b9=(_0x57bd64||'')[_0x38a0e4(0x318)](/-/g,'_');return'\x0a//\x20───\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20──────────────────────────\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0xd9d700+_0x38a0e4(0x2cd)+_0xcd070f+'\x0a//\x20Generated\x20from\x20requestScope\x20configuration\x20in\x20payload\x20JSON\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20!==\x20\x27POST\x27)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20no\x20auth\x20context\x20(endpoint\x20without\x20auth\x20middleware)\x0a\x20\x20if\x20(!req.user)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20user\x20has\x20bypass\x20role\x0a\x20\x20const\x20userRoles\x20=\x20req.user.roles\x20||\x20[];\x0a\x20\x20const\x20bypassRoles\x20=\x20'+_0x33baf7+_0x38a0e4(0x310)+_0xcd070f+_0x38a0e4(0x300)+_0xd9d700+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x20\x20const\x20scopeCondition\x20=\x20{\x20key:\x20\x27'+_0xd9d700+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20//\x20READ\x20operations:\x20inject\x20scope\x20into\x20req.body.where\x0a\x20\x20if\x20([\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27read-composite\x27].includes(endpoint))\x20{\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20[scopeCondition];\x0a\x20\x20\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scopeCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20DELETE:\x20prepend\x20scope\x20condition\x20to\x20where\x20array\x0a\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27)\x20{\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE\x20/\x20ADD:\x20force\x20scope\x20column\x20value\x0a\x20\x20if\x20(endpoint\x20===\x20\x27add\x27\x20||\x20endpoint\x20===\x20\x27create\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0xd9d700+_0x38a0e4(0x25e)+_0xd9d700+_0x38a0e4(0x206)+_0x2925b9+_0x38a0e4(0x288)+_0xd9d700+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20next();\x0a});\x0a';}function buildSoftDeleteReadMiddleware(_0x346a10){const _0x2a1aae=a0_0x44a2,_0x11e602=softDeleteVisibilityFilter(_0x346a10);if(_0x11e602===null)return'';const _0x1b8f34=_0x346a10['softDelete']&&_0x346a10['softDelete']['visibility']||'active_only';return _0x2a1aae(0x219)+IS_DELETED_COLUMN+_0x2a1aae(0x2b0)+_0x1b8f34+_0x2a1aae(0x221)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x11e602+'\x20};\x0a\x0a\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20req.body.where\x20=\x20[softDeleteCondition];\x0a\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20req.body.where.unshift(softDeleteCondition);\x0a\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(softDeleteCondition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20softDeleteCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20next();\x0a});\x0a';}function a0_0x44a2(_0x2c8b41,_0x27fdc8){_0x2c8b41=_0x2c8b41-0x1ba;const _0x5930f9=a0_0x5930();let _0x44a2ce=_0x5930f9[_0x2c8b41];if(a0_0x44a2['pAqMLm']===undefined){var _0x505b29=function(_0x477189){const _0x123c0b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x29a4af='',_0x1964f4='';for(let _0x2eba57=0x0,_0x43a309,_0x129b0a,_0x58a43b=0x0;_0x129b0a=_0x477189['charAt'](_0x58a43b++);~_0x129b0a&&(_0x43a309=_0x2eba57%0x4?_0x43a309*0x40+_0x129b0a:_0x129b0a,_0x2eba57++%0x4)?_0x29a4af+=String['fromCharCode'](0xff&_0x43a309>>(-0x2*_0x2eba57&0x6)):0x0){_0x129b0a=_0x123c0b['indexOf'](_0x129b0a);}for(let _0x405b39=0x0,_0x25b5e7=_0x29a4af['length'];_0x405b39<_0x25b5e7;_0x405b39++){_0x1964f4+='%'+('00'+_0x29a4af['charCodeAt'](_0x405b39)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1964f4);};a0_0x44a2['mjgayJ']=_0x505b29,a0_0x44a2['BfQJYu']={},a0_0x44a2['pAqMLm']=!![];}const _0x40b836=_0x5930f9[0x0],_0x26e626=_0x2c8b41+_0x40b836,_0x4c2a65=a0_0x44a2['BfQJYu'][_0x26e626];return!_0x4c2a65?(_0x44a2ce=a0_0x44a2['mjgayJ'](_0x44a2ce),a0_0x44a2['BfQJYu'][_0x26e626]=_0x44a2ce):_0x44a2ce=_0x4c2a65,_0x44a2ce;}function buildLookupOverrideCode(_0x26f51d,_0xa425f2){const _0xbc853b=a0_0x44a2,_0x472490={'fJflZ':function(_0x4b1c6d,_0x1d9355){return _0x4b1c6d(_0x1d9355);},'UVcWE':function(_0x154568,_0x1c6cbc){return _0x154568+_0x1c6cbc;},'JXGZk':'\x20=\x20','bGYSX':_0xbc853b(0x26c),'OrsMm':_0xbc853b(0x21d)},_0xc89be8=FileUtils[_0xbc853b(0x23c)](_0xa425f2['fieldName']||[]),_0x20fe55=FileUtils['toPascalCase'](_0x26f51d),_0x35b0b3=_0xa425f2['_extendedFields']||{'all':_0xa425f2[_0xbc853b(0x2a2)]||[]},_0x4cf958=_0xa425f2[_0xbc853b(0x282)]||_0xa425f2[_0xbc853b(0x2a2)]&&_0xa425f2['fieldName'][0x0]||'id',_0x5d365d=_0xa425f2[_0xbc853b(0x385)]&&_0xa425f2['defaultScope']['lookup']?buildDefaultScopeSQL(_0xa425f2['defaultScope']['lookup']):'',_0x4e45f5=((()=>{const _0x4739a6=_0xbc853b,_0x56adff=_0x472490[_0x4739a6(0x2ad)](softDeleteVisibilityFilter,_0xa425f2);return _0x56adff!==null?_0x472490['UVcWE']('a.'+IS_DELETED_COLUMN,_0x472490['JXGZk'])+_0x56adff:'';})()),_0x34bc74=[_0x5d365d,_0x4e45f5]['filter'](Boolean)[_0xbc853b(0x2ca)](_0xbc853b(0x297));return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Mendapatkan\x20FROM\x20clause\x20untuk\x20lookup\x20berdasarkan\x20prioritas\x20resolusi\x20sumber\x20data\x0a\x20\x20\x20*\x20Prioritas:\x20viewName\x20→\x20viewQuery\x20→\x20tableName\x20(konsisten\x20dengan\x20/read\x20dan\x20/first)\x0a\x20\x20\x20*\x20@returns\x20{string}\x20FROM\x20clause\x20dengan\x20alias\x20\x27a\x27\x0a\x20\x20\x20*/\x0a\x20\x20getLookupSource()\x20{\x0a\x20\x20\x20\x20const\x20readQuery\x20=\x20this.getReadQuery();\x0a\x20\x20\x20\x20const\x20simpleQuery\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;\x0a\x20\x20\x20\x20if\x20(readQuery.trim()\x20!==\x20simpleQuery)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20viewName\x20atau\x20viewQuery\x20aktif\x20—\x20bungkus\x20sebagai\x20subquery\x0a\x20\x20\x20\x20\x20\x20return\x20\x27(\x27\x20+\x20readQuery\x20+\x20\x27)\x20a\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20this.readSource\x20+\x20\x27\x20a\x27;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getLookupData\x20untuk\x20menggunakan\x20kolom\x20\x27'+_0xc89be8+_0xbc853b(0x2d4)+_0x4cf958+',\x20'+_0xc89be8+_0xbc853b(0x2a8)+_0xc89be8+_0xbc853b(0x393)+(_0x5d365d?'\x20AND\x20'+_0x5d365d:'')+(_0x4e45f5?_0xbc853b(0x297)+_0x4e45f5:'')+_0xbc853b(0x2dd)+_0xc89be8+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20params\x20=\x20[`%${search\x20||\x20\x27\x27}%`];\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4cf958+_0xbc853b(0x1d8)+_0xc89be8+_0xbc853b(0x2f0)+_0x20fe55+_0xbc853b(0x3a3)+JSON['stringify'](_0xa425f2['_lookupConfig']||null)+_0xbc853b(0x2be)+JSON['stringify'](_0x35b0b3['textFields']||[_0xc89be8])+_0xbc853b(0x2d8)+(_0x5d365d?'\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0x5d365d+_0xbc853b(0x253):'')+(_0x4e45f5?_0xbc853b(0x31e)+_0x4e45f5+_0xbc853b(0x253):'')+'\x0a\x20\x20\x20\x20\x20\x20//\x20Add\x20search\x20conditions\x20untuk\x20text\x20fields\x0a\x20\x20\x20\x20\x20\x20if\x20(search\x20&&\x20search.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20searchConditions\x20=\x20textFields.map(field\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`upper(a.${field})\x20LIKE\x20upper($${paramIndex++})`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`(${searchConditions.join(\x27\x20OR\x20\x27)})`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Add\x20search\x20parameter\x20for\x20each\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20textFields.forEach(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(`%${search.trim()}%`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Add\x20extra\x20filters\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(extraFilters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20&&\x20'+JSON[_0xbc853b(0x351)](_0xa425f2[_0xbc853b(0x2a2)]||[])+'.includes(key))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`a.${key}\x20=\x20$${paramIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20final\x20query\x20-\x20gunakan\x20custom\x20select\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20idField\x20=\x20lookupConfig\x20?\x20lookupConfig.idField\x20:\x20\x27'+_0x4cf958+_0xbc853b(0x3b1)+_0x4cf958+_0xbc853b(0x237)+_0x20fe55+_0xbc853b(0x2c3)+_0xc89be8+_0xbc853b(0x330)+_0x4cf958+',\x20'+_0xc89be8+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`'+(_0x34bc74?_0xbc853b(0x3a4)+_0x34bc74:'')+_0xbc853b(0x2dd)+_0xc89be8+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20result\x20tanpa\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20const\x20cacheData\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4cf958+_0xbc853b(0x1d8)+_0xc89be8+'\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20cacheData,\x20\x27static\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Return\x20dengan\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20return\x20data.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4cf958+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0xc89be8+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.'+_0x4cf958+_0xbc853b(0x218)+_0x20fe55+_0xbc853b(0x362)+_0x4cf958+'\x27,\x20\x27'+_0xc89be8+_0xbc853b(0x1ca)+JSON['stringify'](_0x35b0b3['textFields']||[])+_0xbc853b(0x37c)+_0x4cf958+_0xbc853b(0x36b)+_0xc89be8+_0xbc853b(0x3be)+_0x4cf958+_0xbc853b(0x2b3)+_0xc89be8+_0xbc853b(0x386)+(_0x5d365d?'WHERE\x20'+_0x5d365d+'\x20':'')+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Bangun\x20WHERE\x20clause\x20jika\x20ada\x20dan\x20tidak\x20kosong\x0a\x20\x20\x20\x20\x20\x20if\x20((options.where\x20&&\x20Array.isArray(options.where)\x20&&\x20options.where.length\x20>\x200)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(options.where\x20&&\x20options.where.conditions\x20&&\x20Array.isArray(options.where.conditions)\x20&&\x20options.where.conditions.length\x20>\x200))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20whereResult\x20=\x20this.buildComplexWhereClause(options.where,\x20params,\x20paramIndex);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`'+(_0x5d365d?_0x472490['bGYSX']:_0x472490['OrsMm'])+_0xbc853b(0x2d0)+(_0x5d365d?')':'')+_0xbc853b(0x1e2)+_0x4cf958+'\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(direction\x20!==\x20\x27ASC\x27\x20&&\x20direction\x20!==\x20\x27DESC\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${column}\x20${direction}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).filter(Boolean);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(orderParts.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27No\x20valid\x20sort\x20columns\x20provided\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${orderParts.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Order\x20by\x20text\x20field\x20(gunakan\x20alias\x20jika\x20ada)\x20-\x20default\x20behavior\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${aliasField\x20||\x20textField}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20DEBUG\x20'+_0x26f51d[_0xbc853b(0x24d)]()+'\x20LOOKUP\x20WITH\x20FILTER\x20===\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Final\x20SQL:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Parameters:\x27,\x20params);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Selected\x20columns:\x27,\x20selectColumns);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Sort\x20columns:\x27,\x20options.sort_columns\x20||\x20\x27none\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Valid\x20fields\x20for\x20ordering:\x27,\x20this.validFields);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Text\x20field:\x27,\x20textField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Alias\x20field:\x27,\x20aliasField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20END\x20DEBUG\x20===\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Eksekusi\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20hasil\x20untuk\x20lookup\x20(id\x20dan\x20text)\x20-\x20gunakan\x20alias\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20textFieldName\x20=\x20aliasField\x20||\x20textField;\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4cf958+_0xbc853b(0x25d)+_0xc89be8+'\x20||\x20item.name\x20||\x20item.code\x20||\x20item.description\x20||\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20the\x20result\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20result,\x20\x27filter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataWithFilter\x20('+_0x20fe55+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}';}function buildAdvancedQuerySection(_0x5d3cca){const _0x570ac0=a0_0x44a2,_0x1b3320=_0x5d3cca['advancedQueries']||{};if(Object[_0x570ac0(0x293)](_0x1b3320)[_0x570ac0(0x33a)]===0x0)return _0x570ac0(0x3a5);return'\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20const\x20queryDefinitions\x20=\x20{\x0a'+Object[_0x570ac0(0x2da)](_0x1b3320)[_0x570ac0(0x1db)](([_0xf2937c,_0x195526])=>'\x20\x20\x20\x20\x20\x20\x22'+_0xf2937c+_0x570ac0(0x2de)+JSON[_0x570ac0(0x351)](_0x195526))[_0x570ac0(0x2ca)](',\x0a')+'\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20for\x20(const\x20[queryName,\x20querySource]\x20of\x20Object.entries(queryDefinitions))\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cek\x20apakah\x20string\x20dimulai\x20dengan\x20\x22file:\x22\x20untuk\x20menentukan\x20apakah\x20ini\x20path\x20file\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20querySource\x20===\x20\x27string\x27\x20&&\x20querySource.startsWith(\x27file:\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ambil\x20path\x20relatif\x20dari\x20querySource\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20relativePath\x20=\x20querySource.replace(\x27file:\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20filePath\x20=\x20path.join(__dirname,\x20relativePath);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Attempting\x20to\x20read\x20template\x20file\x20${queryName}\x20from\x20path:\x20${filePath}`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fs.existsSync(filePath))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20fs.readFileSync(filePath,\x20\x27utf8\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`SQL\x20template\x20${queryName}\x20loaded\x20successfully\x20from\x20file:\x20${relativePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`SQL\x20template\x20file\x20${queryName}\x20not\x20found:\x20${filePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Jika\x20bukan\x20path\x20file,\x20gunakan\x20string\x20SQL\x20langsung\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20querySource;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`SQL\x20template\x20${queryName}\x20loaded\x20successfully\x20from\x20SQL\x20string`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20loading\x20SQL\x20template\x20${queryName}:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20templates[queryName]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}';}function buildQueryLoadingCode(_0x125f9d,_0x452f29){const _0x595a83=a0_0x44a2,_0x4d0573={'bXtaa':_0x595a83(0x328)};if(!_0x125f9d)return _0x595a83(0x28a);const _0xfac7ce=_0x125f9d['replace'](/\$\{tableName\}/g,_0x4d0573['bXtaa'])[_0x595a83(0x318)](/\$\{this\.table\}/g,_0x4d0573['bXtaa']);return _0x595a83(0x3b2)+_0xfac7ce+'`.trim();';}function buildFieldMappingCode(_0x588c21){const _0x538fc9=a0_0x44a2,_0xd3e34d=_0x588c21[_0x538fc9(0x1e1)]||{};return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20field\x20mapping\x20untuk\x20berbagai\x20operasi\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Field\x20mapping\x20object\x0a\x20\x20\x20*/\x0a\x20\x20getFieldMapping()\x20{\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20allFields:\x20this.validFields,\x0a\x20\x20\x20\x20\x20\x20textFields:\x20'+JSON['stringify'](_0xd3e34d[_0x538fc9(0x3a7)]||[])+_0x538fc9(0x258)+JSON[_0x538fc9(0x351)](_0xd3e34d['dateFields']||[])+_0x538fc9(0x2d7)+JSON[_0x538fc9(0x351)](_0xd3e34d[_0x538fc9(0x28f)]||[])+_0x538fc9(0x2d6)+(_0xd3e34d['primaryTextField']||'name')+'\x27,\x0a\x20\x20\x20\x20\x20\x20searchableFields:\x20this.getSearchableColumns\x20?\x20this.getSearchableColumns().map(col\x20=>\x20col.name)\x20:\x20[]\x0a\x20\x20\x20\x20};\x0a\x20\x20}';}function _generateValidationConfig(_0x3fd47e){const _0x9af577=a0_0x44a2,_0x2df82a={'UFKpw':'\x0a\x20\x20\x20\x20\x20\x20','JlvVm':function(_0x145ee7,_0x107e09){return _0x145ee7===_0x107e09;},'rjsCN':'\x20\x20\x20\x20this.validationConfig\x20=\x20{};\x20//\x20No\x20field\x20validation\x20config\x0a'};if(!_0x3fd47e||!Array[_0x9af577(0x391)](_0x3fd47e)||_0x2df82a[_0x9af577(0x368)](_0x3fd47e['length'],0x0))return _0x2df82a[_0x9af577(0x28b)];const _0x33166b=_0x3fd47e['map'](_0x443422=>{const _0x4cee59=_0x9af577,_0x7c8362=JSON['stringify'](_0x443422[_0x4cee59(0x27c)]||{},null,0x6)['replace'](/\n/g,_0x2df82a[_0x4cee59(0x2c2)]);return'\x20\x20\x20\x20\x20\x20\x27'+_0x443422['name']+_0x4cee59(0x21c)+_0x443422['type']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20constraints:\x20'+_0x7c8362+_0x4cee59(0x3b4);})['join'](',\x0a');return _0x9af577(0x22a)+_0x33166b+_0x9af577(0x22c);}function _generateValidateFieldConstraints(){const _0x525393=a0_0x44a2;return _0x525393(0x1c3);}function generateCompositeMethods(_0x4834d2){const _0x2d55d5=a0_0x44a2,_0x30de79={'HbaZa':function(_0x49b437,_0x4d485b){return _0x49b437===_0x4d485b;},'GlGvD':_0x2d55d5(0x366),'lwspH':_0x2d55d5(0x27a),'ESJun':function(_0x46b54c,_0x166321){return _0x46b54c+_0x166321;},'XPlDU':function(_0xd7ceb8,_0x58331e){return _0xd7ceb8>_0x58331e;},'tmmlq':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured'},_0x30c539=_0x4834d2['action']||{},_0x106654=_0x4834d2['masterDetail']&&_0x4834d2[_0x2d55d5(0x2bd)][_0x2d55d5(0x2b8)];if(!_0x106654||!_0x30c539['createComposite']&&!_0x30c539[_0x2d55d5(0x30b)]&&!_0x30c539['readComposite'])return'';const _0x14da1f=_0x4834d2['masterDetail']['detailTable'],_0x26b1d4=_0x4834d2[_0x2d55d5(0x2bd)]['foreignKey'],_0x4956ef=_0x4834d2[_0x2d55d5(0x282)]||'id';let _0x35dbc2='\x0a';if(_0x30c539[_0x2d55d5(0x387)]){const _0x1d71de=_0x4834d2['masterDetail']?.['detailConfig']?.[_0x2d55d5(0x282)]||_0x14da1f[_0x2d55d5(0x36d)]('.')['pop']()+_0x2d55d5(0x2c7),_0x25b4eb=_0x4834d2['masterDetail']?.['detailConfig']?.[_0x2d55d5(0x1f3)]||{},_0x4e7a59=[],_0x48183a=[];for(const [_0x4d76f3,_0x1b07c0]of Object[_0x2d55d5(0x2da)](_0x25b4eb)){if(_0x1b07c0['type']==='generated')_0x4e7a59['push'](_0x4d76f3);else{const _0x40756a=(_0x1b07c0['formula']||'')['split']('*')['map'](_0x28f8bd=>_0x28f8bd[_0x2d55d5(0x383)]());_0x48183a[_0x2d55d5(0x270)]({'fieldName':_0x4d76f3,'qtyField':_0x40756a[0x0],'priceField':_0x40756a[0x1]});}}const _0x9ce348=_0x48183a[_0x2d55d5(0x1db)](_0x332695=>{const _0x49bee6=_0x2d55d5;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x332695[_0x49bee6(0x2a2)]+_0x49bee6(0x3bd)+_0x332695['qtyField']+'\x20*\x20'+_0x332695[_0x49bee6(0x2ee)]+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x332695['fieldName']+'\x20=\x20(Number(item.'+_0x332695['qtyField']+_0x49bee6(0x2ac)+_0x332695['priceField']+')\x20||\x200);';})['join']('\x0a');_0x35dbc2+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20create\x20-\x20Create\x20header\x20with\x20detail\x20items\x20in\x20a\x20single\x20transaction\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail\x20items\x20array\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Created\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20createComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x14da1f['split']('.')[_0x2d55d5(0x315)]()+'\x27;\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeInsert\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailItems\x20=\x20data[detailKey]\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeCtx\x20=\x20CB.buildCompositeInsertBeforeContext(headerData,\x20detailItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x4834d2['tableName']+_0x2d55d5(0x1bd)+_0x14da1f+_0x2d55d5(0x334)+_0x26b1d4+_0x2d55d5(0x364)+_0x14da1f+_0x2d55d5(0x1d7)+_0x26b1d4+_0x2d55d5(0x277)+(_0x4e7a59['length']>0x0?'const\x20generatedFields\x20=\x20'+JSON[_0x2d55d5(0x351)](_0x4e7a59)+';':'')+_0x2d55d5(0x3a2)+_0x1d71de+_0x2d55d5(0x355)+(_0x9ce348?'\x0a'+_0x9ce348+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4e7a59[_0x2d55d5(0x33a)]>0x0?_0x2d55d5(0x32c):'')+_0x2d55d5(0x29a)+_0x4834d2[_0x2d55d5(0x2b1)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x14da1f+_0x2d55d5(0x334)+_0x26b1d4+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterResult\x20=\x20await\x20ce.executeOnAfterComposite(\x27insert\x27,\x20afterCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onAfterCompositeInsert\x20failed:\x20${afterResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Transaction\x20committed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20...insertedHeader,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20insertedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20createComposite:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}if(_0x30c539['updateComposite']){const _0x2e55ed=_0x4834d2['masterDetail']?.[_0x2d55d5(0x1ef)]?.['primaryKey']||_0x14da1f[_0x2d55d5(0x36d)]('.')[_0x2d55d5(0x315)]()+'_id',_0x749717=_0x4834d2['masterDetail']?.[_0x2d55d5(0x27d)]||null,_0x3d326c=_0x4834d2[_0x2d55d5(0x2bd)]?.['detailConfig']?.['autoCalculateFields']||{},_0x13e855=[],_0x1545db=[];for(const [_0x52d4bb,_0x26ab88]of Object['entries'](_0x3d326c)){if(_0x30de79['HbaZa'](_0x26ab88['type'],'generated'))_0x13e855[_0x2d55d5(0x270)](_0x52d4bb);else{const _0x82a849=(_0x26ab88['formula']||'')['split']('*')[_0x2d55d5(0x1db)](_0x25c1f9=>_0x25c1f9['trim']());_0x1545db['push']({'fieldName':_0x52d4bb,'qtyField':_0x82a849[0x0],'priceField':_0x82a849[0x1]});}}const _0x1d47f9=_0x1545db[_0x2d55d5(0x1db)](_0x17a09d=>{const _0x27be60=_0x2d55d5;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x17a09d[_0x27be60(0x2a2)]+_0x27be60(0x3bd)+_0x17a09d[_0x27be60(0x32e)]+_0x27be60(0x211)+_0x17a09d[_0x27be60(0x2ee)]+_0x27be60(0x236)+_0x17a09d['fieldName']+'\x20=\x20(Number(item.'+_0x17a09d[_0x27be60(0x32e)]+_0x27be60(0x2ac)+_0x17a09d[_0x27be60(0x2ee)]+')\x20||\x200);';})['join']('\x0a'),_0x1139b5=_0x4834d2['masterDetail']?.[_0x2d55d5(0x1ef)]?.[_0x2d55d5(0x1f3)]?.['total_amount']?.['formula']||'',_0x426499=_0x1139b5[_0x2d55d5(0x36d)]('*')['map'](_0xd23eff=>_0xd23eff[_0x2d55d5(0x383)]()),_0x4de76f=_0x4834d2[_0x2d55d5(0x2bd)]?.[_0x2d55d5(0x27d)]?.[_0x2d55d5(0x30a)]?.[_0x2d55d5(0x3ab)]?.['replace'](_0x30de79['GlGvD'],'')||'',_0x1590d9=_0x426499[0x0]||_0x4de76f,_0x182aff=_0x426499[0x1]||_0x30de79['lwspH'];_0x35dbc2+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20update\x20-\x20Update\x20header\x20with\x20granular\x20detail\x20operations\x20(insert/update/delete)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail_lines\x20with\x20insert/update/delete\x20arrays\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Updated\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20updateComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20primary\x20key\x20value\x0a\x20\x20\x20\x20\x20\x20const\x20primaryKeyValue\x20=\x20data[this.primaryKey];\x0a\x20\x20\x20\x20\x20\x20if\x20(!primaryKeyValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Primary\x20key\x20${this.primaryKey}\x20is\x20required\x20for\x20update`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20record\x20exists\x20(also\x20serves\x20as\x20prefetch\x20oldData\x20for\x20hooks)\x0a\x20\x20\x20\x20\x20\x20const\x20checkQuery\x20=\x20`SELECT\x20*\x20FROM\x20${this.writeSource}\x20WHERE\x20${this.primaryKey}\x20=\x20$1`;\x0a\x20\x20\x20\x20\x20\x20const\x20checkResult\x20=\x20await\x20client.query(checkQuery,\x20[primaryKeyValue]);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(checkResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20oldData\x20=\x20checkResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items\x20and\x20primary\x20key)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x14da1f[_0x2d55d5(0x36d)]('.')[_0x2d55d5(0x315)]()+'\x27;\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[this.primaryKey];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeUpdate\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailOps\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeCtx\x20=\x20CB.buildCompositeUpdateBeforeContext(headerData,\x20oldData,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20insert:\x20detailOps.insert\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20update:\x20detailOps.update\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delete:\x20detailOps.delete\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x4834d2['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x14da1f+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x26b1d4+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeResult\x20=\x20await\x20ce.executeOnBeforeComposite(\x27update\x27,\x20beforeCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onBeforeCompositeUpdate\x20failed:\x20${beforeResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20placeholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(`${key}\x20=\x20$${placeholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20const\x20headerUpdateQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${headerFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${placeholderIndex}\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20headerUpdateQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerUpdateQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20updatedHeader\x20=\x20headerResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20updated\x20successfully:\x20${this.primaryKey}=${primaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Process\x20detail\x20items\x20with\x20insert/update/delete\x20pattern\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x14da1f+_0x2d55d5(0x1d7)+_0x26b1d4+_0x2d55d5(0x303)+_0x2e55ed+_0x2d55d5(0x277)+(_0x13e855[_0x2d55d5(0x33a)]>0x0?_0x2d55d5(0x1f9)+JSON['stringify'](_0x13e855)+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailOperations\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20insert:\x20insertItems\x20=\x20[],\x20update:\x20updateItems\x20=\x20[],\x20delete:\x20deleteItems\x20=\x20[]\x20}\x20=\x20detailOperations;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20updatedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Process\x20DELETE\x20operations\x20first\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20deleteItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20delete\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteQuery\x20=\x20`DELETE\x20FROM\x20${detailTableName}\x20WHERE\x20${detailPrimaryKey}\x20=\x20$1\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteResult\x20=\x20await\x20client.query(deleteQuery,\x20[item[detailPrimaryKey]]);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(deleteResult.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deletedItems.push(deleteResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Deleted\x20${deletedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Process\x20UPDATE\x20operations\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20updateItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20update\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a'+(_0x1d47f9?_0x30de79['ESJun']('\x0a',_0x1d47f9)+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(key\x20===\x20detailPrimaryKey)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x30de79['XPlDU'](_0x13e855['length'],0x0)?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+_0x2d55d5(0x1ce)+(_0x1d47f9?_0x30de79[_0x2d55d5(0x398)]('\x0a'+_0x1d47f9,'\x0a'):'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x30de79['XPlDU'](_0x13e855['length'],0x0)?_0x2d55d5(0x32c):'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20new\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Get\x20all\x20current\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsQuery\x20=\x20`SELECT\x20*\x20FROM\x20${detailTableName}\x20WHERE\x20${foreignKey}\x20=\x20$1\x20ORDER\x20BY\x20line_number`;\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsResult\x20=\x20await\x20client.query(allItemsQuery,\x20[primaryKeyValue]);\x0a\x20\x20\x20\x20\x20\x20const\x20allItems\x20=\x20allItemsResult.rows;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Recalculate\x20header\x20totals\x20from\x20final\x20items\x0a\x20\x20\x20\x20\x20\x20'+(_0x749717?_0x2d55d5(0x3bc)+JSON['stringify'](_0x749717)+_0x2d55d5(0x33f)+(_0x1590d9?'if\x20(calculations.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalAmount\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x1590d9+_0x2d55d5(0x3b3)+_0x182aff+_0x2d55d5(0x204):_0x30de79[_0x2d55d5(0x29d)])+'\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(recalculatedFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20ke\x20recalc\x20UPDATE\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalcPlaceholder\x20=\x20this._appendUpdateAuditColumns(recalculatedFields,\x20recalculatedValues,\x20data,\x20eventContext,\x20recalcPlaceholder);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${recalculatedFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${recalcPlaceholder}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Recalculating\x20header\x20totals:\x27,\x20{\x20query:\x20recalcQuery,\x20values:\x20recalculatedValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcResult\x20=\x20await\x20client.query(recalcQuery,\x20recalculatedValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20Object.assign(updatedHeader,\x20recalcResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20':'')+_0x2d55d5(0x2f1)+_0x4834d2[_0x2d55d5(0x2b1)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x14da1f+_0x2d55d5(0x334)+_0x26b1d4+_0x2d55d5(0x2e5);}if(_0x30c539['readComposite']){const _0x43b3e6=_0x4834d2['masterDetail']?.[_0x2d55d5(0x1ef)]?.['detailQuery']||null;let _0x50b571;_0x43b3e6?_0x50b571=_0x2d55d5(0x28e)+_0x43b3e6+'`;':_0x50b571=_0x2d55d5(0x324)+_0x14da1f+_0x2d55d5(0x3a4)+_0x26b1d4+_0x2d55d5(0x2c1),_0x35dbc2+=_0x2d55d5(0x200)+_0x14da1f['split']('.')[_0x2d55d5(0x315)]()+_0x2d55d5(0x277)+_0x50b571+_0x2d55d5(0x273);}return _0x35dbc2;}function generateSoftDeleteOverride(_0x1187df){const _0x2bbed3=a0_0x44a2,_0x4b9150={'ebEfF':function(_0xddbe9a,_0x11cde0){return _0xddbe9a===_0x11cde0;}},_0xf228f4=_0x1187df['primaryKey']||_0x1187df[_0x2bbed3(0x2a2)]&&_0x1187df['fieldName'][0x0]||'id',_0x191449=_0x1187df[_0x2bbed3(0x339)]&&Array[_0x2bbed3(0x391)](_0x1187df[_0x2bbed3(0x339)][_0x2bbed3(0x265)])?_0x1187df['softDelete'][_0x2bbed3(0x265)]:[];if(hasCascadeChildren(_0x1187df))return generateSoftDeleteCascadeOverride(_0x1187df);const _0x3a05e3=Array[_0x2bbed3(0x391)](_0x1187df[_0x2bbed3(0x380)])?_0x1187df['softDeleteFkChildren']['filter'](_0x3b53fc=>_0x3b53fc&&_0x3b53fc[_0x2bbed3(0x212)]==='restrict'&&typeof _0x3b53fc[_0x2bbed3(0x36e)]===_0x2bbed3(0x1c1)&&_0x3b53fc[_0x2bbed3(0x36e)]&&Array['isArray'](_0x3b53fc['childColumns'])&&_0x3b53fc['childColumns']['length']===0x1&&typeof _0x3b53fc['childColumns'][0x0]==='string'&&typeof _0x3b53fc[_0x2bbed3(0x313)]==='string'&&_0x3b53fc[_0x2bbed3(0x313)]):[],_0x4bcb23=[_0xf228f4];for(const _0x3a9c0a of _0x191449){if(_0x3a9c0a&&_0x3a9c0a['field']&&!_0x4bcb23[_0x2bbed3(0x1d5)](_0x3a9c0a[_0x2bbed3(0x38a)]))_0x4bcb23['push'](_0x3a9c0a[_0x2bbed3(0x38a)]);}for(const _0x5b1e3d of _0x3a05e3){if(!_0x4bcb23['includes'](_0x5b1e3d[_0x2bbed3(0x313)]))_0x4bcb23['push'](_0x5b1e3d[_0x2bbed3(0x313)]);}const _0x1e1b0a=_0x4bcb23[_0x2bbed3(0x2ca)](',\x20'),_0x57ec19=_0x3a05e3['map']((_0x597e00,_0x4eb58a)=>{const _0x3eabe1=_0x2bbed3,_0x42efff=_0x597e00[_0x3eabe1(0x36e)],_0x32b368=_0x597e00[_0x3eabe1(0x215)][0x0],_0x497b5f=_0x597e00['parentColumn'],_0x4e1e34=_0x4b9150['ebEfF'](_0x597e00['childSoftDelete'],!![]),_0x3f5492=_0x4e1e34?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'';return _0x3eabe1(0x213)+_0x4eb58a+_0x3eabe1(0x2f5)+_0x42efff+'\x27.'+_0x32b368+_0x3eabe1(0x37f)+_0x497b5f+_0x3eabe1(0x2b4)+_0x4e1e34+_0x3eabe1(0x342)+_0x497b5f+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictVal\x20!==\x20null\x20&&\x20__restrictVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x42efff+'\x20WHERE\x20'+_0x32b368+_0x3eabe1(0x376)+_0x3f5492+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27'+_0x42efff+'\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x2bbed3(0x2ca)](''),_0x40315c=_0x191449[_0x2bbed3(0x1db)](_0x3d9002=>{const _0x537472=_0x2bbed3,_0x3fd1b7=_0x3d9002[_0x537472(0x38a)],_0x597884=_0x3d9002[_0x537472(0x33a)];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20reusable\x20\x27'+_0x3fd1b7+'\x27\x20(base\x20length\x20'+_0x597884+')\x20→\x20original\x20+\x20\x27##\x27\x20+\x20uuidv7()\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20lockedRow[\x27'+_0x3fd1b7+_0x537472(0x2e4)+_0x597884+_0x537472(0x2a0)+_0x3fd1b7+_0x537472(0x369)+_0x597884+_0x537472(0x1e8)+_0x3fd1b7+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})['join']('');return _0x2bbed3(0x25f)+DELETED_BY_COLUMN+_0x2bbed3(0x1bf)+_0x1e1b0a+'\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+_0x2bbed3(0x1cc)+_0x57ec19+_0x40315c+_0x2bbed3(0x244)+IS_DELETED_COLUMN+_0x2bbed3(0x331)+DELETED_AT_COLUMN+'\x20=\x20NOW()\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+_0x2bbed3(0x23e)+_0xf228f4+'\x27]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateQuery\x20=\x20\x27UPDATE\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20'+_0xf228f4+_0x2bbed3(0x363);}function generateSoftDeleteCascadeOverride(_0x3e211e){const _0x283ac7=a0_0x44a2,_0x36443e=_0x3e211e['softDeleteCascadeTree'];return _0x283ac7(0x2ed)+JSON[_0x283ac7(0x351)](_0x36443e)+';\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x20\x20\x20\x20//\x20deleted_by:\x20body\x20eksplisit\x20→\x20eventContext.additionalContext.user_id\x20→\x20\x27system\x27.\x20Resolusi\x0a\x20\x20\x20\x20//\x20yang\x20SAMA\x20dipakai\x20untuk\x20master\x20DAN\x20seluruh\x20descendant\x20pada\x20cascade\x20(FK-SD-3\x20#6).\x0a\x20\x20\x20\x20const\x20deletedBy\x20=\x20this._resolveAuditUserId(criteria,\x20eventContext,\x20\x27'+DELETED_BY_COLUMN+_0x283ac7(0x262)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x27\x20+\x20__activeFilter\x20+\x20\x27\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27\x22\x20+\x20ch.childTable\x20+\x20\x22\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(2)\x20soft-delete\x20node:\x20mutasi\x20reusable\x20(overflow\x20guard,\x20defense\x20in\x20depth)\x20+\x20set\x20kolom\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20soft-delete.\x20CHECK\x20konsistensi\x20terpenuhi\x20(reusable\x20termutasi\x20bersama\x20is_deleted=TRUE).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20current.row[ru.field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__orig\x20===\x20null\x20||\x20__orig\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__str\x20=\x20String(__orig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__str.length\x20>\x20ru.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete\x20cascade:\x20column\x20\x27\x20+\x20ru.field\x20+\x20\x27\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20on\x20\x27\x20+\x20current.table\x20+\x20\x27\x20exceeds\x20base\x20length\x20\x27\x20+\x20ru.length\x20+\x20\x27;\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(ru.field\x20+\x20\x27\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+'\x20=\x20NOW()\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+_0x283ac7(0x1d6)+IS_DELETED_COLUMN+_0x283ac7(0x224)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20aktif:\x20tidak\x20ditemukan,\x20sudah\x20ter-soft-delete,\x20atau\x20kalah\x20race.\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20already\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Walk\x20cascade:\x20soft-delete\x20master\x20+\x20seluruh\x20descendant\x20cascade\x20dalam\x20transaksi\x20ini.\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Restrict-per-node\x20409\x20/\x20overflow\x20→\x20throw\x20→\x20ROLLBACK\x20(atomic\x20all-or-nothing).\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20masterDeletedItems,\x20touched\x20}\x20=\x20await\x20__cascadeSoftDelete(client,\x20lockResult.rows,\x20deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Invalidasi\x20cache.\x20Master:\x20this.invalidateCache()\x20existing\x20(jalur\x20custom\x20tidak\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20auto-invalidate;\x20bila\x20terlewat\x20/datatables\x20&\x20/read\x20ter-cache\x20menyajikan\x20record\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Descendant\x20lintas-tabel\x20(FK-SD-3\x20Phase\x2004c,\x20D-2-enhanced):\x20master\x20TIDAK\x20tahu\x20path\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20(module/endpoint\x20berasal\x20dari\x20endpoint-create,\x20bukan\x20SDF\x20closure),\x20sehingga\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20me-REPLIKASI\x20logika\x20invalidateCache()\x20untuk\x20tiap\x20tabel\x20descendant\x20tersentuh,\x20diturunkan\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20dari\x20NAMA\x20TABEL.\x20Cache\x20key\x20descendant\x20murni\x20turunan\x20tableName\x20bare\x20yang\x20dipass\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20ke\x20super()\x20(single-schema\x20\x27public\x27\x20Fase\x201.5,\x20terverifikasi:\x20cacheModule=\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x27default\x27);\x20closure\x20membawa\x20qualified\x20(schema.table)\x20sehingga\x20schema\x20di-strip\x20agar\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20module/endpoint\x20IDENTIK\x20dengan\x20invalidateCache()\x20descendant.\x20Post-COMMIT\x20+\x20graceful:\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20kegagalan\x20invalidasi\x20cache\x20tidak\x20membatalkan\x20soft-delete\x20(konsisten\x20BaseModel).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x20\x20\x20\x20\x20\x20if\x20(this.cacheEnabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheMgr\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-manager\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheReg\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-invalidation-registry\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__prefix\x20=\x20__cacheMgr.prefix;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__t\x20of\x20touched)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Master\x20sudah\x20di-invalidate\x20via\x20this.invalidateCache()\x20existing\x20→\x20hindari\x20dobel.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__t\x20===\x20__sdCascadeMeta.master)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Strip\x20schema\x20→\x20bentuk\x20bare\x20yang\x20dipakai\x20model\x20descendant\x20pada\x20super(tableName).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20extractCacheModule\x20atas\x20nama\x20bare\x20→\x20\x27default\x27;\x20extractCacheEndpoint\x20→\x20bare\x20itu\x20sendiri.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__bare\x20=\x20__t.indexOf(\x27.\x27)\x20>=\x200\x20?\x20__t.substring(__t.lastIndexOf(\x27.\x27)\x20+\x201)\x20:\x20__t;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__mod\x20=\x20\x27default\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__ep\x20=\x20__bare;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20__cacheMgr.invalidatePattern(__prefix\x20+\x20__mod\x20+\x20\x27:\x27\x20+\x20__ep\x20+\x20\x27:*\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cascade\x20processor/dashboard\x20yang\x20bergantung\x20pada\x20tabel\x20descendant\x20(registry\x20by-endpoint).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__regPatterns\x20=\x20__cacheReg.getInvalidationPatterns(__ep,\x20__prefix);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__rp\x20of\x20__regPatterns)\x20await\x20__cacheMgr.invalidatePattern(__rp);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Graceful\x20—\x20kegagalan\x20invalidasi\x20cache\x20descendant\x20tidak\x20membatalkan\x20soft-delete.\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Successfully\x20deleted\x20\x27\x20+\x20masterDeletedItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_count:\x20masterDeletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_items:\x20masterDeletedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}function generateDeleteMethod(_0x1279a3){const _0x44a8a3=a0_0x44a2,_0x1c2a4a=_0x1279a3[_0x44a8a3(0x250)]||{},_0x358019=_0x1279a3['masterDetail']&&_0x1279a3[_0x44a8a3(0x2bd)][_0x44a8a3(0x2b8)],_0x421e98=_0x1279a3['masterDetail']?.['cascadeDelete']||![];if(!_0x1c2a4a['delete'])return'';const _0x18f0eb=_0x1279a3['primaryKey']||'id';if(isSoftDeleteEnabled(_0x1279a3))return generateSoftDeleteOverride(_0x1279a3);if(!_0x358019)return'';const _0x546acd=_0x1279a3[_0x44a8a3(0x2bd)]['detailTable'],_0xd71ea=_0x1279a3[_0x44a8a3(0x2bd)][_0x44a8a3(0x32a)];let _0x917cc4='\x0a';return _0x917cc4+=_0x44a8a3(0x26a)+(_0x421e98?_0x44a8a3(0x3bb)+_0x546acd+_0x44a8a3(0x2af)+_0x18f0eb+_0x44a8a3(0x264)+_0x18f0eb+'\x27];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20DELETE\x20child\x20records\x20menggunakan\x20foreignKey\x0a\x20\x20\x20\x20\x20\x20const\x20deleteChildQuery\x20=\x20`DELETE\x20FROM\x20'+_0x546acd+_0x44a8a3(0x3a4)+_0xd71ea+_0x44a8a3(0x214)+_0x546acd+'`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20DELETE\x20header\x20record\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderQuery\x20=\x20`DELETE\x20FROM\x20${this.writeSource}\x20WHERE\x20${whereClause}\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderResult\x20=\x20await\x20client.query(deleteHeaderQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(deleteHeaderResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedData\x20=\x20deleteHeaderResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Header\x20record\x20deleted\x20successfully\x27);\x0a\x20\x20\x20\x20\x20\x20':_0x44a8a3(0x2d3))+'\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Data\x20successfully\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20deletedData'+(_0x421e98?',\x0a\x20\x20\x20\x20\x20\x20\x20\x20deletedChildRecords:\x20deleteChildResult.rowCount':'')+_0x44a8a3(0x375),_0x917cc4;}function generateSoftDeleteRestoreOverride(_0xa67499){const _0x5601da=a0_0x44a2,_0x38ca79={'uNWXI':'\x20AND\x20'},_0x47057a=_0xa67499[_0x5601da(0x282)]||_0xa67499['fieldName']&&_0xa67499[_0x5601da(0x2a2)][0x0]||'id',_0xf1e76b=_0xa67499[_0x5601da(0x339)]&&Array['isArray'](_0xa67499['softDelete']['reusable'])?_0xa67499[_0x5601da(0x339)]['reusable']:[],_0x35d76f=Array['isArray'](_0xa67499[_0x5601da(0x397)])?_0xa67499[_0x5601da(0x397)][_0x5601da(0x353)](_0x685a68=>_0x685a68&&Array[_0x5601da(0x391)](_0x685a68[_0x5601da(0x2e7)])&&_0x685a68['columns']['length']>0x0&&typeof _0x685a68[_0x5601da(0x225)]===_0x5601da(0x1c1)&&_0x685a68['refTable']&&Array['isArray'](_0x685a68['refColumns'])&&_0x685a68['refColumns']['length']===_0x685a68[_0x5601da(0x2e7)][_0x5601da(0x33a)]):[],_0x5682bd=[_0x47057a];for(const _0x9a1416 of _0xf1e76b){if(_0x9a1416&&_0x9a1416[_0x5601da(0x38a)]&&!_0x5682bd['includes'](_0x9a1416[_0x5601da(0x38a)]))_0x5682bd['push'](_0x9a1416[_0x5601da(0x38a)]);}for(const _0x563ce0 of _0x35d76f){for(const _0x255ca3 of _0x563ce0['columns']){if(_0x255ca3&&!_0x5682bd['includes'](_0x255ca3))_0x5682bd[_0x5601da(0x270)](_0x255ca3);}}const _0x5d0df4=_0x5682bd[_0x5601da(0x2ca)](',\x20'),_0x16e838=_0xf1e76b['map'](_0x55823d=>{const _0x212d64=_0x5601da,_0xd9fccb=_0x55823d['field'],_0x2ed0cb=_0x55823d[_0x212d64(0x33a)];return _0x212d64(0x358)+_0xd9fccb+'\x27\x20(base\x20length\x20'+_0x2ed0cb+'):\x20strip\x20suffix\x20\x27##\x27\x20+\x20konflik\x20409\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cur\x20=\x20lockedRow[\x27'+_0xd9fccb+_0x212d64(0x2bb)+_0xd9fccb+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20AND\x20'+_0x47057a+'\x20<>\x20$2\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__original,\x20lockedRow[\x27'+_0x47057a+_0x212d64(0x1f7)+_0xd9fccb+_0x212d64(0x28c)+_0xd9fccb+_0x212d64(0x302);})['join'](''),_0xd5ae2=_0x35d76f['map']((_0x1dd74f,_0x49b0aa)=>{const _0x2d20a2=_0x5601da,_0x5d3629=_0x1dd74f['parentSoftDelete']===!![],_0x3b7aa9=_0x1dd74f[_0x2d20a2(0x225)],_0x259721=_0x1dd74f[_0x2d20a2(0x2e7)]['map'](_0x268a3e=>_0x2d20a2(0x1bb)+_0x268a3e+'\x27]')[_0x2d20a2(0x2ca)](',\x20'),_0x3e9424=_0x1dd74f['refColumns'][_0x2d20a2(0x1db)]((_0x4f8dbe,_0xe3d8eb)=>_0x4f8dbe+_0x2d20a2(0x233)+(_0xe3d8eb+0x1))['join'](_0x38ca79[_0x2d20a2(0x399)]),_0x88e609=_0x5d3629?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'',_0x26162e=_0x5d3629?_0x2d20a2(0x338):_0x2d20a2(0x1f4);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x49b0aa+'\x20→\x20'+_0x3b7aa9+_0x2d20a2(0x350)+_0x5d3629+_0x2d20a2(0x23a)+(_0x5d3629?_0x2d20a2(0x263):_0x2d20a2(0x2ec))+_0x2d20a2(0x2e8)+_0x259721+_0x2d20a2(0x336)+_0x3b7aa9+'\x20WHERE\x20'+_0x3e9424+_0x88e609+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20__fkVals\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkCheck.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fkError\x20=\x20new\x20Error(\x22Cannot\x20restore:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x3b7aa9+_0x2d20a2(0x1e4)+_0x26162e+'\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fkError.statusCode\x20=\x20422;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20fkError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})['join']('');return _0x5601da(0x2f8)+_0x5d0df4+'\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20TRUE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20terhapus:\x20tidak\x20ditemukan,\x20atau\x20record\x20aktif\x20(bukan\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20not\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Restore\x20tiap\x20row\x20terhapus\x20(strip\x20suffix\x20→\x20konflik\x20→\x20FK\x20→\x20reset).\x0a\x20\x20\x20\x20\x20\x20const\x20restoredItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20lockedRow\x20of\x20lockResult.rows)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a'+_0x16e838+_0xd5ae2+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x205.\x20Reset\x20kolom\x20soft-delete.\x20updated_*\x20TIDAK\x20disentuh\x20(konsisten\x20R14).\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+'\x20=\x20NULL\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+'\x20=\x20NULL\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x47057a+'\x27]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateQuery\x20=\x20\x27UPDATE\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20'+_0x47057a+'\x20=\x20$\x27\x20+\x20p\x20+\x20\x27\x20RETURNING\x20\x27\x20+\x20returningFields;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateResult\x20=\x20await\x20client.query(updateQuery,\x20updateParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(updateResult.rows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restoredItems.push(updateResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Invalidate\x20cache\x20setelah\x20COMMIT\x20(jalur\x20custom\x20wajib\x20eksplisit,\x20sama\x20seperti\x20R14).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Successfully\x20restored\x20\x27\x20+\x20restoredItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20restored_count:\x20restoredItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20restored_items:\x20restoredItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}function generateRestoreMethod(_0x56efa9){const _0x375d4a=a0_0x44a2,_0x422111=_0x56efa9[_0x375d4a(0x250)]||{};if(!_0x422111['restore']||!isSoftDeleteEnabled(_0x56efa9))return'';return generateSoftDeleteRestoreOverride(_0x56efa9);}function a0_0x5930(){const _0x16d2c7=['zgf0yxrHyMXLCW','zwPSCxO','DxbKyxrL','cIaGicbPzIaOixjLC3vSDc5KyxrHihX8ihjLC3vSDc5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','Dg90ywXFCxr5','DxbKyxrLq29TCg9ZAxrL','Dg9dyw1LBenHC2u','ihn0yxrPyYbSB29RDxa6jYWGzxjYB3iPoWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigzLDgnOAw5Nia','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbmB2nRigfJCxvPC2L0Aw9UigzHAwXLzaOGicaGAwyGkgvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0zHAwXLzcb0BYbHy3f1AxjLigXVy2SNksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdKPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNuMvZB3vYy2uGyNvZEsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGy2HHBMDPBMCGC3rHDhvZjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSk','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHihnHAMeGkgv4y2X1zguGzgv0ywLSksb1BNr1AYb2ywXPzgf0Aw9UcIaGicaGignVBNn0igHLywrLCKrHDgfgB3jwywXPzgf0Aw9Uid0GEYaUlI5KyxrHih07cIaGicaGia','oWOGigLMicHIExbHC3nsB2XLCY5Szw5NDgGGpIaWicyMigj5CgfZC1jVBgvZlNnVBwuOCM9Szsa9pIb1C2vYuM9SzxmUAw5JBhvKzxmOCM9SzsKPksb7cIaGicbYzxr1CM4GBMv4DcGPoWOGih0kcIaGlY8GuMvHzcbZy29Wzsb2ywX1zsbMCM9TihvZzxiGy29UDgv4DaOGignVBNn0ihnJB3bLvMfSDwuGpsa','zvDdDvC','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGyM9KEvbHCNnLCIa9ihjLCxvPCMuOj2jVzhKTCgfYC2vYjYK7cMnVBNn0ihbHDgGGpsbYzxf1AxjLkcDWyxrOjYK7cMnVBNn0igzZid0GCMvXDwLYzsGNzNmNktSky29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cMnVBNn0ihSGBg9Nz2vYlcbSB2Dtzxj2zxjszwfKEsWGBg9Nrw5KCg9PBNrszwDPC3rLCMvKlcbJCMvHDgvszxf1zxn0tg9Nz2vYlcbSB2Dszxf1zxn0ih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2XVz2DLCICPoWPJB25ZDcbfEhbVCNriyw5KBgvYid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9JB21WB25LBNrZl2HHBMrSzxjZl2v4Cg9YDf9Oyw5KBgvYjYK7cMnVBNn0ieLTCg9YDeHHBMrSzxiGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl2nVBxbVBMvUDhmVAgfUzgXLCNmVAw1WB3j0x2HHBMrSzxiNktSky29UC3qGvxbSB2fKsgfUzgXLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVy29TCg9Uzw50CY9Oyw5KBgvYCY91CgXVywrFAgfUzgXLCICPoWPJB25ZDcb7igv4DhjHy3rfEhbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rjBxbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rvCgXVywrdB25MAwDgCM9Trw5KCg9PBNqGFsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVy29UzMLNlwv4DhjHy3rVCICPoWPJB25ZDcbYyxrLtgLTAxrLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9YyxrLlwXPBwL0zxiNktSky29UC3qGAwrLBxbVDgvUy3LnAwrKBgv3yxjLid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9TAwrKBgv3yxjLl2LKzw1WB3rLBMn5jYK7cMnVBNn0igjVzhLpChrPB25ZtwLKzgXLD2fYzsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9IB2r5lw9WDgLVBNmNktSky29UC3qGy29YC01PzgrSzxDHCMuGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVy29YCYCPoWPJB25ZDcbZzwn1CML0EuHLywrLCNmGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVC2vJDxjPDhKTAgvHzgvYCYCPoWOklYOQcIaQia','CgfYzw50q29SDw1U','lMnOyw5Nzvn0yxr1C0rHDgeOCMvXlMjVzhKSihDVCMTMBg93q29UzMLNktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbdsefor0uTu1rbvfvtignVBxbSzxrLzcb3AxrOB3v0ignVBxbVBMvUDcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDieniqu5hrs1tvefuvvmGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','Cg9W','ihvUDhvRigXVB2T1CcbKzw5Nyw4GzMLSDgvYAw5NcNjVDxrLCI5WB3n0kcCVBg9VA3vWjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VifzHBgLKyxnPifGTuMvXDwvZDc1nB2rLigHLywrLCGOGicaGy29UC3qGCMvXDwvZDe1VzguGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lw1VzguNxtSkicaGignVBNnVBguUBg9NkgbylvjLCxvLC3qTtw9KzsbOzwfKzxiGzM9Yifbpu1qGBg9VA3vWoIaKE3jLCxvLC3rnB2rLFwaPoWOkicaGigLMicHYzxf1zxn0tw9KzsaHpt0Gj3n0yxrPyYCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGuMvXDwvZDcbnB2rLjYWkicaGicaGicbTzxnZywDLoIaNwc1szxf1zxn0lu1VzguGAgvHzgvYig11C3qGyMuGC2v0ihrVihn0yxrPyYbMB3iGue9tvcbTzxrOB2qNlaOGicaGicaGigrLDgfPBhm6icDdB250B2GGCgvUz2D1BMfHBJOGvgfTyMfOA2fUigHLywrLCIbylvjLCxvLC3qTtw9KztOGC3rHDgLJjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKcIaGicbPzIaOixjLCs5IB2r5ksb7cIaGicaGic8Vifn1ChbVCNqGDw50DwSGzMLLBgroyw1Ltg9VA3vWignVBMzPzWOGicaGicbJB25ZDcbSB29RDxbdB25MAwCGpsa','sw52ywXPzcbHDwrPDenVBhvTBNmGDMfSDwuGzM9Yia','CMvWBgfJzq','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','Dg9ju09tDhjPBMC','cIaQcIaQievUzhbVAw50CYb1BNr1AYa','jhTWyxLSB2fKlNrHyMXLtMfTzsb8FcaIDw5KzwzPBMvKx3rHyMXLiN0','t3rcqK4','zM9YzwLNBKTLEq','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzYWGzxzLBNrdB250zxH0','lY8Gu2TPCcbhru5fuKfuruqGquXxqvLtignVBhvTBNmkicaGicaGicaGigLMicHNzw5LCMf0zwrgAwvSzhmUAw5JBhvKzxmOA2v5ksKGy29UDgLUDwu7','oWOkicaGic8VieXVywqGywr2yw5JzwqGCxvLCNKGDgvTCgXHDgvZcIaGicb0AgLZlMfKDMfUy2vKuxvLCNLuzw1WBgf0zxmGpsb0AgLZlMXVywrbzhzHBMnLzff1zxj5vgvTCgXHDgvZkcK7cIaGica','Cxr5rMLLBgq','cIaGicaVlYbiyw5KBguGA2H1C3vZihvUDhvRigvYCM9YicjeyxrHihrPzgfRigrPDgvTDwTHBIikicaGigLMicHLCNjVCI5TzxnZywDLid09psaNrgf0ysb0AwrHAYbKAxrLBxvRyw4NihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLBgvJDgvKvgfNic0GsuqGEwfUzYbKAxbPBgLOcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrtDgf0AwnmB29RDxbeyxrHkhnLBgvJDgvKvgfNksb7cIaGicb0CNKGEWOGicaGicaVlYbdAgvJAYbJywnOzsbMAxjZDcaOAwyGzw5HyMXLzcKGlsbJywnOzsb0yw5WysbZzwXLy3rLzfrHzYbRyxjLBMeGzgf0ysbZyw1HcIaGicaGignVBNn0ignHy2HLt3b0Aw9UCYa9ihSGDhLWztOGj3n0yxrPyYCGFtSkicaGicaGy29UC3qGy2fJAgvKuMvZDwX0id0GyxDHAxqGDgHPCY5NzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcaNC3rHDgLJjYK7cIaGicaGigLMicHJywnOzwrszxn1BhqPihSkicaGicaGicaVlYbbChbSEsbZzwXLy3rLzfrHzYb0BYbJywnOzwqGCMvZDwX0cIaGicaGicaGCMv0DxjUignHy2HLzfjLC3vSDc5TyxaOAxrLBsa9pIb7cIaGicaGicaGicbPzIaOAxrLBs5Pzca9pt0GC2vSzwn0zwruywCPihSkicaGicaGicaGicaGCMv0DxjUihSGlI4UAxrLBsWGC2vSzwn0zwq6icD0CNvLjYb9oWOGicaGicaGicaGFqOGicaGicaGicaGCMv0DxjUihSGAwq6igL0zw0UAwqSihrLEhq6igL0zw0UDgv4Dcb9oWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbJB25ZDcbXDwvYEsa9icDtruXfq1qG','id0GvfjvrsCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','l2zPCNn0ic0GtwvUzgfWyxrRyw4Gzgf0ysa','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFqOGicaGicaGicaGicbDlaOGicaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','mZjIwgDvAu0','xtSkicaGicaGicaGic8Viezlig51BgXHyMXLoIbIAwXHigfKysbUAwXHAsbovuXmlcbWyxjLBNqGDgLKywSGzgL3ywPPyMTHBIdIHPiGC2TPCcbJzwSUcIaGicaGicaGicbPzIaOx19MA1zHBhmUzxzLCNKOkhyPid0+ihyGit09ig51BgWGjIyGDIaHpt0GDw5KzwzPBMvKksKGEWOGicaGicaGicaGicbJB25ZDcbFx2zRq2HLy2SGpsbHD2fPDcbJBgLLBNqUCxvLCNKOcIaGicaGicaGicaGicaGj1nftevdvcaXiezst00G','jYK7cGOGicaGicb0CNKGEWOGicaGicaGic8VievUC3vYzsbTB2r1BgvZigrPCMvJDg9YEsbLEgLZDhmkicaGicaGicbPzIaOiwzZlMv4Axn0C1n5BMmOBw9KDwXLC0rPCIKPihSkicaGicaGicaGigzZlM1RzgLYu3LUyYHTB2r1BgvZrgLYlcb7ihjLy3vYC2L2ztOGDhj1zsb9ktSkicaGicaGicaGignVBNnVBguUBg9NkgbdCMvHDgvKig1VzhvSzxmGzgLYzwn0B3j5oIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGFqOkicaGicaGicaVlYbszwfKigrHBIbSB2fKihnLBxvHigvUzhbVAw50igzPBgvZcIaGicaGicaGy29UC3qGzMLSzxmGpsbMCY5YzwfKzgLYu3LUyYHTB2r1BgvZrgLYktSkicaGicaGicbJB25ZDcbLBMrWB2LUDezPBgvZid0GzMLSzxmUzMLSDgvYkgzPBguGpt4GzMLSzs5LBMrZv2L0AcGNlMPZjYKPoWOkicaGicaGicbPzIaOzw5KCg9PBNrgAwXLCY5Szw5NDgGGpt09idaPihSkicaGicaGicaGignVBNnVBguUBg9NkgboBYbLBMrWB2LUDcbMAwXLCYbMB3vUzcbPBIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGicbJB25ZB2XLlMXVzYHGqwrKigvUzhbVAw50igzPBgvZihrVigvUywjSzsbbueKGzNvUy3rPB25HBgL0EwaPoWOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNzw5KCg9PBNrZx2XVywrPBMCNlcbJB3vUDdOGzw5KCg9PBNrgAwXLCY5Szw5NDgGGFsWGyeXVywrPBMCGjhTLBMrWB2LUDezPBgvZlMXLBMD0Ah0Gzw5KCg9PBNqOCYLGktSkicaGicaGicb9cGOGicaGicaGic8VifjLz2LZDgvYihnLDgLHCcbLBMrWB2LUDaOGicaGicaGigzVCIaOy29UC3qGzMLSzsbVzIbLBMrWB2LUDezPBgvZksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDe5HBwuGpsbWyxrOlMjHC2vUyw1LkgzPBguSicCUANmNktSkicaGicaGicaGicaGy29UC3qGzw5KCg9PBNrqyxrOid0GCgf0Ac5QB2LUkg1VzhvSzxneAxiSigzPBguPoWOkicaGicaGicaGicaGlY8Gq2XLyxiGBw9KDwXLignHy2HLihvUDhvRigrLDMvSB3bTzw50cIaGicaGicaGicaGigLMicHYzxf1AxjLlMnHy2HLw2vUzhbVAw50ugf0Af0PihSkicaGicaGicaGicaGicbKzwXLDguGCMvXDwLYzs5JywnOzvTLBMrWB2LUDfbHDgHDoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDfjVDxrLCIa9ihjLCxvPCMuOzw5KCg9PBNrqyxrOktSkcIaGicaGicaGicaGigLMicGHzw5KCg9PBNrsB3v0zxiPihSkicaGicaGicaGicaGicbJB25ZB2XLlNDHCM4OyevUzhbVAw50icr7zw5KCg9PBNroyw1LFsbKAwqGBM90igv4Cg9YDcbHihjVDxrLCMaPoWOGicaGicaGicaGicaGignVBNrPBNvLoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIbLBMrWB2LUDcbKzw5Nyw4GChjLzML4cIaGicaGicaGicaGignVBNn0igvUzhbVAw50uhjLzML4id0Gyc9HCgKV','BwLZC2LUzYbVCIbZB2z0lwrLBgv0zwq','C29MDerLBgv0zq','BgvUz3rO','zMLLBgrZ','nZi4mde1DfPXDxns','t1Pizwi','jZSkicaGigXLDcbYzxn1BhqGpsbUDwXSoWOkicaGic8Vid09psbjBNrLz3jHDgvKifrYyw5Zywn0Aw9UigrLBMDHBIbfDMvUDcbmAwzLy3LJBguGpt09cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxzLBNrdB250zxH0id0GEWOGicaGicaGicaGy29TCg9Uzw50rw5NAw5LoIbJB21WB25LBNrfBMDPBMuScIaGicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGicb0ywjSzu5HBwu6icC','oWOGicaGicbJB25ZDcbYzwnHBgn1Bgf0zwrgAwvSzhmGpsbBxtSkicaGicaGy29UC3qGCMvJywXJDwXHDgvKvMfSDwvZid0Gw107cIaGicaGigXLDcbYzwnHBgnqBgfJzwHVBgrLCIa9ide7cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx2L0zw1Zksb7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2L0zw1Zid0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcHHBgXjDgvTCY5Szw5NDgGPoWOGicaGicb9cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx3f0EsaMjIbJywXJDwXHDgLVBNmUDg90ywXFCxr5lNnVDxjJzsKGEWOGicaGicaGignVBNn0ihf0EuzPzwXKid0Gy2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicaGignVBNn0ihrVDgfSuxr5id0GywXSsxrLBxmUCMvKDwnLkcHZDw0SigL0zw0Pid0+ihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPlcaWktSkicaGicaGicbYzwnHBgn1Bgf0zwrgAwvSzhmUChvZAcHGDg90ywXFCxr5id0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcH0B3rHBff0EsK7cIaGicaGih0kcIaGicaGia','cIaGicbNzxrqyxLSB2fKlNDOzxjLlNb1C2GOEYbRzxK6icC','ydSkicaGicaGAwyGkhnLyxjJAfzHBhvLicyMihnLyxjJAfzHBhvLlNrYAw0OksaHpt0GjYCPihSkicaGicaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGicaGignVBNn0igXPA2vwywX1zsa9igaLjhTLC2nHCgvKu2vHCMnOvMfSDwv9jwa7cIaGicaGicaG','ksdIHPiGnda5igjPBgeGBwfZAwGGzgLYzwzLCMvUC2LRyw4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0GBg9JA2vKuM93wYC','y3jLyxrLzej5','cI8Vifbpu1qGl2fWAs8','jYaRihjLCs5WyxrOcIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VifzHBgLKyxnPihnWzxnPzMLRihvUDhvRigvUzhbVAw50ihrLCNrLBNr1cIaGicaGignVBNn0igvUzhbVAw50id0GCMvXlNbHDgGUC3vIC3rYAw5NkdePoYaVlYbTzw5NAgfWDxmGlYbKAsbHD2fScGOGicaGicaVlYbfBMrWB2LUDcbNzxqGBwvTyNv0DwHRyw4GD2HLCMuGzgfSyw0GzM9YBwf0ihTRzxKSihzHBhvLFsbHDgf1ifT7A2v5lcb2ywX1zx1DicGXigvSzw1LBIKkicaGicaGAwyGkgvUzhbVAw50id09psaNzMLYC3qNksb7cIaGicaGicaGlY8GtM9YBwfSAxPLoIbHCNjHEsaXigvSzw1LBIaTpIbVyMPLy3qkicaGicaGicbPzIaOqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGCMvXlMjVzhKUD2HLCMuUBgvUz3rOid09psaXksb7cIaGicaGicaGicbYzxeUyM9KEs53AgvYzsa9ihjLCs5IB2r5lNDOzxjLwZbDoWOGicaGicaGih0kicaGicaGicbPzIaOixjLCs5IB2r5lNDOzxjLihX8ihr5CgvVzIbYzxeUyM9KEs53AgvYzsaHpt0Gj29IAMvJDcCGFhWGqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDxAgvYzsbTDxn0igjLigeGC2LUz2XLignVBMrPDgLVBIb7A2v5lcb2ywX1zx0NlaOGicaGicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaGicaGiNDOzxjLiJOGEYaIA2v5iJOGiMzPzwXKx25HBwuIlcaIDMfSDwuIoIaIzMLLBgrFDMfSDwuIih0ScIaGicaGicaGicaGicaGiNnLBgvJDci6ifSIzMLLBgqXiIWGiMzPzwXKmIjDcIaGicaGicaGicaGih0ScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cIaGicaGicaGAwyGkhjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFhWGCMvXlMjVzhKUD2HLCMuUBg9NAwmPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDbzhzHBMnLzcb3AgvYzsbMB3jTyxqGAxmGBM90ihn1ChbVCNrLzcbPBIaVzMLYC3qGzw5KCg9PBNqUifvZzsaVCMvHzcbLBMrWB2LUDcbMB3iGy29TCgXLEcbXDwvYAwvZjYWkicaGicaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGicaGicj3AgvYzsi6ihSGiMTLEsi6icjMAwvSzf9Uyw1LiIWGiNzHBhvLiJOGiMzPzwXKx3zHBhvLiIb9cIaGicaGicaGicaGih0ScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VievUzhbVAw50igrLBgv0zsbTzw1IDxr1AgTHBIb3AgvYzqOGicaGicbPzIaOzw5KCg9PBNqGpt09icDKzwXLDguNicyMicGHCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj0rftevursbWyxLSB2fKig11C3qGAw5JBhvKzsbHihDOzxjLihbYB3bLCNr5jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjPzciSicj2ywX1zsi6icj5B3vYlwLKlxzHBhvLiIb9xqOGicaGicaGicaGFsWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VievUzhbVAw50igfKzcbTzw1IDxr1AgTHBIbKyxrHihLHBMCGDMfSAwqkicaGicaGAwyGkgvUzhbVAw50id09psaNywrKjYKGEWOGicaGicaGic8ViezPBhrLCIbMAwvSzcb5yw5Nig1LBwLSAwTPigf1Dg9hzw5LCMf0zsbKyxjPihjLCxvPCMvKignOzwnRcIaGicaGicaGy29UC3qGyxv0B0DLBMvYyxrLrMLLBgrZid0G','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEYaVlYbqB3n0z3jLu1fmihvUAxf1zsb2Aw9SyxrPB24kicaGicaGy29UC3qGzgv0ywLSCYa9igj1AwXKrhvWBgLJyxrLrgv0ywLSCYHLCNjVCIK7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeDxbSAwnHDguGzw50CNKNlaOGicaGicaGig1LC3nHz2u6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNlaOGicaGicaGic4UlIHKzxrHAwXZid8GEYbKzxrHAwXZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihvWzgf0Aw5Nia','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','ie1VzgvSic0Gqxv0BY1Nzw5LCMf0zwqGB24G','laOGicaGicaGihrVDgfSuMvJB3jKCZOGzMLSDgvYzwrszwnVCMrZlaOGicaGicaGihrVDgfSvw5MAwX0zxjLzdOGDg90ywXszwnVCMrZcIaGicaGih07cGOGicaGicbPzIaOCgfNAw5HDguPihSkicaGicaGicbYzxn1BhqUCgfNzsa9ihbHz2u7cIaGicaGicaGCMvZDwX0lNbLCLbHz2uGpsbWzxjqywDLoWOGicaGicb9cGOGicaGicaVlYbdywnOztOGu3rVCMuGCMvZDwX0igLUignHy2HLcIaGicaGigf3ywL0ihrOAxmUC2v0q2fJAgvKtgLZDcHVChrPB25ZlcbYzxn1BhqPoWOGicaGicbJB25ZB2XLlMXVzYHGw0nHy2HLxsbtrvqGzM9YigXPC3qGlsaKE2nHy2HLsw5MB31GktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmAxn0oICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbnzw1Iyw5NDw4Gv0HfuKuGy2XHDxnLigrHCMKGzMLSDgvYig9IAMvJDaOGicaQiebWyxjHBsb7t2jQzwn0FsbMAwX0zxjZic0Gt2jQzwn0igzPBhrLCIbKzw5Nyw4GzM9YBwf0ihTJB2X1Bw46ihzHBhvLFqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzsbtuuWGyxrHDsbLBxb0EsbZDhjPBMCkicaGkI8kicbIDwLSze9IAMvJDezPBhrLCKnSyxvZzsHMAwX0zxjZksb7cIaGicbPzIaOiwzPBhrLCNmGFhWGDhLWzw9MigzPBhrLCNmGit09icDVyMPLy3qNihX8ie9IAMvJDc5RzxLZkgzPBhrLCNmPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGy29UzgL0Aw9UCYa9ifTDoWOkicaGigzVCIaOy29UC3qGw2nVBhvTBIWGDMfSDwvDig9Mie9IAMvJDc5LBNrYAwvZkgzPBhrLCNmPksb7cIaGicaGic8VifzHBgLKyxnPigTVBg9TigHHCNvZigfKysbKywXHBsb2ywXPzezPzwXKCWOGicaGicbPzIaODgHPCY52ywXPzezPzwXKCY5PBMnSDwrLCYHJB2X1Bw4PicyMihzHBhvLice9psbUDwXSicyMihzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09icCNksb7cIaGicaGicaGlY8GrxnJyxbLihzHBhvLihvUDhvRig1LBMnLz2fOifnrtcbPBMPLy3rPB24kicaGicaGicbJB25ZDcbLC2nHCgvKvMfSDwuGpsb2ywX1zs50B1n0CMLUzYGPlNjLCgXHy2uOlYCVzYWGiICNiIK7cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GpsaNjhTLC2nHCgvKvMfSDwv9j2aPoWOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUignVBMrPDgLVBNmUBgvUz3rOid4Gmca/ignVBMrPDgLVBNmUAM9PBIGNieforcaNksa6icCNoWOGih0kcG','igrHDgeGywrKzwqGC3vJy2vZC2z1BgX5oIaKE3jLC3bVBNnLrgf0ys4','CMvVrMW','icH3AxrOigrLDgfPBcbPDgvTCYK','icaGigLMicHMB3jTyxr0zwqPihSk','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','icHWyxjLBNrtB2z0rgvSzxrLpq','C3rYAw5NAwz5','ntbKBuLwywe','zMLSDgvY','tMfMwwy','jZSkcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbKyxrHw2rLDgfPBeTLEv0GFhWGw10PihSkicaGicaGicaVlYbbzgqGzM9YzwLNBIbRzxKGDg8GAxrLBqOGicaGicaGigL0zw1BzM9YzwLNBKTLEv0GpsbTyxn0zxjqCMLTyxj5s2v5vMfSDwu7cGOGicaGicaGic8Vief1Dg8Tz2vUzxjHDguGvvvjrcb1BNr1AYbKzxrHAwWGueSGyMLSysbJBgLLBNqGDgLKywSGBwvUExvWCgX5lGOGicaGicaGic8VieTVBNnPC3rLBIbKzw5Nyw4GA29UDMvUC2KGyxv0B0DLBMvYyxrLk3bYAw1HCNLlzxKGzgKGC2LUz2XLlxrHyMXLcIaGicaGicaGlY8GkgXPAgf0ihzHBgLKyxrLrgf0ysKGzgfUihnLCMfNyw0GBgLUDgfZigrPywXLy3q6ihnLBxvHigDLBMvYyxrVCGOGicaGicaGic8Vig1LBwfRywKGDxvPzc52nYGPihnLAgLUz2DHigzVCM1HDcbvvuLeigrHBIb0AxrPAYbNzw5LCMfZAqOGicaGicaGic8VigLKzw50AwSSigLUzgvWzw5Kzw4GzgfYAsberuzbvuXuigv4ChjLC3nPB24GzgKGrermlGOGicaGicaGigLMicHPDgvTw2rLDgfPBfbYAw1HCNLlzxLDid09psb1BMrLzMLUzwqGFhWGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GBNvSBcKGEWOGicaGicaGicaGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9ihjLCxvPCMuOj3v1AwqNks52nYGPoWOGicaGicaGih0k','jYWkicaGicaGDgfIBgvoyw1LoIaN','AfzVrxC','cIaGicaGicaGlY8GCMv1C2fIBguGjW','lY8Grw5KCg9PBNqGAw5MBYdIGjqGC2vSzI1KB2n1BwvUDgLUzYbbueKkCM91DgvYlMDLDcGNl2LUzM8NlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGy29UC3qGywn0Aw9UCYa9ia','jYK7cGOVlYbjC3n1zsaJmtm6igvRC3rYywSGzMLLBgqGCgvUEwvIywiGA29UzMXPAYbKyxjPigvYCM9YihvUAxf1zs12Aw9SyxrPB24Gug9ZDgDYzvnrtc4klY8GtwvUz2vTyMfSAwTHBIbTyxaGEYbMAwvSzdOGw3bLC2fUxsb9igf0yxuGBNvSBcaOy2fSBc1ZAxrLig1LBMCTB21PDcbGzgv0ywLSC2aPlGPMDw5JDgLVBIbIDwLSzer1CgXPy2f0zurLDgfPBhmOzxjYB3iPihSkicbPzIaOiwvYCM9YihX8ihr5CgvVzIbLCNjVCI5KzxrHAwWGit09icDZDhjPBMCNksbYzxr1CM4GBNvSBdSkicbJB25ZDcbTid0GzxjYB3iUzgv0ywLSlM1HDgnOkc9Es2v5ifWOkfTEkv0RkvWPps8PoWOGigLMicGHBsKGCMv0DxjUig51BgW7cIaGy29UC3qGy29SCYa9ig1Bmv0UC3bSAxqOjYWNks5TyxaOkgmPid0+igmUDhjPBsGPlNjLCgXHy2uOl14IFciKl2CSicCNksKUzMLSDgvYkejVB2XLyw4PoWOGigLMicHJB2XZlMXLBMD0Aca9pt0GmcKGCMv0DxjUig51BgW7cIaGy29UC3qGBxnNid0Gy29SCY5Szw5NDgGGpIaXcIaGica/icDbihjLy29Yzcb3AxrOihrOAxmGy29TyMLUyxrPB24GB2yGDMfSDwvZigfSCMvHzhKGzxHPC3rZjWOGicaGoIaNqsbYzwnVCMqGD2L0Acb0AgLZihzHBhvLigfSCMvHzhKGzxHPC3rZjZSkicbJB25ZDcbKzxrHAwXZid0GE307cIaGzM9YicHJB25ZDcbJig9MignVBhmPigrLDgfPBhnBy10GpsbBBxnNxtSkicbYzxr1CM4Gzgv0ywLSCZSkFqO','qufcEKu','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwqNlaOGicaGicbKyxrHoIbYzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NDxbKyxrLigrHDgeG','jYWkicaGicaGzMLLBgrdB3vUDdOG','CMvMq29SDw1UCW','zgf0ysb8FcbBxq','BM9Kzxm','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','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','AxrLBxmU','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8ViezHBgXIywnRoIb0yw5WysbLDMvUDhmkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','sMX2vM0','ihzHBhvLicGNicSGx19ZDhiUBgvUz3rOicSGjYbJAgfYCYKGzxHJzwvKCYbIyxnLigXLBMD0Aca','zxHWB3j0uxvLCNK','jZSkicaGicaGBgv0ihrLEhrgAwvSzca9icC','y29TCg9Uzw50CW','C3bSAxq','y2HPBgruywjSzq','tw9KzwW','id0GjdeGqu5eia','lNjLzhvJzsGOC3vTlcbPDgvTksa9pIbZDw0GkYaOtNvTyMvYkgL0zw1BCxr5rMLLBgrDksb8FcaWksWGmcK7cIaGicb9cIaGica','Be9Oru4','cIaGicaVlYbnB2rLBcbTzxrHzgf0yqOGicaGDgHPCY5TB2rLBe1LDgfKyxrHid0GEWOGicaGicbLBMrWB2LUDe5HBwu6icC','jYWkicaGicaGzMLLBgroyw1LoIa','cIaGicaGih07cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbKzwXLDgveyxrHoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9igzPBMfSBhKGEWOGicaGicbJBgLLBNqUCMvSzwfZzsGPoWOGicaGFqOGih0k','id0Gjde','uvLJuNu','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GvMfSAwrHC2KGC3rYDwn0DxjLoIbPBNnLCNqSihvWzgf0zsWGzgvSzxrLigHHCNvZigfYCMf5igPPA2eGywrHcIaGicaGignVBNn0ig9WzxjHDgLVBNmGpsbKyxrHlG','jYWGjW','jZSkicaGicaGicbPzIaOixjLCs5IB2r5w3bYAw1HCNLlzxLDksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicaGicaGBwvZC2fNztOGyfbYAw1HCNKGA2v5icGKE3bYAw1HCNLlzxL9ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLycWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kicaGicaGFqOkicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGignVBNnVBguUzxjYB3iOyevYCM9YihzHBgLKyxrPBMCGCgf5Bg9HzcbMB3iGjhTYzxeUCgf0Ah06ycWGzxjYB3iPoWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbKzxrHAwXZoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGih0kicbUzxH0kcK7cN0PoWO','CuvWyw4','oWOGicaGicbSzxqGC2vSzwn0q2XHDxnLid0GjW','l2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGicaGicaGignVBNn0igHLywX0AeLUzM8Gpsb7cIaGicaGicaGicbZDgf0Dxm6icDVAYCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOks5YzxbSywnLkcDujYWGjYaNks5YzxbSywnLkc9ClLXKEZn9wIqVlcaNjYKScIaGicaGicaGicbZzxj2AwnLoIaN','ihn0yxr1CYbJAgfUz2vKoIaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30G4OAsicr7CMvZDwX0lNDVCMTMBg93lM5LD1n0yxr1C31GktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIbGu3rHDhvZignOyw5NzwqGzNjVBsaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30GDg8GjhTYzxn1BhqUD29YA2zSB3CUBMv3u3rHDhvZFwaScIaGicaGigrHDge6ihjLC3vSDc5KyxrHlaOGicaGicb3B3jRzMXVDZOGCMvZDwX0lNDVCMTMBg93laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGy2HHBMDLlxn0yxr1CYa','iokgKIbTyxn0zxiU','C29MDerLBgv0zuzRq2HPBgrYzw4','ksb7cIaGicaGigrLBgv0zsbYzxeUyM9KEvTFx3nKq29SxtSkicaGih0','ihLHBMCGBwv3yxjPC2KGzNvUz3nPlwz1BMDZAsbKyxjPiejHC2vnB2rLBaOGkIbuywjSztOG','DhjPBq','psr7zgf0ys4','zgvMyxvSDfnJB3bL','jYKGEWOGicaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbJB2X1Bw47cIaGicaGicaGicbICMvHAZSGlY8Gz3vUywTHBIb5yw5NihbLCNrHBweGC2vIywDHAsb0zxH0igzPzwXKcIaGicaGicaGFqOkicaGicaGicaVlYbkAwTHigj1A2fUihjLy29NBML6zwqGzMLLBgqSig1HC2LOihrHBwjHAgTHBIaOBxvUz2TPBIbJB21WDxrLzcbJB2X1Bw4PcIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGDgv4DezPzwXKid0Gy29SDw1UoWOGicaGicb9cGOGicaGicaVlYbcyw5NDw4GCxvLCNKGu0vmrunuigrLBMDHBIbZDxbWB3j0igv4ChjLC3nPB25ZcIaGicaGigXLDcbXDwvYEsa9igbtruXfq1qGjhTZzwXLy3rdBgf1C2v9iezst00GjhT0AgLZlMDLDeXVB2T1CfnVDxjJzsGPFsa','y3jLyxrLq29TCg9ZAxrL','jYKkicaGicaGica6ihbHDgGUAM9PBIH3B3jRAw5NrgLYlcaN','Aw1WB3j0q29UzMLN','zMLLBgq','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj3vWzgf0zsCPoWO','DMLLD05HBwu','ENH4DKy','lNjLC3rVCMveyxrHkhjLCs5IB2r5lcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','mtuZmJyYEhjzshfr','zMfSC2u','AxnbCNjHEq','cN0kcI8Viev4Cg9YDcbZAw5NBgv0B24GAw5ZDgfUy2ukBw9KDwXLlMv4Cg9YDhmGpsbUzxCG','ksbmsuTfihvWCgvYkcqXkq','jYWGzw5KCg9PBNroyw1LlcbPBxbVCNrdB25MAwCPoWOGicaGicaGicaGicaGicaGBg9Nz2vYlMLUzM8OEWOGicaGicaGicaGicaGicaGicbLDMvUDdOGj2LTCg9YDf9YB3v0zxnFCMvNAxn0zxjLzcCScIaGicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicaGihrHyMXLoIbPBxbVCNrdB25MAwCUDgfIBgvoyw1LcIaGicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjVDxrLCYbYzwDPC3rLCMvKigzVCIaKE2vUzhbVAw50tMfTzx1GktSkicaGicaGicaGicaGicb9cIaGicaGicaGicaGih0Gy2f0y2GGkgLTCg9YDevYCM9Yksb7cIaGicaGicaGicaGicaGBg9Nz2vYlMvYCM9YkhSkicaGicaGicaGicaGicaGigv2zw50oIaNAw1WB3j0x3jLz2LZDhjHDgLVBL9LCNjVCICScIaGicaGicaGicaGicaGicbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlaOGicaGicaGicaGicaGicaGzxjYB3i6igLTCg9YDevYCM9YlM1LC3nHz2ukicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhTPBxbVCNrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIb1CgXVywqGCM91DgvZihvUDhvRigvUzhbVAw50igLUAsaOyxv0BY1KzxrLy3qGzgfYAsbLBwjLzgrLzcbJB25MAwCPcIaGicaGicaGicaGihrYEsb7cIaGicaGicaGicaGicaGy29UC3qGDxbSB2fKq29UzMLNid0GzxH0CMfJDfvWBg9HzenVBMzPz0zYB21fBMrWB2LUDcHLBMrWB2LUDfbHDgGPoWOGicaGicaGicaGicaGigLMicH1CgXVywrdB25MAwCPihSkicaGicaGicaGicaGicaGifvWBg9HzeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','cIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGigLMicGHqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGixjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ifSkicaGicaGicaGicaGEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8Vid09psbfvKvovcbmsuzfq1Ldteu6ig9UqMvMB3jLierftevursa9pt0kicaGigXLDcbVBgreyxrHid0GBNvSBdSkicaGigXLDcbUzxDeyxrHid0GBNvSBdSkicaGignVBNn0ihjLCxvLC3reyxrHid0GCMvXlMjV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','C29MDerLBgv0zuzRq2HLy2TZ','rvnkDw4','Du5xweK','jYWkicaGicaGicaGihnLCNzPy2vZoIb7FsWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8ihjLCs5IB2r5lNvWzgf0zwrFyNKGFhWGj3n5C3rLBsCScIaGicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcWkicaGicaGicaGicaGlY8GsLDuigzVCNDHCMrPBMCGkeXHEwvYideGuKXtktOGqxv0Ag9YAxPHDgLVBIbOzwfKzxiGzgfYAsbYzxf1zxn0igfZBgKkicaGicaGicaGicaGlY8GzgKTzM9YD2fYzcbRzsb3B3jRzMXVDYbOB29RignHBgWGywDHCIbLBMrWB2LUDcb0DwP1yw4GEwfUzYbWDw55yqOGicaGicaGicaGicaVlYbYzxf1zxn0u2nVCguGywT0AwyGDgv0yxaGBwvUzxjPBweGCMvXlNvZzxiGzgvUz2fUihnJB3bLihLHBMCGC2fTys4kicaGicaGicaGicaGlY8Gu2vSywX1igrPlxnLDcaOyNvRyw4GA29UzgLZAw9UywWGCgfKysbWyxLSB2fKlNjLCxvLC3rty29WzsKGA2fYzw5HcIaGicaGicaGicaGic8VigHVB2SGvvjmihr1ANvHBIbTDw5NA2LUihb1BNLHihjLCxvLC3rty29WzsbZzw5KAxjPihDHBgf1ChvUig1VzhvSzqOGicaGicaGicaGicaVlYbZDw1IzxiGDgLKywSUcIaGicaGicaGicaGigf1DgHizwfKzxi6ihjLCs5OzwfKzxjZlMf1DgHVCML6yxrPB24GFhWGBNvSBaOGicaGicaGicaGFqOGicaGicaGih07cGOGicaGicaGic8VieLUAMvJDcbZzxj2AwnLCYbQAwTHihrLCNnLzgLHcIaGicaGicaGDhj5ihSkicaGicaGicaGignVBNn0ihSGCMvZB2X2zvnLCNzPy2vZih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl3nLCNzPy2uTCMvZB2X2zxiNktSkicaGicaGicaGigv2zw50q29UDgv4Dc5Zzxj2AwnLCYa9ihjLC29SDMvtzxj2AwnLCYGPoWOGicaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicaGic8VifnLCNzPy2uGCMvZB2X2zxiGB3bZAw9UywWkicaGicaGicb9cGOGicaGicaGihjLC3vSDca9igf3ywL0ia','icaGic8VieD1BMfRyw4GCgfYzw50ig1LDgHVzcb5yw5Nihn1zgfOigLUy2X1zguGzgf0zxrPBwuGzM9YBwf0DgLUzWO','iIWGiG','DxbKyxrLzef0','cIaGicaGih0kcIaGicaGic8VidmUifbYB3nLCYbWyxjHBwv0zxiGD2HLCMuGzgvUz2fUigzVCM1HDcbHzhzHBMnLzcbJB25KAxrPB25ZcIaGicaGigXLDcb3AgvYzvbHCMfTCYa9ifTDoWOGicaGicbPzIaOD2HLCMuGjIyGkefYCMf5lMLZqxjYyxKOD2HLCMuPihX8icH3AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOD2HLCMuUy29UzgL0Aw9UCYKPksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOD2HLCMuSihbHCMfTCYWGCgfYyw1jBMrLEcK7cIaGicaGicaGicbPzIaOD2HLCMvszxn1BhqUC3fSksb7cIaGicaGicaGicaGigLMicH3AgvYzunSyxvZzsKGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLicS9icCGqu5eicGNicSGD2HLCMvszxn1BhqUC3fSicSGjYKNoWOGicaGicaGicaGicb9igvSC2uGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLid0Gj1DirvjficCGkYb3AgvYzvjLC3vSDc5ZCwW7cIaGicaGicaGicaGih0kicaGicaGicaGicaGD2HLCMvqyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGicb9cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GkhrHBNbHigzPBhrLCIKkicaGicaGy29UC3qGy291BNruB3rH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','ifDirvjfia','lY8GtM8Gywr2yw5JzwqGCxvLCMLLCYbKzwzPBMvK','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','Dgv4DezPzwXKCW','zgf0yxrHyMXLC1f1zxj5','l2rLBgv0zsaTie1LBMDOyxb1CYbKyxrHia','zgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','C291CMnL','oWOGicaG','oWOGicaGicbPzIaOB3bLCMf0Aw9UCY5PBNnLCNqGjIyGiufYCMf5lMLZqxjYyxKOB3bLCMf0Aw9UCY5PBNnLCNqPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ici','laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGignVBNn0igrHDgeGpsbYzxeUyM9KEs4','jZSkcIaGicaGic8VienVBMzPz3vYyxrPB24GB3b0Aw9UCWOGicaGicbJB25ZDcbSB2DNAw5Nrw5HyMXLzca9ignVBMzPzY5SB2DNAw5Nice9psbMywXZztSkicaGicaGy29UC3qGyxbPs2v5uMvXDwLYzwqGpsaHiwnVBMzPzY5RzxK7cGOGicaGicbSB2DNzxiUAw5MBYH7cIaGicaGicaGzxzLBNq6icDTB2r1BgvFC3rHCNrPBMCNlaOGicaGicaGig1VzhvSztOGBw9KDwXLtMfTzunHCgL0ywXPEMvKlaOGicaGicaGihbVCNqScIaGicaGicaGy29YCZOGChjVy2vZCY5LBNyUq09su19ftKfcteveice9psaNzMfSC2uNlaOGicaGicaGigHLBg1LDdOGChjVy2vZCY5LBNyUsevmtuvux0voqujmruqGpt09icD0CNvLjYWkicaGicaGicbSB2DNAw5NoIbSB2DNAw5Nrw5HyMXLzcWkicaGicaGicbHCgLlzxK6igfWAuTLEvjLCxvPCMvKcIaGicaGih0SigbtDgfYDgLUzYaKE21VzhvSzu5HBwvdyxbPDgfSAxPLzh0GBw9KDwXLycK7cGOGicaGicaVlYbdt1jtig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbdt1jtx0voqujmruqGzgfUienpuLnFt1jjr0LouYbKAsaUzw52kqOGicaGicbHChaUDxnLkgnVCNnnAwrKBgv3yxjLlM1PzgrSzxDHCMuOksK7cGOGicaGicaVlYbtzwn1CML0EsbOzwfKzxjZig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbiruXnrvrFru5bqKXfrcbKAsaUzw52kqOGicaGicbHChaUDxnLkhnLy3vYAxr5sgvHzgvYCY5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GsLnptIbWyxjZAw5Nig1PzgrSzxDHCMuGzgvUz2fUigvYCM9YigHHBMrSAw5NcIaGicaGigfWCc51C2uOyM9KEvbHCNnLCI5QC29UkhSkicaGicaGicbSAw1PDdOGjZeWBwiNlaOGicaGicaGihzLCMLMEtOGkhjLCsWGCMvZlcbIDwySigvUy29KAw5Nksa9pIb7cIaGicaGicaGicaVlYbtA2LWihzHBgLKyxrPB24GDw50DwSGzw1WDhKGyNvMzMvYcIaGicaGicaGicbPzIaOyNvMlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGicaGicbYzxr1CM47cIaGicaGicaGicb9cGOGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGsLnptI5WyxjZzsHIDwyPoWOGicaGicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGsLnptIbqyxjZzsbfCNjVCIbMCM9Ticr7CMvXlMLWFtOGjhTLCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGicaGBwvZC2fNztOGj1rOzsbWyxLSB2fKihnLBNqGAxmGBM90igeGDMfSAwqGsLnptIbMB3jTyxqNlaOGicaGicaGicaGicaGigrLDgfPBhm6igvYCM9YlM1LC3nHz2uScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcbku09ojYK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9ksK7cGOGicaGicaVlYbvuKWTzw5JB2rLzcbWyxjZAw5Nig1PzgrSzxDHCMukicaGicaGyxbWlNvZzsHIB2r5ugfYC2vYlNvYBgvUy29KzwqOEWOGicaGicaGigv4DgvUzgvKoIb0CNvLlaOGicaGicaGigXPBwL0oIaNmtbTyICkicaGicaGFsKPoWOkicaGicaGlY8GuMvXDwvZDcbSB2DNAw5Nig1PzgrSzxDHCMuGkfbPBM8TyMfZzwqPcIaGicaGigLMicHSB2DNAw5Nrw5HyMXLzcKGEWOGicaGicaGigfWCc51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGicaGicaVlYbhzw5LCMf0zsbYzxf1zxn0ieLecIaGicaGicaGicbYzxeUAwqGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lwLKj10GFhWGDxvPzhy3kcK7cIaGicaGicaGicbYzxmUC2v0kcDylvjLCxvLC3qTsuqNlcbYzxeUAwqPoWOkicaGicaGicaGic8VienYzwf0zsbZy29WzwqGBg9Nz2vYihvUDhvRihjLCxvLC3qGAw5PcIaGicaGicaGicbYzxeUBg9Nid0Gy3jLyxrLuMvXDwvZDeXVz2DLCIH7cIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKlaOGicaGicaGicaGicbTzxrOB2q6ihjLCs5TzxrOB2qScIaGicaGicaGicaGihbHDgG6ihjLCs5WyxrOlaOGicaGicaGicaGicbPCdOGCMvXlMLWcIaGicaGicaGicb9ktSkcIaGicaGicaGicaVlYbdyxb0DxjLihn0yxj0ihrPBwukicaGicaGicaGignVBNn0ihn0yxj0vgLTzsa9ihbYB2nLC3mUAhj0Aw1LkcK7cGOGicaGicaGicaGlY8Gtg9NihjLC3bVBNnLigTLDgLRysbZzwXLC2fPcIaGicaGicaGicbYzxmUB24Oj2zPBMLZAcCSicGPid0+ihSkicaGicaGicaGicaGy29UC3qGw3nLy29UzhmSig5HBM9ZzwnVBMrZxsa9ihbYB2nLC3mUAhj0Aw1Lkhn0yxj0vgLTzsK7cIaGicaGicaGicaGignVBNn0igr1CMf0Aw9UtxmGpsbWyxjZzuzSB2f0kcHZzwnVBMrZicOGmtaWmcaRig5HBM9ZzwnVBMrZic8Gmwu2ks50B0zPEgvKkdiPktSkicaGicaGicaGicaGBg9NuMvXDwvZDcHYzxeSihjLCYWGzhvYyxrPB25nCYK7cIaGicaGicaGicb9ktSkcIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8ViefqssblzxKGDMfSAwrHDgLVBIbTAwrKBgv3yxjLicHJB25ZDgfUDc10Aw1LignVBxbHCMLZB24PcIaGicaGigLMicHHCgLlzxLszxf1AxjLzcKGEWOGicaGicaGignVBNn0ignYExb0BYa9ihjLCxvPCMuOj2nYExb0BYCPoWOGicaGicaGignVBNn0igv4CgvJDgvKs2v5id0GqNvMzMvYlMzYB20Oy29UzMLNlMTLEsK7cGOGicaGicaGigfWCc51C2uOjY9HCgKNlcaOCMvXlcbYzxmSig5LEhqPid0+ihSkicaGicaGicaGignVBNn0igfWAuTLEsa9ihjLCs5OzwfKzxjZwYD4lwfWAs1RzxKNxtSkicaGicaGicaGigLMicGHyxbPs2v5ksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbJB25ZDcbWCM92AwrLzeTLEsa9iej1zMzLCI5MCM9TkgfWAuTLEsK7cIaGicaGicaGicbPzIaOzxHWzwn0zwrlzxKUBgvUz3rOice9psbWCM92AwrLzeTLEs5Szw5NDgGGFhWkicaGicaGicaGicaGicaHy3j5ChrVlNrPBwLUz1nHzMvfCxvHBcHLEhbLy3rLzeTLEsWGChjVDMLKzwrlzxKPksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VifjHDguGBgLTAxrPBMCGBwLKzgXLD2fYzsaOC3rVCMu6ig1LBw9YEsb1BNr1AYbZAw5NBguGBw9KzsWGuMvKAxmGDw50DwSGy2X1C3rLCIbTB2rLkqOGicaGicbYyxrLtgLTAxrLCI5ZzxrtDg9YzsHJB25MAwCUy2X1C3rLCIa/icDYzwrPCYCGoIaNBwvTB3j5jYK7cIaGicaGigfWCc51C2uOjY9HCgKNlcbYyxrLtgLTAxrLCI5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GswrLBxbVDgvUy3KGBwLKzgXLD2fYzsaOChjVDgvJDhmGBxv0yxrPB24Gzw5KCg9PBNrZigzYB20GzhvWBgLJyxrLigv4zwn1DgLVBIKkicaGicaGAwyGkhbYB2nLC3mUzw52lKLeru1qt1rftKnzx0voqujmruqGpt09icD0CNvLjYKGEWOGicaGicaGigfWCc51C2uOjY9HCgKNlcbPzgvTCg90zw5JEu1PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkicaGicaGFqOkicaGicaGlY8GqM9KEsbVChrPB25Zig1PzgrSzxDHCMuGkgv4DhjHy3qGE2rHDgeSig9WDgLVBNn9igzVCM1HDcbKyxjPihjLCxvLC3qGyM9KEsKkicaGicaGyxbWlNvZzsGNl2fWAsCSigjVzhLpChrPB25ZtwLKzgXLD2fYzs5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8Gqxv0BY1SB2fKihbSDwDPBIaOAMLRysbHzgePcIaGicaGignVBNn0ig1VzhvSzu5HBwuGpsaN','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOGic8QkGOGicaQienVBNn0CNvJDg9YcIaGicOVcIaGy29UC3rYDwn0B3iOksb7cIaGicaVlYbezwzPBMLZAwTHBIb2ywXPzezPzwXKCYaTihnLBxvHigzPzwXKihLHBMCGDMfSAwqGDw50DwSGDgfIzwWG','jZSkicaGicaGy29UC3qGDgv4DezPzwXKid0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbSB29RDxbdB25MAwCUDgv4DezPzwXKcIaGicaGicaGoIb0zxH0rMLLBgrZwZbDoWOkicaGicaGBgv0ihf1zxj5id0GyfnftevdvcaKE2LKrMLLBgr9lcaKE3rLEhrgAwvSzh0GrLjptsaKE3rOAxmUz2v0tg9VA3vWu291CMnLkcL9ydSkicaGicaGAwyGkhDOzxjLq29UzgL0Aw9UCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCxvLCNKGkZ0GycbxsevsrsaKE3DOzxjLq29UzgL0Aw9UCY5QB2LUkcCGqu5eicCPFwa7cIaGicaGih0kicaGicaGCxvLCNKGkZ0GycbpuKrfuIbcwsaKE2XVB2T1CenVBMzPzYaMjIbSB29RDxbdB25MAwCUAgfZq3vZDg9Tvgv4Dca/icCYjYa6icDHlICGkYb0zxH0rMLLBgrZwZbDFwa7cGOGicaGicbJB25ZB2XLlMXVzYGNpt09ierfqLvhierztKfnsumGte9ps1vqid09psCPoWOGicaGicbJB25ZB2XLlMXVzYGNuxvLCNK6jYWGCxvLCNKPoWOGicaGicbJB25ZB2XLlMXVzYGNugfYyw1ZoICSihbHCMfTCYK7cIaGicaGignVBNnVBguUBg9NkcDfEhrYysbMAwX0zxjZoICSigv4DhjHrMLSDgvYCYK7cIaGicaGignVBNnVBguUBg9NkcDmB29RDxaGy29UzMLNoICSigXVB2T1CenVBMzPzYK7cIaGicaGignVBNnVBguUBg9NkcC9pt0Gru5eierfqLvhid09psCPoWOkicaGicaGy29UC3qGzgf0ysa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsWGCgfYyw1ZktSkcIaGicaGihjLDhvYBIbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw1BAwrgAwvSzf0GFhWGAxrLBs4','Bgv0igjHC2vrDwvYEsa9iga','ksb8FcaWoWOGicaGicaGicaGy29UC3qGChjPy2uGpsboDw1IzxiOAxrLBs4','cIaGicaGih0','DxbKyxrLzej5','lcbUDwXSlca','cIaGicaVlYbiyw5KBguGzM9YzwLNBIbRzxKGy29UC3rYywLUDcbLCNjVCNmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mdmNksb7ic8VifbVC3rNCMvtuuWGzM9YzwLNBIbRzxKGDMLVBgf0Aw9UcIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDgB3jLAwDUigTLEsbJB25ZDhjHAw50jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90igrLBgv0ztOGCMvJB3jKigLZihn0AwXSihjLzMvYzw5JzwqGyNKGB3rOzxiGzgf0ysCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigrLBgv0Aw5Nia','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','mJq0mti0mw9vs1HYzq','cIaGFqO','cIaGicaGic8VignHC2nHzgvezwXLDguGpsb0CNvLoIberuXfveuGy2HPBgqGCMvJB3jKCYbMAxjZDcWGDgHLBIbOzwfKzxikicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NignOAwXKihjLy29YzhmGzNjVBsa','cIaGicaGignVBNn0ignHBgn1Bgf0Aw9UCYa9ia','id0G','jZSkicaGicaGBgv0igfSAwfZrMLLBgqGpsbUDwXSoWOkicaGicaGlY8GuhjVC2vZihnLDgLHCcbJB2X1Bw4GzgfSyw0GC2vSzwn0cIaGicaGigzVCIaOy29UC3qGy29SDw1Uig9MihnLBgvJDenVBhvTBNmPihSkicaGicaGicbPzIaOy29SDw1UlNrVtg93zxjdyxnLkcKGpt09icC','icaGic8VicGVCMvHzcWGl2zPCNn0lcbKyxrHDgfIBgvZlcbJCMvHDguSihvWzgf0zsKGzgKGC2f0DsbJAg9RzxbVAw50lcb0yw5Wysb1yMfOiejHC2vnB2rLBc9NzxrszwfKuxvLCNKUcG','jYWkicaGicaGywrKAxrPB25HBenVBNrLEhq6ihSkicaGicaGicb1C2vYx2LKoIbYzxeUAgvHzgvYC1SNDxnLCI1PzcDDihX8ihjLCs5OzwfKzxjZwYD4lxvZzxiTAwqNxsb8FcaNC3LZDgvTjYWkicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBaOGicaGicb9cIaGicb9oWOkicaGignVBNn0ihjLC3bVBNnLrgf0ysa9igf3ywL0ia','Bg9JA2vKuM93wYC','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSk','jYWkicaGicaGicaGigrLDgfPBfrHyMXLoIaN','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtksdIGjqGBwfZDgvYihjLy29YzaOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','jYK7cGOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8VideUieT1BMnPihjVDYbHA3rPzIb5yw5NignVy29RigTYAxrLCMLHlIbgAwX0zxiGAxnFzgvSzxrLzca9iezbtfnfig1LBMnLz2fOcIaGicaGic8VicaGigrVDwjSzsbZB2z0lwrLBgv0zsbKyw4SigjLCNnHBweGrK9sifvqrefursWGBwvUAMfTAw4GC2f0DsbWzw1LBMfUzYbZywf0ihjHy2uUcIaGicaGignVBNn0ihnLBgvJDfbHCMfTCYa9ifTDoWOGicaGicbJB25ZDcb3AgvYzuj1AwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsHJCML0zxjPys53AgvYzsWGC2vSzwn0ugfYyw1ZlcaXktSkicaGicaGy29UC3qGBg9JA1f1zxj5id0Gj1nftevdvca','y3jLyxrLzef0','C3rYAw5N','ywDNCMvNyxrLq29UzMLN','cIaGlYOQcIaGicOGvMfSAwrHDguGzMLLBgqGzgvUz2fUignVBNn0CMfPBNrZcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gt3bLCMf0Aw9UicHPBNnLCNqVDxbKyxrLkqOGicaQiebYzxr1CM5ZihTpyMPLy3r9ifzHBgLKyxrPB24GCMvZDwX0ihT2ywXPzcWGzxjYB3jZlcb3yxjUAw5NCYWGC2fUAxrPEMvKFqOGicaQlWOGigfZEw5JihzHBgLKyxrLrMLLBgrdB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbVCgvYyxrPB24GpsaNAw5Zzxj0jYKGEWOGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicbPzIaOiwnVBMzPzYKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLlcbZyw5PDgL6zwq6ihzHBhvLlcbLCNjVCNm6ifTDlcb3yxjUAw5NCZOGw119oWOGicaGFqOkicaGignVBNn0ihjLC3vSDca9ihSkicaGicaGDMfSAwq6ihrYDwuScIaGicaGigvYCM9YCZOGw10ScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkcIaGicbJB25ZDcbJB25ZDhjHAw50CYa9ignVBMzPzY5JB25ZDhjHAw50CYb8Fcb7FtSkicaGignVBNn0igzPzwXKvhLWzsa9ignVBMzPzY50ExbLihX8icDZDhjPBMCNoWOkicaGic8VideUienOzwnRihjLCxvPCMvKcIaGicbPzIaOy29UC3rYywLUDhmUCMvXDwLYzwqGjIyGkhzHBhvLid09psb1BMrLzMLUzwqGFhWGDMfSDwuGpt09ig51BgWGFhWGDMfSDwuGpt09icCNksKGEWOGicaGicaVlYbtA2LWoIbHDxrVr2vUzxjHDguGyxrHDsbWCMLTyxj5s2v5igrPigLUC2vYDaOGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGFqOGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicb9cIaGicaGigvSC2uGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGCMvZDwX0lNzHBgLKid0GzMfSC2u7cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGigLMicH2ywX1zsa9pt0GDw5KzwzPBMvKihX8ihzHBhvLid09psbUDwXSihX8ihzHBhvLid09psaNjYKGEWOGicaGicbYzxr1CM4GCMvZDwX0oWOGicaGFqOkicaGic8VidiUifr5CguTC3bLy2LMAwmGDMfSAwrHDgLVBGOGicaGC3DPDgnOicHMAwvSzfr5CguPihSkicaGicaGy2fZzsaNC3rYAw5NjZOkicaGicaGy2fZzsaNDgv4DcC6cIaGicaGicaGlY8GDgv4DcbKAxzHBgLKyxnPigLKzw50AwSGzgvUz2fUihn0CMLUzYaODw5IB3vUzgvKihn0CMLUzYK7igHHBNLHigjLCMjLzgekicaGicaGicaVlYbWzw1LDgfHBIbvssaO4OAsihrLEhrHCMvHksWGyNvRyw4G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BICPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHigjVB2XLyw4GkhrYDwuVzMfSC2uPycK7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8VifrLCMLTysbOyw55ysbZzxqGA2fUB25PAYaOC2vSyxjHCYbnEvnrtc9pCMfJBguVu1fmAxrLktOGDhj1zs8NDhj1zsCVms8NmsCkicaGicaGlY8GzgfUigzHBhnLlYDMywXZzsCVmc8NmcCUie5PBgfPigXHAw4GreLut0XbsYWGyNvRyw4GzgLWywTZysb2AweGqM9VBgvHBIGPcIaGicaGic8VicH5yw5Nig1LBwj1yxqGC3rYAw5Nig5VBI1RB3nVBMCGC2vWzxj0AsaNBM90lweTyM9VBgvHBICGzgLHBs1KAwfTigPHzgKkicaGicaGlY8GDhj1zsKUie1LBMPHBwLUideGAw5WDxqGlt4GyMvOyxzPB3iGAwrLBNrPAYbSAw50yxmGzgLHBgvJDc4kicaGicaGAwyGkhnHBML0AxPLzca9pt0GDhj1zsb8FcbZyw5PDgL6zwqGpt09icD0CNvLjYb8FcbZyw5PDgL6zwqGpt09ideGFhWGC2fUAxrPEMvKid09psaNmsCPihSkicaGicaGicbZyw5PDgL6zwqGpsb0CNvLoWOGicaGicb9igvSC2uGAwyGkhnHBML0AxPLzca9pt0GzMfSC2uGFhWGC2fUAxrPEMvKid09psaNzMfSC2uNihX8ihnHBML0AxPLzca9pt0Gmcb8FcbZyw5PDgL6zwqGpt09icCWjYKGEWOGicaGicaGihnHBML0AxPLzca9igzHBhnLoWOGicaGicb9igvSC2uGEWOGicaGicaGigvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigeGyM9VBgvHBIaODhj1zs9MywXZzsLGktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb7cIaGicaGihzHBgLKoIbLCNjVCNmUBgvUz3rOid09psaWlaOGicaGicbLCNjVCNm6igvYCM9YCYWkicaGicaGD2fYBMLUz3m6ifTDlaOGicaGicbZyw5PDgL6zwq6ihnHBML0AxPLzaOGicaGFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLifvvsuqGy29UC3rYywLUDhmkicaGkI8kicbFDMfSAwrHDgvvDwLKq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOGicaGy29UC3qGDxvPzfjLz2v4id0Gl15Bmc05ys1MxxS4Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxSXmN0Kl2K7cGOGicaGAwyGkcf1DwLKuMvNzxGUDgvZDcH2ywX1zsKPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlMzVCM1HDe1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGysb2ywXPzcbvvuLeydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZlaOGicaGicb3yxjUAw5NCZOGw10ScIaGicaGihnHBML0AxPLzdOGDMfSDwukicaGih07cIaGFqOkicaVkIOkicaGkIbwywXPzgf0zsbHCNjHEsbJB25ZDhjHAw50CWOGicaQlWOGif92ywXPzgf0zufYCMf5q29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOkicaGigLMicGHqxjYyxKUAxnbCNjHEsH2ywX1zsKPihSkicaGicaGzxjYB3jZlNb1C2GOyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGyw4GyxjYyxLGktSkicaGicaGCMv0DxjUihT2ywXPzdOGzMfSC2uSigvYCM9YCZOGzxjYB3jZlcb3yxjUAw5NCZOGw10SihnHBML0AxPLzdOGDMfSDwv9oWOGicaGFqOkicaGic8Vig1PBKL0zw1Zl21HEeL0zw1ZcIaGicbPzIaOy29UC3rYywLUDhmUBwLUsxrLBxmGjIyGDMfSDwuUBgvUz3rOidWGy29UC3rYywLUDhmUBwLUsxrLBxmPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlM1PBKL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbOyxzLigf0igXLyxn0icr7y29UC3rYywLUDhmUBwLUsxrLBxn9igL0zw1ZydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cIaGicbPzIaOy29UC3rYywLUDhmUBwf4sxrLBxmGjIyGDMfSDwuUBgvUz3rOid4Gy29UC3rYywLUDhmUBwf4sxrLBxmPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlM1HEeL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbUB3qGzxHJzwvKicr7y29UC3rYywLUDhmUBwf4sxrLBxn9igL0zw1ZydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGlY8GDw5PCxvLsxrLBxmkicaGigLMicHJB25ZDhjHAw50CY51BMLXDwvjDgvTCYKGEWOGicaGicbJB25ZDcb1BMLXDwuGpsbBlI4UBMv3ifnLDcH2ywX1zsLDoWOGicaGicbPzIaODw5PCxvLlMXLBMD0AcaHpt0GDMfSDwuUBgvUz3rOksb7cIaGicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlNvUAxf1zuL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbOyxzLihvUAxf1zsbPDgvTC2a7cIaGicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGih0kicaGih0kcIaGicbYzxr1CM4GEWOGicaGicb2ywXPzdOGzxjYB3jZlMXLBMD0Aca9pt0GmcWkicaGicaGzxjYB3jZoIbLCNjVCNmScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLiePtt04Gy29UC3rYywLUDhmkicaGkI8kicbFDMfSAwrHDgvkC29Uq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOGicaGBgv0ihnHBML0AxPLzca9ihzHBhvLoWOkicaGic8VifbHCNnLigPPA2eGC3rYAw5NcIaGicbPzIaODhLWzw9MihnHBML0AxPLzca9pt0Gj3n0CMLUzYCPihSkicaGicaGDhj5ihSkicaGicaGicbZyw5PDgL6zwqGpsbku09olNbHCNnLkhnHBML0AxPLzcK7cIaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsb2ywXPzcbku09oycK7cIaGicaGicaGCMv0DxjUihT2ywXPzdOGzMfSC2uSigvYCM9YCZOGzxjYB3jZlcb3yxjUAw5NCZOGw10SihnHBML0AxPLzdOGDMfSDwv9oWOGicaGicb9cIaGicb9cGOGicaGlY8GsLnptIbty2HLBweGDMfSAwrHDgLVBIbIAxnHigrPDgfTyMfOA2fUigrPihnPBMKGAMLRysbKAxbLCMX1A2fUcGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZlaOGicaGicb3yxjUAw5NCZOGw10ScIaGicaGihnHBML0AxPLzdOGC2fUAxrPEMvKcIaGicb9oWOGih0kcIaGlYOQcIaGicOGvMfSAwrHDguGzM9YBwf0icHLBwfPBcWGCgHVBMuSihvYBcWGDxvPzcKkicaGkI8kicbFDMfSAwrHDgvgB3jTyxqODMfSDwuSigzVCM1HDcKGEWOGicaGy29UC3qGCgf0DgvYBNmGpsb7cIaGicaGigvTywLSoIaVxLTExhnaxsTaw15CC0bDk1WUw15CC0bDkYqVlaOGicaGicbWAg9UztOGl15BxgrCC1WTxcTCkfWPxsSKlYWkicaGicaGDxjSoIaVxMH0DhbZpZPCl1WVlISVlaOGicaGicb1DwLKoIaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSWltLHlwzDEZr9lvSWltLHlwzDEZr9lvSWltLHlwzDEZeYFsqVAqOGicaGFtSkcIaGicbJB25ZDcbWyxr0zxjUid0GCgf0DgvYBNnBzM9YBwf0xtSkicaGigLMicGHCgf0DgvYBIKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLFtSkicaGih0kcIaGicbYzxr1CM4GE3zHBgLKoIbWyxr0zxjUlNrLC3qODMfSDwuPFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLignYB3nZlwzPzwXKignVBNn0CMfPBNrZicHIzwzVCMuVywz0zxiGzgf0zsKkicaGkI8kicbHC3LUyYbFDMfSAwrHDgvdCM9ZC0zPzwXKq29UC3rYywLUDhmOzgf0ysWGB3bLCMf0Aw9Uksb7cIaGicbJB25ZDcbLCNjVCNmGpsbBxtSkcIaGicbMB3iGkgnVBNn0igzPzwXKtMfTzsbPBIb0AgLZlNzHBgLKyxrPB25dB25MAwCPihSkicaGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicaGignVBNn0ignVBNn0CMfPBNrZid0Gy29UzMLNlMnVBNn0CMfPBNrZihX8ihT9oWOkicaGicaGAwyGkgnVBNn0CMfPBNrZlMjLzM9YzsKGEWOGicaGicaGignVBNn0igjLzM9YzuzPzwXKid0Gy29UC3rYywLUDhmUyMvMB3jLoWOGicaGicaGigLMicHKyxrHw2zPzwXKtMfTzv0GjIyGzgf0yvTIzwzVCMvgAwvSzf0PihSkicaGicaGicaGihrYEsb7cIaGicaGicaGicaGigLMicHUzxCGrgf0zsHKyxrHw2zPzwXKtMfTzv0Pid49ig5LDYbeyxrLkgrHDgfByMvMB3jLrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5IzwzVCMvnzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigjLzM9YzsaNjhTIzwzVCMvgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOy29UC3rYywLUDhmUywz0zxiPihSkicaGicaGicbJB25ZDcbHzNrLCKzPzwXKid0Gy29UC3rYywLUDhmUywz0zxi7cIaGicaGicaGAwyGkgrHDgfBzMLLBgroyw1LxsaMjIbKyxrHw2fMDgvYrMLLBgrDksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbPzIaOBMv3ierHDguOzgf0yvTMAwvSze5HBwvDksa8psbUzxCGrgf0zsHKyxrHw2fMDgvYrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5HzNrLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGywz0zxiGjYr7ywz0zxjgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZcIaGicb9oWOGih0k','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFsWkicaGicaGicaGicaGEWOGicaGicaGicaGicaGicjJB2X1Bw4IoIaI','cIaGicOGqhbHCMfTihTpyMPLy3r9ig9WDgLVBNmGlsbrDwvYEsbVChrPB25ZcIaGicOGqhjLDhvYBNmGE3n0CMLUz30Gu1fmihf1zxj5igrHC2fYihvUDhvRia','ywrQDxn0q29UzMLN','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','mJm1mdy4zw5Lz0Du','id0GrKfmu0uGrK9sifvqrefursC7cIaGicaGignVBNn0igXVy2Tszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOBg9JA1f1zxj5lcb3AgvYzuj1AwX0lNbHCMfTCYK7cGOGicaGicbPzIaOBg9JA1jLC3vSDc5YB3DZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGic8VifrPzgfRigfKysbYB3CGywT0Awy6ihrPzgfRigrPDgvTDwTHBIWGC3vKywGGDgvYlxnVzNqTzgvSzxrLlcbHDgf1igTHBgfOihjHy2uUcIaGicaGicaGy29UC3qGBM90rM91BMrfCNjVCIa9ig5LDYbfCNjVCIGNuMvJB3jKig5VDcbMB3vUzcbVCIbHBhjLywr5igrLBgv0zwqNktSkicaGicaGicbUB3rgB3vUzevYCM9YlNn0yxr1C0nVzguGpsa0mdq7cIaGicaGicaGDgHYB3CGBM90rM91BMrfCNjVCJSkicaGicaGFqOkicaGicaGlY8GmI4Gu29MDc1KzwXLDguGDgLHCcbYB3CGywT0AwyGkg11BhrPlxjVDZOGDgLHCcbYB3CGBwvTywTHAsbZDwzMAxGGDxvPzhy3ihnLBMrPCMKPlGOGicaGicbJB25ZDcbKzwXLDgvKsxrLBxmGpsbBxtSkicaGicaGzM9YicHJB25ZDcbSB2nRzwrsB3CGB2yGBg9JA1jLC3vSDc5YB3DZksb7cIaGicaGicaGy29UC3qGC2v0q2XHDxnLCYa9ifTDoWOGicaGicaGignVBNn0ihvWzgf0zvbHCMfTCYa9ifTDoWOGicaGicaGigXLDcbWid0GmtSk','jYWkicaGicaGicbVBgreyxrHlaOGicaGicaGihjLC3bVBNnLrgf0ysWkicaGicaGicb7cIaGicaGicaGicb0B3bPyZOGA2fMA2fdB25MAwCUDg9WAwmGFhWGBNvSBcWkicaGicaGicaGigTLEuzPzwXKoIbRywzRyunVBMzPzY5RzxLgAwvSzcb8FcaN','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOycr7A2v5Fsa9icqKE2rLDgfPBfbSywnLAg9SzgvYsw5KzxGRk31GktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGkhvWzgf0zwrFyxqSihvWzgf0zwrFyNKPigTLigrLDgfPBcbvuerbveuGDMLHigHLBhbLCGOGicaGicaGigrLDgfPBfbSywnLAg9SzgvYsw5KzxGGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOzgv0ywLSrMLLBgrZlcbKzxrHAwXwywX1zxmSigL0zw0Sigv2zw50q29UDgv4DcWGzgv0ywLSugXHy2vOB2XKzxjjBMrLEcK7cGOGicaGicaGigrLDgfPBfzHBhvLCY5WDxnOkgL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0PoWOGicaGicaGignVBNn0igrLDgfPBfvWzgf0zvf1zxj5id0GyaOGicaGicaGicaGvvbeqvrficr7zgv0ywLSvgfIBgvoyw1LFqOGicaGicaGicaGu0vuicr7zgv0ywLSrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE2rLDgfPBfbYAw1HCNLlzxL9id0Gjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEh0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkcIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLDgfPBfvWzgf0zvf1zxj5lcbKzxrHAwXwywX1zxmPoWOGicaGicaGigLMicHKzxrHAwXszxn1BhqUCM93CY5Szw5NDgGGpIaWksb7cIaGicaGicaGicb1CgrHDgvKsxrLBxmUChvZAcHKzxrHAwXszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGvxbKyxrLzcaKE3vWzgf0zwrjDgvTCY5Szw5NDgH9igrLDgfPBcbPDgvTkhmPycK7cGOGicaGicaVlYaZlIbqCM9JzxnZieLou0vsvcbVCgvYyxrPB25ZcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbPBNnLCNrjDgvTCYKGEWOGicaGicaGic8ViefKzcbMB3jLAwDUigTLEsb0BYbPDgvTcIaGicaGicaGAxrLBvTMB3jLAwDUs2v5xsa9ihbYAw1HCNLlzxLwywX1ztSkcIaGicaGicaGlY8Gqxv0BY1Nzw5LCMf0zsbvvuLeihvUDhvRigrLDgfPBcbqsYbIAwXHignSAwvUDcb0AwrHAYbTzw55DxbWBhKkicaGicaGicaVlYaOA29UC2LZDgvUigrLBMDHBIbJCMvHDgvdB21WB3nPDguGzgfUigTVBNzLBNnPigf1Dg9hzw5LCMf0zsKkicaGicaGicbPzIaOAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GDw5KzwzPBMvKihX8igL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0Gpt09ig51BgWPihSkicaGicaGicaGigL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0GpsbYzxf1AxjLkcD1DwLKjYKUDJCOktSkicaGicaGicb9cG','jYWkicaGicaGicaGihrHyMXLtMfTztOGjW','cIaGicOVcIaGz2v0tgLZDff1zxj5kg9WDgLVBNmGpsb7FsKGEWOGicaGlY8Gtg9HzcbXDwvYEsbKyxnHCIbKzw5Nyw4GCgXHy2vOB2XKzxiGCMvWBgfJzw1LBNqkicaGia','icaGignVBNn0igzVCM1HDhrLzca9ihn1CgvYlMzVCM1HDfjLC3bVBNnLrgf0ysHKyxrHktSk','j10kicaGicaGicaGic5MAwX0zxiOzMLLBgqGpt4Giwf1Dg9hzw5LCMf0zuzPzwXKCY5PBMnSDwrLCYHMAwvSzcKPoWOkicaGicaGicbJB25ZDcbTAxnZAw5NrMLLBgrZid0GCMvXDwLYzwrgAwvSzhmUzMLSDgvYkgzPzwXKid0+icfYzxeUyM9KEvTMAwvSzf0GFhWGCMvXlMjVzhLBzMLLBgrDid09psaNjYK7cGOGicaGicaGigLMicHTAxnZAw5NrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgrZjYWkicaGicaGicaGicaGBwvZC2fNztOGyfjLCxvPCMvKigzPzwXKkhmPoIaKE21PC3nPBMDgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbfBMrWB2LUDcb1CgrHDguGBwvTyNv0DwHRyw4GChjPBwfYEsbRzxKkicaGicaGAwyGkgvUzhbVAw50id09psaNDxbKyxrLjYKGEWOGicaGicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','y29SDw1UrM9YBwf0CW','txDOvei','Aw5JBhvKzxm','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHWA1zHBcK7cGOGicaGicaGic8Vie1HC3rLCIaOzgvWDgGTmcKGzgKTvvbeqvrfigTLihDYAxrLu291CMnLicHYzwfKl3DYAxrLihnWBgL0lwf3yxjLlcbPzgvUDgLRigPHBhvYcIaGicaGicaGlY8GzxHPC3rPBMCPicSGuKvuvvjosu5hihvUDhvRihjLC3bVBNnLlIbezxnJzw5Kyw50igTLig5HBweGDgfIzwWGy2XVC3vYzsaOCxvHBgLMAwvKks4kicaGicaGicbJB25ZDcbFx3rHCMDLDca9ign1CNjLBNqUAxnnyxn0zxiGpYb3CML0zvnVDxjJzsa6ign1CNjLBNqUDgfIBgu7cIaGicaGicaGy29UC3qGx19Yzxr1CM5PBMCGpsbJDxjYzw50lMLZtwfZDgvYid8GkcCGuKvuvvjosu5hicCGkYbYzxr1CM5PBMDgAwvSzhmPidOGjYC7cIaGicaGicaGy29UC3qGx191CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOcIaGicaGicaGicaNvvbeqvrficCGkYbFx3rHCMDLDcaRicCGu0vuicCGkYbZzxrdBgf1C2vZlMPVAw4OjYWGjYKGkYaNifDirvjficCGkYbUB2rLlNbRicSGjYa9icqNicSGCcaRif9FCMv0DxjUAw5NlaOGicaGicaGicaGDxbKyxrLugfYyw1ZcIaGicaGicaGktSkicaGicaGicb0B3vJAgvKlMfKzcHJDxjYzw50lNrHyMXLktSkicaGicaGicbPzIaOy3vYCMvUDc5PC01HC3rLCIaMjIbFx3vWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbTyxn0zxjezwXLDgvKsxrLBxmUChvZAcHFx3vWzgf0zvjLC3vSDc5YB3DZwZbDktSkicaGicaGicb9cGOGicaGicaGic8VicGZksbLEhbHBMq6igfUywSGquTusuyGkgLZx2rLBgv0zwq9rKfmu0uPigXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRihnVzNqTzgvSzxrLlaOGicaGicaGic8VicaGicbgt1iGvvbeqvrficHRDw5JAsbZzwjLBhvTig11DgfZAsKSihnRAxaGCgfYzw50q29SDw1Uie5vteWUievUCxvLDwuGDgLHCcbYB3CUcIaGicaGicaGzM9YicHJB25ZDcbJAcbVzIbUB2rLlMnOAwXKCMvUksb7cIaGicaGicaGicbPzIaOy2GUB25ezwXLDguGit09icDJyxnJywrLjYb8FcbJAc5JAgLSzfnVzNrezwXLDguGit09ihrYDwuPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19LEhbHBMrwywWGpsbJDxjYzw50lNjVD1TJAc5WyxjLBNrdB2X1Bw5DoWOGicaGicaGicaGAwyGkf9FzxHWyw5KvMfSid09psbUDwXSihX8if9FzxHWyw5KvMfSid09psb1BMrLzMLUzwqPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19JAgLSze5VzguGpsbFx3nKq2fZy2fKzu1LDgeUBM9KzxnBy2GUy2HPBgruywjSzv07cIaGicaGicaGicaVlYbpuKrfuIbcwsa8y2HPBgrqAZ4GC2vIzwX1Bsbgt1iGvvbeqvrfiokgKIb1CNv0yw4GywT1AxnPC2KGBg9JAYbKzxrLCM1PBMLZDgLRicHTAxrPz2fZAqOGicaGicaGicaGlY8GCMLUz2fUigTVBMT1CMvUC2K7igrLywrSB2nRihbLBNvOid0GugHHC2uGmdrKks4GsgfUEweGBwvUz3vIywGGvvjvvefoigjHCMLZlcbIDwTHBGOGicaGicaGicaGlY8GAgLTChvUyw4GAgfZAwWG4OAsigHHC2LSignHC2nHzguGAwrLBNrPAY4kicaGicaGicaGignVBNn0if9Fy2HPBgrsB3DZid0Gkgf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGj1nftevdvcaNicSGx19ZzfnLBgvJDenVBhmOx19JAgLSze5VzguPicSGjYbguK9nicCGkYbJAc5JAgLSzfrHyMXLicSGjYbxsevsrsaNicSGy2GUy2HPBgrdB2X1Bw4GkYaNid0GjdeGqu5eia','jZSkicaGicaGy29UC3qGzM9YzwLNBKTLEsa9icC','laOGicaGicaGihrLEhq6igL0zw0U','qNffzxC','igj1DcbJB21WB25LBNrZigfYzsbJB25MAwD1CMvKoMaSiguUBwvZC2fNzsK7cIaGicb0AhjVDYbLoWOGih0kicaVlYbkAwTHihrPzgfRigfKysbJB21WB25LBNrZlcbZAwXLBNqGC2TPCcb3ywPHCGOGignVBNnVBguUBg9NkgboBYbJB21WB25LBNqGzw5NAw5LihjLCxvPCMvKigzVCIa','BwfW','iJOGEWOGicaGicaGicaGicaIzMLLBgqXiJOGiNzHBhvLmsiScIaGicaGicaGicaGicjMAwvSzdiIoIaIDMfSDwuYiIWkicaGicaGicaGicaGiG','lMDLDeXPC3qOB3b0Aw9UCYK7cGOGicaGlY8GrM9YBwf0ihjLC3bVBNnLigjLCMrHC2fYA2fUig1VzgukicaGigLMicHWywDPBMf0zsKGEWOGicaGicbJB25ZDcb0B3rHBfbHz2vZid0Gtwf0Ac5JzwLSkhjLC3vSDc50B3rHBfjLy29YzhmGlYbWzxjqywDLktSkicaGicaGy29UC3qGAgfZtMv4Dca9ihbHz2uGpcb0B3rHBfbHz2vZoWOGicaGicbJB25ZDcbOyxnqCMv2Aw91CYa9ihbHz2uGpIaXoWOkicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGigrHDge6ihjLC3vSDc5KyxrHihX8ifTDlaOGicaGicaGignVDw50oIbYzxn1BhqUzgf0ysa/ihjLC3vSDc5KyxrHlMXLBMD0Aca6idaScIaGicaGicaGCgfNAw5HDgLVBJOGEWOGicaGicaGicaGy3vYCMvUDf9WywDLoIbWywDLlaOGicaGicaGicaGCgvYx3bHz2u6ihbLCLbHz2uScIaGicaGicaGicb0B3rHBf9YzwnVCMrZoIbYzxn1BhqUDg90ywXszwnVCMrZihX8idaScIaGicaGicaGicb0B3rHBf9WywDLCZOGDg90ywXqywDLCYWkicaGicaGicaGigHHC19UzxH0oIbOyxnozxH0laOGicaGicaGicaGAgfZx3bYzxzPB3vZoIbOyxnqCMv2Aw91CWOGicaGicaGih0kicaGicaGFsK7cIaGicb9igvSC2uGEWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGzgf0ytOGCMvZDwX0lMrHDgeGFhWGw10ScIaGicaGicaGy291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmaOGicaGicb9ktSkicaGih0kcIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZktSkcIaGicbJB25ZB2XLlMXVzYHGtg9VA3vWihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGzgf0ytOGBgLZDcWkicaGicaGC2vHCMnOoIbZzwfYy2GScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','BwfZDgvY','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifrVBgfRigzVCM1HDcbHzhzHBMnLzcaOy29UzgL0Aw9UCY9SB2DPyYKkicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0fKDMfUy2vKihDOzxjLigzVCM1HDcbPCYbUB3qGC3vWCg9YDgvKigLUic9MAxjZDcbLBMrWB2LUDc4GvxnLic9YzwfKigvUzhbVAw50igzVCIbJB21WBgv4ihf1zxjPzxmNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbHzgeGzgKGDMfSAwrgAwvSzhmkicaGignVBNn0ihzHBgLKrMLLBgrZid0G','x2v4DgvUzgvKrMLLBgrZ','iga7cIaGicaGicaGicbWyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbiyw5KBguGC29YDf9JB2X1Bw5ZigPPA2eGywrHcIaGicaGigLMicHVChrPB25ZlNnVCNrFy29SDw1UCYaMjIbbCNjHEs5PC0fYCMf5kg9WDgLVBNmUC29YDf9JB2X1Bw5ZksaMjIbVChrPB25ZlNnVCNrFy29SDw1UCY5Szw5NDgGGpIaWksb7cIaGicaGicaGy29UC3qGB3jKzxjqyxj0CYa9ig9WDgLVBNmUC29YDf9JB2X1Bw5ZlM1HCcHPDgvTid0+ihSkicaGicaGicaGignVBNn0ignVBhvTBIa9igL0zw0Uy29SDw1UoWOGicaGicaGicaGy29UC3qGzgLYzwn0Aw9Uid0GkgL0zw0UzgLYzwn0Aw9UihX8icDbu0mNks50B1vWCgvYq2fZzsGPoWOGicaGicaGicaGAwyGkcfJB2X1Bw4PihjLDhvYBIbUDwXSoWOGicaGicaGicaGAwyGkcf0AgLZlNzHBgLKrMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKGjIyGy29SDw1Uice9psaN','u1fxA1a','jYbPCYa','ks4G','jYWkicaGicaGicbYzxnWB25ZzurHDgeScIaGicaGicaGEWOGicaGicaGicaGDg9WAwm6igTHzMTHq29UzMLNlNrVCgLJihX8ig51BgWScIaGicaGicaGicbRzxLgAwvSzdOGA2fMA2fdB25MAwCUA2v5rMLLBgqGFhWGjW','D29YA2zSB3C','oYb0AguGBxv0yxrPB24GC3vMzML4ignHBM5VDcbIzsbHChbLBMrLzcbZywzLBhKNktSkicaGicaGicaGicaGFqOGicaGicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','lY8Gq3vZDg9Tigf1zgL0ignVBhvTBNmGBwfWCgLUzYbKyxjPihbHEwXVywqk','oICSigvYCM9YktSk','cIaGlYOQcIaGicOGrKSTu0qTmsbMB3j3yxjKigjSB2nRlIbuB2XHAYbJCMvHDguVDxbKyxrLigfUywSGEwfUzYbTzw51BMP1AYbWyxjLBNqGC29MDc1KzwXLDguGEwfUzWOGicaQihrLCMHHChvZicHPC19KzwXLDgvKpvrsvuuPigf0yxuGDgLKywSGywrHicG0mJiPlIbiyw55ysbgsYbIzxiTCgfYzw50ihnVzNqTzgvSzxrLlwvUywjSzwqkicaGkIaOCMvNAxn0CNKGC29MDerLBgv0zuzRugfYzw50CYKGEwfUzYbKAwnLAZSGrKSGBNvSBc9HyNnLBNqG4OAsihnRAxaUierPCgfUz2DPBcbYB3v0zsaVy3jLyxrLcIaGicOGzgfUic91CgrHDguGC2vIzwX1BsbHzgreyxrHl3vWzgf0zurHDgeUifbYzs1JAgvJAYbWB29SihrLCNbPC2fOicHUB24TDhjHBNnHA3nPB25HBcK6igXPAgf0cIaGicOGy2f0yxrHBIbHDg9TAwnPDhKGqMfNAwfUieiGzgKGCMvWB3j0ifbOyxnLidaYlGOGicaQiebWyxjHBsb7t2jQzwn0FsbIB2r5ic0GCMvXDwvZDcbIB2r5icHYzxeUyM9KEsKkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gj2nYzwf0zsCGFcaNDxbKyxrLjYaODw50DwSGCgvZyw4GzxjYB3iGndiYkqOGicaQlWOGigfZEw5JignOzwnRu29MDerLBgv0zuzRugfYzw50CYHIB2r5lcbVCgvYyxrPB24PihSkicaGigLMicGHyM9KEsb8Fcb0ExbLB2yGyM9KEsaHpt0Gj29IAMvJDcCPihjLDhvYBJSkicaGignVBNn0ihbVB2WGpsbKyI5NzxrqB29SkcK7cG','lcbYDw5UAw5NihDPDgHVDxqGzxzLBNrZycK7cN0kcI8QkGOGkIa','zgDOyvy','uKr1rNG','zgv0ywLSq29UzMLN','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGzMLSDgvYihLHBMCGDgvYC2vKAwekicaGkIbaCMv0DxjUCYb7qxjYyxL9iezPBhrLCIb5yw5NihrLCNnLzgLHcIaGicOVcIaGz2v0qxzHAwXHyMXLrMLSDgvYCYGPihSkicaGihjLDhvYBIa','zMLLBgrwywXPzgf0Aw9U','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','yxv0B0nHBgn1Bgf0zuzPzwXKCW','BwLZC2LUzW','lMnYzwf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','CMvHzenVBxbVC2L0zq','j11DcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2nVBMzSAwn0lNjVD3mUBgvUz3rOid4GmcKGEWOGicaGicaGicaGicaGignVBNn0ignVBMzSAwn0rxjYB3iGpsbUzxCGrxjYB3iOiKnHBM5VDcbYzxn0B3jLoIaN','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFqOGicaGicaGicaGxqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','y29UC3qGz2vUzxjHDgvKrMLLBgrZid0G','CMvHza','ihX8icDUzxCGCMvJB3jKj31GktSk','zMLSDgvYCW','ihX8icfbCNjHEs5PC0fYCMf5kgrHDgeU','kgrHDgeGFhWGw10PlM1HCcHFx3jVDYa9pIb7ignVBNn0if9FCIa9ihSGlI4Ux19YB3CGFtSGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','jYa6cIaGicaGicaGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','cIaGlYOQcIaGicOGq29TCg9ZAxrLihjLywqGlsbszwfKigHLywrLCIb3AxrOigrLDgfPBcbPDgvTCWOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0Gt3b0Aw9UCYb3AxrOihDOzxjLignSyxvZzsaOC2fTzsbMB3jTyxqGyxmGz2v0rgf0ysKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbszwnVCMrZihDPDgGGzgv0ywLSigL0zw1ZcIaGicOVcIaGyxn5BMmGCMvHzenVBxbVC2L0zsHVChrPB25Zksb7cIaGicb0CNKGEWOGicaGicaVlYbcDwLSzcbxsevsrsbJBgf1C2ukicaGicaGAwyGkcfVChrPB25ZlNDOzxjLksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGicaGFqOkicaGicaGBgv0ihbHCMfTCYa9ifTDoWOGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGigXLDcb3AgvYzunSyxvZzvnXBdSkicaGicaGDhj5ihSkicaGicaGicb3AgvYzunSyxvZzvnXBca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGignVBNn0igvYCM9Yid0GBMv3ievYCM9YkcDjBNzHBgLKihDOzxjLignVBMrPDgLVBNm6icCGkYbLlM1LC3nHz2uPoWOGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kcIaGicaGic8Viff1zxj5igHLywrLCIbYzwnVCMrZcIaGicaGignVBNn0igHLywrLCLf1zxj5id0Gj1nftevdvcaQiezst00GjYaRihrOAxmUz2v0vgfIBgvtB3vYy2uOj3jLywqNksaRicCGv0HfuKuGjYaRihDOzxjLq2XHDxnLu3fSlNnXBdSkicaGicaGCgfYyw1Zid0GD2HLCMvdBgf1C2vtCwWUCgfYyw1ZoWOkicaGicaGy29UC3qGAgvHzgvYuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhrZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIb7cIaGicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGicaGy291BNq6idaScIaGicaGicaGicbKyxrHoIbBxqOGicaGicaGih07cIaGicaGih0kcIaGicaGic8ViezVCIbLywnOigHLywrLCIWGzMv0y2GGzgv0ywLSigL0zw1ZcIaGicaGignVBNn0ignVBxbVC2L0zvjLC3vSDhmGpsbBxtSkicaGicaGy29UC3qGzgv0ywLSs2v5id0GjW','iL0kicaGicaGicaGih0ScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cGOGicaGicaVlYbwywXPzgfZAsbZzwXLy3qGzMLLBgrZigPPA2eGywrHicHZDxbWB3j0ifnrtcbLEhbYzxnZAw9UCYKkicaGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGicbJB25ZDcb2ywXPzezPzwXKCYa9ia','yxvKAxrdB2X1Bw5Z','jYWkicaGicaGicaGigrVy3vTzw50yxrPB246icDtzwuGAw5KAxzPzhvHBcbLBMrWB2LUDcbKB2n1BwvUDgf0Aw9UjYWkicaGicaGicaGigDLBMvYyxrLzdOGjW','ksb8FcaWoWOGicaGicaGicaGCMv0DxjUihn1BsaRicHXDhKGkIbWCMLJzsK7cIaGicaGicaGFsWGmcK7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2fTB3vUDca9icqKE3jLy2fSy1bSywnLAg9SzgvYkYT9ycK7cIaGicaGicaGCMvJywXJDwXHDgvKvMfSDwvZlNb1C2GODg90ywXbBw91BNqPoWOGicaGicb9','cIaG','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8Gq1jfqvrflunptvbpu0LursaVifvqrefurs1dt01qt1njveu6igzVCMnLihnJB3bLignVBhvTBIbPBNnPzguGBwfZDgvYigjVzhKUcIaGlY8GtwfZDgvYigLZihDYyxbWzwqGyxqGCMvXlMjVzhLBCM9VDeTLEv07igrLDgfPBcbYB3DZigLUAgvYAxqGC2nVCguGDhjHBNnPDgL2zwX5cIaGlY8GDMLHig1HC3rLCIbVD25LCNnOAxaGkg5VigrPCMvJDcbZy29WzsbJB2X1Bw4GB24Gzgv0ywLSihrHyMXLks4kicbPzIaOzw5KCg9PBNqGpt09icDJCMvHDguTy29TCg9ZAxrLjYb8FcbLBMrWB2LUDca9pt0Gj3vWzgf0zs1JB21WB3nPDguNksb7cIaGicbJB25ZDcbTyxn0zxjcB2r5id0GCMvXlMjVzhLBjW','BNvTyMvY','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIiScIaGicaGicaGicaGici','igjLCMrHC2fYA2fUigTYAxrLCMLHcNjVDxrLCI5WB3n0kcCVzMLYC3qNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','oWOGih0kcIaGlYOQcIaGicOGqNvPBgqGC2vHCMnOifDirvjfignSyxvZzsbIzxjKyxnHCMTHBIbZzwfYy2HHyMXLignVBhvTBNmkicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOvMfSDwuGlsboAwXHAsbWzw5JyxjPyw4kicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOqNKGlsblB2XVBsb5yw5NigrPy2fYAqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzqOGicaQlWOGigj1AwXKu2vHCMnOv2HLCMvdBgf1C2uOC2vHCMnOvMfSDwuSihnLyxjJAej5id0Gj2fSBcCPihSkicaGigLMicGHC2vHCMnOvMfSDwuGFhWGC2vHCMnOvMfSDwuUDhjPBsGPid09psaNjYKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGC2vHCMnOywjSzunVBhvTBNmGpsb0AgLZlMDLDfnLyxjJAgfIBgvdB2X1Bw5ZkcK7cIaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGy29UC3qGBgLRzvzHBhvLid0GycuKE2vZy2fWzwrtzwfYy2HwywX1zx0LydSkcIaGicbPzIaOC2vHCMnOqNKGjIyGC2vHCMnOqNKGit09icDHBgWNksb7cIaGicaGic8VienHCMKGzgKGA29SB20GC3bLC2LMAwSkicaGicaGy29UC3qGy29SDw1Uid0GC2vHCMnOywjSzunVBhvTBNmUzMLUzcHJB2WGpt4Gy29SlM5HBwuGpt09ihnLyxjJAej5ktSkicaGicaGAwyGkgnVBhvTBIaMjIbJB2X1Bw4UC2vHCMnOywjSzsKGEWOGicaGicaGihjLDhvYBIbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydSkicaGicaGFqOGicaGFqOkicaGic8VienHCMKGzgKGC2vTDweGA29SB20GC2vHCMnOywjSzqOGicaGy29UC3qGy29UzgL0Aw9UCYa9ihnLyxjJAgfIBgvdB2X1Bw5ZcIaGicaGic5MAwX0zxiOy29Sid0+ignVBc5ZzwfYy2HHyMXLkqOGicaGicaUBwfWkgnVBca9pIbGvvbqrviOjhTJB2WUBMfTzx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPycK7cGOGicaGAwyGkgnVBMrPDgLVBNmUBgvUz3rOid4GmcKGEWOGicaGicbYzxr1CM4GyfDirvjficGKE2nVBMrPDgLVBNmUAM9PBIGNie9sicCPFsLGoWOGicaGFqOkicaGihjLDhvYBIaNjZSkicb9','icaGihjLDhvYBIbZDxbLCI5MB3jTyxrszxnWB25ZzurHDgeOzgf0ysK7','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0','C2XPy2u','zMLLBgrqB2XPy3K','lNvWzgf0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4Da','yxv0B0DLBMvYyxrL','icOG','B25ezwXLDgu','cIaGicaGicaGlY8GrKSTu0qTmIbYzxn0CMLJDcaJ','id0GjdfGoWOGicaGicbJB25ZDcbKzwXLDgvdAgLSzfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzwXLDgvdAgLSzff1zxj5lcbBAgvHzgvYuhjPBwfYEuTLEvzHBhvLxsK7cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50FsbJAgLSzcbYzwnVCMqOCYKGzNjVBsa','y2HPBgrdB2X1Bw5Z','l2fKANvZDcaTiefKANvZDcbKyxrHia','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','cI8ViokuGokuGokuGcbtB2z0lurLBgv0zsbszwfKiezPBhrLCIbnAwrKBgv3yxjLicHsmtuPiokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGaOVlYbezwzHDwX0ieLUDMLZAwjSztOGAw5Qzwn0igzPBhrLCIaN','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjMAwvSzdeIlcaIzMLLBgqYiL0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbKyw4GD2HLCMuUDMfSDwukicaGigLMicGHCMvXlMjVzhKUD2HLCMuUA2v5ihX8ihjLCs5IB2r5lNDOzxjLlNzHBhvLid09psb1BMrLzMLUzwqGFhWGCMvXlMjVzhKUD2HLCMuUDMfSDwuGpt09ig51BgWGFhWGCMvXlMjVzhKUD2HLCMuUDMfSDwuGpt09icCNksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj1DOzxjLigTLEsbHBMqGDMfSDwuGyxjLihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIb7icjRzxKIoIaI','cNjVDxrLCI5WB3n0kcCVy3jLyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','jZOGEWOGicaGicaGihr5Cgu6icC','v0HfuKuG','iICScIaGicaGicaGzxHHBxbSztOG','x2XVB2T1CenVBMzPzW','cNjVDxrLCI5WB3n0kcCVzgvSzxrLjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','jYKUienVBMzPzY1KCML2zw4GkhrHBNbHigjVzhKGB3b0Aw9UCYKSigrPDgvYyxbRyw4GDgfUCgeklY8GC3LHCMf0igf1DgGGkhzPC2LIAwXPDhKGzMLSDgvYlcbcvuTbtIbstfmG4OcuigTHCMvUysbPDhuGDgLKywSGywrHigD1yxjKicfYzxeUDxnLCIKUcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGAwyGkhjLCs5TzxrOB2qGit09icDqt1nujYKGCMv0DxjUig5LEhqOktSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGAwyGkcfBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNywDNCMvNyxrLj10UAw5JBhvKzxmOzw5KCg9PBNqPksbYzxr1CM4GBMv4DcGPoWOkicbJB25ZDcbZB2z0rgvSzxrLq29UzgL0Aw9Uid0GEYbRzxK6icC','r05YrwC','ywXS','id0GrKfmu0uGt1jerviGqLKGjYaRif9Fy2HPBgroB2rLlNbRicSGjYbgt1iGvvbeqvrfjYWkicaGicaGicaGicaGw19FzxHWyw5KvMfSxqOGicaGicaGicaGksKUCM93CZSkicaGicaGicaGigzVCIaOy29UC3qGy3iGB2yGx19JAgLSzfjVD3mPihDVCMSUChvZAcH7ihrHyMXLoIbJAc5JAgLSzfrHyMXLlcbYB3C6ignYlcbPC01HC3rLCJOGzMfSC2uGFsK7cIaGicaGicaGFqOGicaGicb9cIaGicaGihjLDhvYBIb7ihrVDwnOzwq6ifSUlI50B3vJAgvKxsWGBwfZDgvYrgvSzxrLzeL0zw1ZlcbKzwXLDgvKq291BNq6ihzPC2L0zwqUC2L6zsb9oWOGicaGFtSkcIaGicbJB25ZDcbWB29Sid0GzgiUz2v0ug9VBcGPoWOGicaGy29UC3qGy2XPzw50id0GyxDHAxqGCg9VBc5JB25Uzwn0kcK7cGOGicaGDhj5ihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDcruDjtICPoWOkicaGicaGlY8Gms4Gs3vUy2KGyMfYAxmGBwfZDgvYieflveLgihLHBMCGy29JB2SGA3jPDgvYAweGkezpuIbvuerbveuGkYbPC19KzwXLDgvKpuzbtfnfktOkicaGicaGlY8GicaGmcbYB3CG4OAsidqWnc4GC2vSzwn0q29SCYbJDwT1Ccb1BNr1AYbUB2rLig1HC3rLCIaOCgSGkYbYzxvZywjSzsaRihbHCMvUDenVBhvTBIbHBMfRks4kicaGicaGy29UC3qGC2vSzwn0ugfYyw1Zid0Gw107cIaGicaGignVBNn0ihDOzxjLqNvPBhqGpsb0AgLZlMj1AwXKq29TCgXLEfDOzxjLq2XHDxnLkgnYAxrLCMLHlNDOzxjLlcbZzwXLy3rqyxjHBxmSidePoWOGicaGicbJB25ZDcbFx21HC3rLCK5VzguGpsbFx3nKq2fZy2fKzu1LDgeUBM9KzxnBx19ZzenHC2nHzgvnzxrHlM1HC3rLCL07cIaGicaGignVBNn0igXVy2TrDwvYEsa9icDtruXfq1qGjYaRif9FC2rtzwXLy3rdB2XZkf9FBwfZDgvYtM9KzsKGkYaNiezst00GjYaRihDYAxrLu291CMnLicSkicaGicaGicaNifDirvjficGNicSGD2HLCMvcDwLSDc5ZCwWGkYaNksbbtKqG','CMvMvgfIBgu','icaGic8VicH3AgvYzs1RzxKGuJe1ksbZzwHPBMDNysb0zxiTChjVEwvRC2KGzM9YBwf0uMvZCg9UC2veyxrHoYbOyxb1CYbKyxjPihjLC3bVBNnLihb1yMXPAWO','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGjW','DxnWwMy','igrHDgeGCMvZDg9YzwqGC3vJy2vZC2z1BgX5ycK7cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzs1Yzxn0B3jLigrHDgeG','icaGic8ViezPzwXKihzHBgLKyxrPB24Gy29UzMLNDxjHDgLVBGOGicaGDgHPCY52ywXPzgf0Aw9Uq29UzMLNid0GEWO','mtKZmJDzDfPey0S','cIaGicb9oWO','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLicyMihjLC3vSDc5KyxrHicyMihjLC3vSDc5KyxrHlMXLBMD0Aca+idaPihSkicaGicaGy29UC3qGCMvJB3jKid0GCMvZDwX0lMrHDgfBmf07cIaGicaGigLMicHYzwnVCMrBCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1UxsaHpt0GDw5KzwzPBMvKicyMcIaGicaGicaGicbtDhjPBMCOCMvJB3jKw3jLCs5FCMvXDwvZDfnJB3bLlMnVBhvTBL0Pice9psbtDhjPBMCOCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicbTzxnZywDLoIaN','B2jQzwn0','y2LZywG','cIaGicaVlYbeyxrLvgLTzsbMAwvSzhmGy29UzMLNDxjHDgLVBGOGicaGDgHPCY5KyxrLvgLTzuzPzwXKCYa9ia','we5kAfO','zgv0ywLSvgfIBgu','id0Gja','mZa5odeZnK15CuL2wq','A2fMA2e','cIaGicaGicaGAxrLBs4','laOGicaGicaGihrLEhq6igL0zw1BBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0id8Gj2rPC3bSyxLFDgv4DcCGoIb0zxH0rMLLBgrZwZbDxsb8FcaNjWOGicaGicb9ksK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHrhLUyw1PyYaO','jZSkcIaGicaVlYbqyxjZzsbZB3j0x2nVBhvTBNmkicaGigXLDcbZB3j0x2nVBhvTBNmGpsbBxtSkicaGigLMicHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmGjIyGqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmPicyMihjLCs5IB2r5lNnVCNrFy29SDw1UCY5Szw5NDgGGpIaWksb7cIaGicaGihnVCNrFy29SDw1UCYa9ihjLCs5IB2r5lNnVCNrFy29SDw1UCY5TyxaOAxrLBsa9pIaOEWOGicaGicaGignVBhvTBJOGAxrLBs5JB2X1Bw4ScIaGicaGicaGzgLYzwn0Aw9UoIaOAxrLBs5KAxjLy3rPB24GFhWGj0ftqYCPlNrVvxbWzxjdyxnLkcKkicaGicaGFsKPoWOGicaGFqOkicaGic8VifbYB3nLCYbWyxjHBwv0zxiGD2HLCMuGzgvUz2fUigzVCM1HDcbHzhzHBMnLzcbJB25KAxrPB25ZcIaGicbSzxqGD2HLCMuGpsbUDwXSoWOGicaGAwyGkhjLCs5IB2r5lNDOzxjLicyMihr5CgvVzIbYzxeUyM9KEs53AgvYzsa9pt0Gj29IAMvJDcCPihSkicaGicaGAwyGkefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPihX8icHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKPksb7cIaGicaGicaGD2HLCMuGpsbYzxeUyM9KEs53AgvYztSkicaGicaGFqOGicaGFqOkicaGic8VifbYB3nLCYbWyxjHBwv0zxiGC2vSzwn0ihvUDhvRigTVBg9TihnLBgvRDgLMcIaGicbJB25ZDcb2ywXPzezPzwXKCYa9ia','ywrQDxn0','ktOGCgfYzw50ihDHAMLIia','CMvZDg9Yzq','zgv0zwn0vgv4DenVBhvTBG','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','tMf0ruu','C3rHCNrZv2L0Aa','cGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','cIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzxjYB3iGDhLWzxmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mduNksb7ic8VifbVC3rNCMvtuuWGDw5PCxvLihzPB2XHDgLVBGOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEYaVlYbqB3n0z3jLu1fmigzVCMvPz24GA2v5ihzPB2XHDgLVBGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbHzgrPBMCG','ksaMjIa','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGlY8GugfUz2DPBcbTB2rLBcbJB21WB3nPDguGy3jLyxrLig1LDgHVzaOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','ksKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicaGig1LC3nHz2u6icDqCM9Wzxj0EsaI','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','Dhj1zq','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','Dg9vChbLCKnHC2u','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','laOGicaGica','ywn0Aw9U','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGCM91DgvYid0GzxHWCMvZCY5sB3v0zxiOktSky29UC3qG','DMHrtge','ycK7cG','EvLssgK','cIaQcIaQiez1BMDZAsb1BNr1AYbTzw5NzwTZzwT1C2KGBw9KDwWG','D3H3v1m','jYWkicaGicaGicaN','laOGicaGicbKyxrLrMLLBgrZoIa','lYr7zw5KCg9PBNroyw1LFwa7cIaGicaGicaGicaGigfWCc51C2uOzw5KCg9PBNrqCMvMAxGSigvUzhbVAw50uM91DgvYktSkcIaGicaGicaGicaGigXVz0vUzhbVAw50uMvNAxn0zxjLzcHLBMrWB2LUDe5HBwuSigvUzhbVAw50uhjLzML4ktSkcIaGicaGicaGicaGic8VifjLz2LZDgvYigv4Cg9YDcbYB3v0zxmGDw50DwSGzw5KCg9PBNqGAw5PicHHDxrVlwrLDgvJDcbKyxjPigvTyMvKzgvKignVBMzPzYKkicaGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGicbJB25ZDcbLEhbVCNrdB25MAwCGpsbLEhrYywn0rxHWB3j0q29UzMLNrNjVBuvUzhbVAw50kgvUzhbVAw50ugf0AcK7cIaGicaGicaGicaGicaGAwyGkgv4Cg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGicaGrxHWB3j0sgfUzgXLCI5YzwDPC3rLCLjVDxrLCYHHChaSicC','cGOVlYbizwfSDgGGy2HLy2SGzw5KCg9PBNqkCM91DgvYlMDLDcGNl2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGihjLCY5QC29UkhSkicaGihn0yxr1CZOGj29RjYWkicaGigvUzhbVAw50oIaN','cIaGicbJB25ZDcbHzgP1C3rdB25MAwCGpsa','EWOGicaGicaGicaGiG','laOGicaGicaGihrLEhq6igL0zw1BDgv4DezPzwXKtMfTzv0GFhWGAxrLBs4','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8GvvbeqvrfoIbMB3jJzsbZy29WzsbJB2X1Bw4GDMfSDwuGkg93BMvYC2HPCcb2zxjPzMLLzcbPBIaVDxbKyxrLigHHBMrSzxiPcIaGAwyGkgvUzhbVAw50id09psaNDxbKyxrLjYKGEWOGicaGCMvXlMjVzhLBjW','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGB3zLCNjPzguGkfiXncKUic9KzwXLDguGBwvSywT1A2fUihnVzNqGzgvSzxrLlcbIDwTHBIbOyxjKigrLBgv0zs4kicaGkIbbDg9TAwmGkhnHDhuGDhjHBNnHy3rPB24PoIbtruXfq1qGrK9sifvqrefursbYB3CGywT0AwyG4OAsig11DgfZAsbYzxvZywjSzsdIHPiGvvbeqvrfcIaGicOGAxnFzgvSzxrLzc9KzwXLDgvKx2f0l2rLBgv0zwrFyNKG4OAsienptu1jvcdIHPiGAw52ywXPzgf0zunHy2HLlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGuMvZCg9UC2uGAwrLBNrPAYbOyxjKigrLBgv0zsaOyMfJA3DHCMqTy29TCgf0ignSAwvUDcKUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicbJB25ZDcb3CML0zvnVDxjJzsa9ihrOAxmUz2v0vgfIBgvtB3vYy2uOj3DYAxrLjYK7cIaGicbJB25ZDcbYzxr1CM5PBMDgAwvSzhmGpsb0AgLZlMDLDfjLDhvYBMLUz0zPzwXKCYGPoWOGicaGlY8GzgvSzxrLzf9IEtOGyM9KEsbLA3nWBgLZAxqG4OAsigv2zw50q29UDgv4Dc5HzgrPDgLVBMfSq29UDgv4Dc51C2vYx2LKiokgKIaNC3LZDgvTjY4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','ignVBxbVC2L0zsbKyxrHjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSkcG','zMLLBgrmywjLBhm','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','ywT0Awy','iezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3DOzxjLq2XHDxnLFwa7cIaGicaGignVBNn0igHLywrLCLjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhqUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqNktSkicaGicaGFqOkicaGicaGy29UC3qGAgvHzgvYuhjPBwfYEuTLEvzHBhvLid0GAgvHzgvYuMvZDwX0lNjVD3nBmf1BjW','CMv1C2fIBgu','t1zuEwG','tKXlEMq','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','iJOGwWOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmsWGiMzPzwXKiJOGiNzHBhvLiIb9laOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmIWGiMzPzwXKiJOGiNzHBhvLiIb9cIaGicaGicaGicaGif0kicaGicaGicaGih0kicaGicaGicb9','cIaGlYOQcIaGicOGrgvSzxrLigrHDgeGD2L0AcbJyxnJywrLrgvSzxrLihn1ChbVCNqkicaGkIbaCgfYyw0GE09IAMvJDh0GB3b0Aw9UCYaTierLBgv0zsbVChrPB25ZihDPDgGGD2HLCMuGy2XHDxnLcIaGicOGqhbHCMfTihTpyMPLy3r9igv2zw50q29UDgv4DcaTiev2zw50igXPzMvJEwnSzsbJB250zxH0icHVChrPB25HBcKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbezwXLDguGCMvZDwX0cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHVChrPB25ZlcbLDMvUDenVBNrLEhqGpsbUDwXSksb7cIaGicbJB25ZDcbWB29Sid0GzgiUz2v0ug9VBcGPoWOGicaGy29UC3qGy2XPzw50id0GyxDHAxqGCg9VBc5JB25Uzwn0kcK7cGOGicaGDhj5ihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDcruDjtICPoWOkicaGicaGlY8GrxH0CMfJDcb3AgvYzsbJBgf1C2ukicaGicaGy29UC3qGD2HLCMuGpsbVChrPB25ZlNDOzxjLihX8ifTDoWOGicaGicbPzIaOixDOzxjLihX8ihDOzxjLlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNv2HLCMuGy2XHDxnLigLZihjLCxvPCMvKigzVCIbKzwXLDguGB3bLCMf0Aw9UjYK7cIaGicaGih0kcIaGicaGic8Viej1AwXKifDirvjfignSyxvZzqOGicaGicbSzxqGD2HLCMvdBgf1C2uGpsaNjZSkicaGicaGy29UC3qGCgfYyw1Zid0Gw107cIaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSkcIaGicaGigLMicHbCNjHEs5PC0fYCMf5khDOzxjLksKGEWOGicaGicaGignVBNn0ignVBMrPDgLVBNmGpsb3AgvYzs5TyxaOy29UzgL0Aw9Uid0+ihSkicaGicaGicaGihbHCMfTCY5WDxnOkgnVBMrPDgLVBI52ywX1zsK7cIaGicaGicaGicbYzxr1CM4Gycr7y29UzgL0Aw9UlMTLEx0GpsaKjhTWyxjHBuLUzgv4kYT9ydSkicaGicaGicb9ktSkicaGicaGicb3AgvYzunSyxvZzsa9ignVBMrPDgLVBNmUAM9PBIGNieforcaNktSkicaGicaGFsbLBhnLigLMicH3AgvYzs5JB25KAxrPB25Zksb7cIaGicaGicaGlY8GsgfUzgXLignVBxbSzxGGD2HLCMuGzM9YBwf0cIaGicaGicaGy29UC3qGy29UzgL0Aw9UCYa9ihDOzxjLlMnVBMrPDgLVBNmUBwfWkgnVBMrPDgLVBIa9pIb7cIaGicaGicaGicbWyxjHBxmUChvZAcHJB25KAxrPB24UDMfSDwuPoWOGicaGicaGicaGy29UC3qGB3bLCMf0B3iGpsbJB25KAxrPB24UB3bLCMf0B3iGFhWGjZ0NoWOGicaGicaGicaGCMv0DxjUigaKE2nVBMrPDgLVBI5RzxL9icr7B3bLCMf0B3j9icqKE3bHCMfTsw5KzxGRk31GoWOGicaGicaGih0PoWOGicaGicaGignVBNn0igXVz2LJid0GD2HLCMuUBg9NAwmGFhWGj0forcC7cIaGicaGicaGD2HLCMvdBgf1C2uGpsbJB25KAxrPB25ZlMPVAw4OycaKE2XVz2LJFsbGktSkicaGicaGFqOkicaGicaGAwyGkcf3AgvYzunSyxvZzsKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJBgf1C2uGzM9YBwf0jYK7cIaGicaGih0kcIaGicaGia','cIaGicbJB25ZDcbOzwfKzxjdywXJid0G','qu5eicG','BMfTzq','iJOGEWOGicaGicaGicaGicaIzMLLBgqXiJOGiNzHBhvLmsiScIaGicaGicaGicaGicjMAwvSzdiIoIaIDMfSDwuYiGOGicaGicaGicaGFqOGicaGicaGih0','DMLZAwjPBgL0Eq','ChvZAa','oICSigvYCM9YktSkcIaGicaVlYbsmJa6ihjLC3rVCMveyxrHig1LBgvTCgfYihn0yxr1C0nVzguGDw50DwSGA29UzgLZAsb0zxjRB250CM9SlGOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqWncKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','l3vWzgf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','Dg9qyxnJywXdyxnL','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGjW','cIaGicb7cIaGicaGignVBNn0if9FC2rdAgvJAYa9igf3ywL0ia','jZSkicaGicaG','cIaGicaVlYbhzxqGy29YCMvSyxrPB24GsuqGzNjVBsbOzwfKzxiGkg9WDgLVBMfSkqOGicaGy29UC3qGy29YCMvSyxrPB25jzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGBNvSBdSk','nxDzyunwrq','Dw5PDf9WCMLJzq','DMLLD1f1zxj5','y29UC3rYywLUDhm','AgvHzgvYq2fSy3vSyxrPB25Z','zM1Pyve','DxbSB2fKq29UzMLN','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','l2rLBgv0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihjLCxvLC3qGyM9KEqOGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKignHBM5VDcbIzsbLBxb0EsCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','ChjPBwfYEuTLEq','ih0PoW','oWOkicaGic8VifzHBgLKyxnPihbYAw1HCNKGA2v5cIaGicbPzIaOiwrHDgeU','ignVBxbVC2L0zsb1CgrHDguGC3vJy2vZC2z1BdOG','icaGicaGicbKzwXLDguGzM9YBwf0DgvKw19FC2rdB2XDoWO','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','j10GFhWGCMvXlMjVzhK7cIaGicbTyxn0zxjcB2r5wYC','laOGicaGicbKyxrHyMfZzvr5Cgu6icDWB3n0z3jLCYCScIaGicaGigDLBMvYyxrLzdOGjW','Bgv0igjHC2vrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','CMPZq04','jYb2ywX1zsaNiIaRif9FB3jPz2LUywWGkYaIjYbPCYbHBhjLywr5igLUihvZzsbIEsbHBIbHy3rPDMuGCMvJB3jKiIK7cIaGicaGicaGicaGicaGy29UzMXPy3rfCNjVCI5ZDgf0DxndB2rLid0Gnda5oWOGicaGicaGicaGicaGihrOCM93ignVBMzSAwn0rxjYB3i7cIaGicaGicaGicaGih0kicaGicaGicaGicaGlY8Gu3rYAxaGAgfUEweGyMLSysbHzgeGC3vMzML4icCJiYCGkgXLz2fJEsbKAwjPyxjRyw4GyxbHigfKyw55ysWGy3vRDxaGCMvZzxqGA29SB20PlGOGicaGicaGicaGicbPzIaOx19ZzxbjzhGGpJ0GmcKGEWOGicaGicaGicaGicaGihnLDenSyxvZzxmUChvZAcGN','cIaGicaVlYbgBgfNihvUDhvRihnLBgyTzg9JDw1LBNrPBMCGqvbjicHLBMrWB2LUDcaVAw5MBYKkicaGihrOAxmUAgfZvMLLD1f1zxj5id0G','y29UC3qGzgv0ywLSuxvLCNKGpsbG','CMvXDwLYzwrgAwvSzhm','zgvSzxrL','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicbDcIaGicaGicaGicb9laOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','CMvXDwvZDfnJB3bL','A2v5CW','D2HLCMvdBgf1C2uGpsbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydS','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGzgv0ywLSvgfIBgu6icC','l2XVB2T1CdONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VienLAYbHCgfRywGGywrHihDOzxjLignSyxvZzsaOzM9YBwf0igjHCNuPigf0yxuGC2vSzwn0zwrFDgfNicHMB3jTyxqGBgfTysKkicaGigLMicHYzxeUyM9KEs53AgvYzsKGEWOGicaGicaVlYbgB3jTyxqGyMfYDsbKzw5Nyw4GD2HLCMuGy2XHDxnLcIaGicaGignVBNnVBguUBg9NkcDvC2LUzYbUzxCGzM9YBwf0ihDPDgGGD2HLCMuGy2XHDxnLjYK7cGOGicaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGicaGAwyGkcfbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIaHCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGwWOGicaGicaGicaGicaGihSGiMTLEsi6ici','ieforca','r0Levhi','s3bVu3u','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOA2v5ktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcHGjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEcSRFwaPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGicaGzgv0ywLSugXHy2vOB2XKzxjjBMrLEca9ihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqSigrLDgfPBfbSywnLAg9SzgvYsw5KzxGPoWOkicaGicaGicbJB25ZDcbKzxrHAwXjBNnLCNrrDwvYEsa9igakicaGicaGicaGieLou0vsvcbjtLrpicr7zgv0ywLSvgfIBgvoyw1LFsaOjhTKzxrHAwXgAwvSzhmUAM9PBIGNlcaNkx0PcIaGicaGicaGicbwquXvrvmGkcr7zgv0ywLSugXHy2vOB2XKzxjZlMPVAw4OjYWGjYL9kqOGicaGicaGicaGuKvuvvjosu5hicOkicaGicaGicbGoWOkicaGicaGicbJB25ZB2XLlMXVzYGNrxHLy3v0Aw5NigrLDgfPBcbjtLnfuLq6jYWGEYbXDwvYEtOGzgv0ywLSsw5Zzxj0uxvLCNKSihzHBhvLCZOGzgv0ywLSvMfSDwvZih0PoWOGicaGicaGignVBNn0igrLDgfPBfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzxrHAwXjBNnLCNrrDwvYEsWGzgv0ywLSvMfSDwvZktSkicaGicaGicbPBNnLCNrLzeL0zw1ZlNb1C2GOzgv0ywLSuMvZDwX0lNjVD3nBmf0PoWOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGsw5Zzxj0zwqGjhTPBNnLCNrLzeL0zw1ZlMXLBMD0Ah0Gzgv0ywLSigL0zw0OCYLGktSkcIaGicaGic8Vic0TlsbiB29RoIbVBKfMDgvYq29TCg9ZAxrLsw5Zzxj0ic0TlqOGicaGicbPzIaOzxzLBNrdB250zxH0icyMigv2zw50q29UDgv4Dc5JB21WB25LBNrfBMDPBMuPihSkicaGicaGicbJB25ZDcb7ignVBxbVBMvUDevUz2LUztOGy2uSienVBNrLEhrcDwLSzgvYoIbdqIb9id0GzxzLBNrdB250zxH0oWOGicaGicaGignVBNn0igfMDgvYq3r4id0Gq0iUyNvPBgrdB21WB3nPDgvjBNnLCNrbzNrLCKnVBNrLEhqOAgvHzgvYrgf0ysWGAw5Zzxj0zwrizwfKzxiSigLUC2vYDgvKsxrLBxmSihSkicaGicaGicaGihrHyMXLtMfTztOGjW','jYWGDMfSDwu6ia','AxrLBxm','Dg1TBhe','y29Kzq','icaGihjLDhvYBIbMB3jTyxr0zwq7','ksb7cIaGicaGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDZB2z0lwrLBgv0ztOGy29SDw1Uia','Aw5MBW','zMLLBgroyw1L','cIaGicbJB25ZDcb2ywXPzezPzwXKCYa9ifSkicaGicaG','icSGjW','oICSigvYCM9YktSkcIaGicaVlYbiyw5KBguGiKrHDgeGDgLKywSGzgL0zw11A2fUiGOGicaGAwyGkgvYCM9YlM1LC3nHz2uGpt09icDeyxrHihrPzgfRigrPDgvTDwTHBICGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNBM90igzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicbTzxnZywDLoIaN','zMLYC3q','cIaGicaVlYbgsY1trc0YicHYzxn0CMLJDcK6ig92zxjYAwrLigrLBgv0zurHDgeGBwvSzw1WyxiGC3rHDhvZq29Kzsa0mdKGyMLSysbTyxn0zxiGBwfZAwGkicaGic8VigrPCMvMzxjLBNnPA2fUigfUywSGywT0AwyGkgfUywSGC29MDc1KzwXLDguPigf0yxuGyw5HAYbHCgeGChvUicHHBMfRig5VBI1ZB2z0lwrLBgv0zsKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0Gnda5ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDdB25MBgLJDcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','iezst00GjYaRihrOAxmUz2v0tg9VA3vWu291CMnLkcKGkYbGifDirvjfihvWCgvYkgeU','cIaGicbJB25ZDcb3B3jRzMXVD0nVBMzPzYa9ia','igXPC3q6jYWGzxjYB3iPoWOGicaGy29UC3qGC3rHDhvZq29Kzsa9igvYCM9YlNn0yxr1C0nVzguGFhWGntaWoWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOC3rHDhvZq29KzsKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGC3rHDhvZq29Kzsa9pt0GndaWid8Gj0jHzcbszxf1zxn0jYa6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIbZDgf0DxndB2rLid09psa0mdaGpYbLCNjVCI5TzxnZywDLidOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigzLDgnOAw5Nia','igrHDgeGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','zKPMBfO','t01zDui','lI4UjYK7cGOGicaGicaVlYbhzxqGChjPBwfYEsbRzxKGDMfSDwuGDw50DwSGzgvSzxrLignOAwXKihjLy29YzhmkicaGicaGy29UC3qGAgvHzgvYuxvLCNKGpsbGu0vmrunuia','jYb1BNr1AYbLBMrWB2LUDcbYzwfKigjLCMrHC2fYA2fUcI8VihzPC2LIAwXPDhKGy29UzMLNicGN','DgfIBgvoyw1L','cIaQifrHyMXLoIa','jY50B0XVD2vYq2fZzsGPksb7cIaGicaGicaGicbJB250Aw51ztSGlY8GChjPBwfYEsbRzxKGC3vKywGGywrHcIaGicaGicaGFqOkicaGicaGicaVlYbdAgvJAYbQAwTHigfKysbtuuWGzxHWCMvZC2LVBIbKzw5Nyw4GywXPyxmGkg1LBMDNDw5HA2fUieftkqOGicaGicaGignVBNn0igfSAwfZuMvNzxGGpsbUzxCGuMvNrxHWkcCOlISPxfXZk2fZxfXZkYHCxhCRksqNlcaNAsCPoWOGicaGicaGignVBNn0igfSAwfZtwf0y2GGpsbJB2X1Bw4UBwf0y2GOywXPyxnszwDLEcK7cIaGicaGicaGAwyGkgfSAwfZtwf0y2GPihSkicaGicaGicaGignVBNn0igv4ChjLC3nPB24GpsbHBgLHC01HDgnOwZfDlNrYAw0OktSkicaGicaGicaGignVBNn0igfSAwfZid0GywXPyxnnyxrJAfSYxs50CMLTkcK7cIaGicaGicaGicbZzwXLy3rdBgf1C2uGkZ0GycWGjhTLEhbYzxnZAw9UFsbbuYaKE2fSAwfZFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbHBgLHCZSkicaGicaGicaGigfSAwfZrMLLBgqGpsbHBgLHCZSkicaGicaGicaGigjYzwfRoYaVlYbNDw5HA2fUihLHBMCGCgvYDgfTysbZzwjHz2fPihrLEhqGzMLLBgqkicaGicaGicb9cGOGicaGicaGic8VienOzwnRigPPA2eGC2LTCgXLigzPzwXKig5HBwukicaGicaGicbPzIaODMfSAwruzxH0rMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKGFhWGy29SDw1Uid09psaN','icHJAgLSzfnVzNrezwXLDgu9','lMfKzerHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cIaGicaGicaGBMv3rgf0ysa9ihjLC3bVBNnLrgf0ytSkcIaGicaGicaGy29UC29Szs5SB2COj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGy29TCgXLDgvKihn1y2nLC3nMDwXSEsb3AxrOigv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9igvSC2uGEWOGicaGicaVlYbgywXSyMfJAZOGz3vUywTHBIbTB2rLigXHBweGDgfUCgeGzxzLBNrZicH0zxrHCcbWCM9WywDHC2KGCMvXDwvZDeLKihvUDhvRieXPDMuGu3LUyYKkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','zMLUza','icaGicaGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','zw5HyMXLza','BNvSBa','icaGia','j107cIaGicaGicaGicbPzIaOx19JDxiGit09ig51BgWGjIyGx19JDxiGit09ihvUzgvMAw5LzcKGEWOGicaGicaGicaGicbJB25ZDcbFx2n1CLn0CIa9ifn0CMLUzYHFx2n1CIK7cIaGicaGicaGicaGignVBNn0if9FC2vWswr4id0Gx19JDxjtDhiUBgfZDeLUzgv4t2yOjYmJjYK7cIaGicaGicaGicaGic8VieXLz2fJEsb0yw5WysaNiYmNiokgKIbVCMLNAw5HBca9ig5PBgfPigfWysbHzgfUEweGkhn0CMLWigrPBgv3yxrPigrPigjHD2fOks4kicaGicaGicaGicaGy29UC3qGx19VCMLNAw5HBca9if9FC2vWswr4id49idaGpYbFx2n1CLn0CI5ZDwjZDhjPBMCOmcWGx19ZzxbjzhGPidOGx19JDxjtDhi7cIaGicaGicaGicaGic8VieTVBMzSAwSGkdqWosK6ig9YAwDPBMfSigTPBMKGzgLWywTHAsbYzwnVCMqGywT0AwyGBgfPBIbZzwXHAw4GCM93igLUAs4kicaGicaGicaGicaGy29UC3qGx19JB25MBgLJDca9igf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGicaNu0vmrunuideGrLjptsaNicSGD3jPDgvtB3vYy2uGkYaNifDirvjfia','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','BwfZDgvYrgv0ywLS','oWOGicaGicbJB25ZDcb0zxH0rMLLBgrZid0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5ZzwfYy2HgAwvSzhmUBgvUz3rOid4GmaOGicaGicaGid8GBg9VA3vWq29UzMLNlNnLyxjJAezPzwXKCWOGicaGicaGidOG','C29MDerLBgv0zuzRugfYzw50CW','laOGicaGicbLEhbVCNrrDwvYEtOG','id0GjdeGt1jerviGqLKGBgLUzv9UDw1IzxjGoW','vuzlChC','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbpDMvYCMLKzsbNzxrtDgf0AwnmB29RDxbeyxrHihvUDhvRig1LBMDNDw5HA2fUigTVBg9TicC','tfPKrK8','mZG3mti2mgvWrvLyqG','lNvWzgf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','x2LK','C2vHCMnOq29SDw1UCW','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','AM9PBG','ihLHBMCGDgvYlxnVzNqTzgvSzxrLicHsmJaPcNjVDxrLCI5WB3n0kcCVCMvZDg9YzsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMicfYzxeUyM9KEs53AgvYzs5JB25KAxrPB25Zksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBcIaGicaGicaGicaGihSGiMTLEsi6icjPzciSicj2ywX1zsi6icj5B3vYlwLKlxzHBhvLiIb9cIaGicaGicaGicbDcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbszxn0B3jLigfKywXHAcbLDMvUDcbSAwzLy3LJBgu6ig1VzgvSlNjLC3rVCMveyxrHig1LBMPHBgfUA2fUihrYyw5ZywTZAw55ysbZzw5KAxjPcIaGicaVlYaOu0vmrunuiezpuIbvuerbveuG4OAsihn0CMLWl2TVBMzSAwSVrKSG4OAsihjLC2v0iokgKIbdt01nsvqG4OAsigLUDMfSAwrHDgvdywnOzsKUcIaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGihrHyMXLtMfTztOGjW','zgf0zvrPBwvgAwvSzhm','jYbMCM9Tia','cGOGicaGCMv0DxjUihrLBxbSyxrLCZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXPC3rrDwvYEsb1BNr1AYbTzw55zxn1ywLRyw4GzgvUz2fUigTLyNv0DwHHBIa','ignVBxbVC2L0zsbYzwfKihn1y2nLC3nMDwW6icr7CMvZDwX0lMnVDw50ihX8idb9ihjLy29YzcHZkwaPoWOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbJB21WB3nPDguGCMvHzca','jhT3AgvYzvjLC3vSDc5ZCwX9','zgf0yxrHyMXLC1DOzxjL','cIaGicaVlYbwywXPzgfZAsbKzxrHAwWGAxrLBxmGDw50DwSGBwfZDgvYlwrLDgfPBaOGicaGAwyGkcfKyxrHlG','cIaGicaGic8VignHC2nHzgvezwXLDguGpsbMywXZztOGt25SEsberuXfveuGAgvHzgvYihjLy29YzaOGicaGicaVlYbeyxrHyMfZzsbMB3jLAwDUigTLEsbJB25ZDhjHAw50igfRyw4GAgfUzgXLihzHBgLKyxnPignOAwXKihjLy29YzhmkicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NigHLywrLCIbYzwnVCMqGkgnHC2nHzgvezwXLDguGpsbMywXZzsKUlI4NktSkcIaGicaGignVBNn0igrLBgv0zuHLywrLCLf1zxj5id0GyerftevursbguK9nicr7DgHPCY53CML0zvnVDxjJzx0Gv0HfuKuGjhT3AgvYzunSyxvZzx0GuKvuvvjosu5hicPGoWOGicaGicbJB25ZDcbKzwXLDgvizwfKzxjszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgvSzxrLsgvHzgvYuxvLCNKSihbHCMfTCYK7cGOGicaGicbPzIaOzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDszwnVCMqGBM90igzVDw5KjYK7cIaGicaGih0kcIaGicaGignVBNn0igrLBgv0zwreyxrHid0GzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3nBmf07cIaGicaGignVBNnVBguUBg9NkcDizwfKzxiGCMvJB3jKigrLBgv0zwqGC3vJy2vZC2z1BgX5jYK7cIaGicaGia','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLyxjJAcaTieTHDgeGA3vUy2KGCgvUy2fYAwfUcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrmB29RDxbeyxrHkhnLyxjJAcKGEWOGicaGDhj5ihSkicaGicaGy29UC3qGCxvLCNKGpsaNu0vmrunuia','t0vAuwK','laOGicaGicbWCMLTyxj5vgv4DezPzwXKoIaN','laOGicaGicbYzxf1AxjLzezPzwXKCZOG','oWOkicaGicaGBgv0ihDOzxjLq29UzgL0Aw9UCYa9ifTDoWOGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSk','vKXWuge','zw50CMLLCW','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGCMvHzcaOz2v0lcbSAxn0lcbSB29RDxaSigrHDgf0ywjSzxmPcIaGicb0AgLZlNDYAxrLu291CMnLid0GjW','cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NAgfWDxmGzgf0ysa','ie9srevsiejzigeU','iJOG','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGsu5trvjuievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwqGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5PBNnLCNqPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HjBNnLCNqOcIaGicaGicaGjW','id0GCMvXDwLYzsGNlI4VlI4VBw9KzwXZlW','lMrLBgv0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDierftevursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDierftevursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','iL0kicaGicaGicaGih0ScIaGicaGicaGicbLEgfTCgXLx2fKDMfUy2vKoIb7cIaGicaGicaGicaGicj3AgvYzsi6ihSkicaGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaGicjJB25KAxrPB25ZiJOGwWOGicaGicaGicaGicaGicaGEYaIA2v5iJOGiG','zM9YBxvSyq','j107cIaGicaGicaGicbPzIaOx19VCMLNice9psbUDwXSicyMif9FB3jPzYaHpt0GDw5KzwzPBMvKksb7cIaGicaGicaGicaGignVBNn0if9FC3rYid0Gu3rYAw5Nkf9FB3jPzYK7cIaGicaGicaGicaGigLMicHFx3n0CI5Szw5NDgGGpIa','jYWkicaGicaGicaGihbYAw1HCNLlzxK6ihrOAxmUChjPBwfYEuTLEsWkicaGicaGicaGic4UlIHLDMvUDenVBNrLEhqUywrKAxrPB25HBenVBNrLEhqGFhWGE30PcIaGicaGicaGFsK7cIaGicaGicaGy29UC3qGywz0zxjszxn1BhqGpsbHD2fPDcbJzs5LEgvJDxrLt25bzNrLCKnVBxbVC2L0zsGNDxbKyxrLjYWGywz0zxjdDhGPoWOGicaGicaGigLMicGHywz0zxjszxn1BhqUC3vJy2vZCYKGEWOGicaGicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkgbVBKfMDgvYq29TCg9ZAxrLvxbKyxrLigzHAwXLzdOGjhTHzNrLCLjLC3vSDc5LCNjVCN1GktSkicaGicaGicb9cIaGicaGih0kcIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNq09ntuLujYK7cIaGicaGignVBNnVBguUBg9NkcDuCMfUC2fJDgLVBIbJB21TAxr0zwqGC3vJy2vZC2z1BgX5jYK7cGOGicaGicaVlYbjBNzHBgLKyxrLignHy2HLihnLDgvSywGGD3jPDguGB3bLCMf0Aw9UigjLCMHHC2LScIaGicaGigf3ywL0ihrOAxmUAw52ywXPzgf0zunHy2HLkcK7cGOGicaGicbYzxr1CM4GEWOGicaGicaGic4UlNvWzgf0zwrizwfKzxiScIaGicaGicaGw2rLDgfPBeTLEv06igfSBeL0zw1ZlaOGicaGicaGif9VCgvYyxrPB25ZoIb7cIaGicaGicaGicbKzwXLDgvKoIbKzwXLDgvKsxrLBxmUBgvUz3rOlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlMXLBMD0AcWkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlMXLBMD0AaOGicaGicaGih0kicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUihvWzgf0zunVBxbVC2L0ztONlcbLCNjVCIK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','cGOVlYbdB21WB25LBNqGrw5NAw5LihvUDhvRigv2zw50igXPzMvJEwnSzsaOB3b0Aw9UywWPcMXLDcbJB21WB25LBNrfBMDPBMuGpsbUDwXSoWPSzxqGq29UDgv4Dej1AwXKzxiGpsbUDwXSoWP0CNKGEWOGic8VieHHBNLHigXVywqGy29TCg9Uzw50igvUz2LUzsbQAwTHihbHEwXVywqGBwvTAwXPA2KGy29TCg9Uzw50CWOGignVBNn0igHHC0nVBxbVBMvUDhmGpsa','y29SDw1UCW','icG0mJiPcIaGicaGicaGEWOGicaGicaGicaGy29UC3qGx19MA1zHBhmGpsbB','cIaQcIaQie1VzgvSihvUDhvRia','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHihnHAMeGkgv4y2X1zguGzgv0ywLSigfYCMf5ksb1BNr1AYb2ywXPzgf0Aw9UcIaGicaGignVBNn0igHLywrLCKrHDgfgB3jwywXPzgf0Aw9Uid0GEYaUlI5KyxrHih07cIaGicaGia','cIaQiezPzwXKCZOG','ywrH','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGy2fZy2fKzsbVDMvYCMLKzsaOuJe0icSGrKSTu0qTmYKUic9KzwXLDguGBwvUlxnVzNqTzgvSzxrLig1HC3rLCIaRihnLBhvYDwGkicaGkIbKzxnJzw5Kyw50ignHC2nHzguGzgfSyw0Gu0fuvsb0CMfUC2fJDgLVBIaOyxrVBwLJigfSBc1VCI1UB3rOAw5NksWGCMvZDhjPy3qTCgvYlw5VzguGnda5igrPcIaGicOGC2v0AwfWig5VzguUifjLC3bVBNnLigjHy2T3yxjKlwnVBxbHDcaOBwfZDgvYigrLChrOltaPlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicaVlYbgsY1trc0ZignSB3n1CMuGy2fZy2fKzsaOBwfZDgvYicSGC2vSDxj1AcbKzxnJzw5Kyw50igXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRcIaGicaVlYbZB2z0lwrLBgv0zsKUie1HCc1MCMvLoIbZzwX1CNvOig1LDgfKyxrHigrLC2nLBMrHBNqGzgLWzxjZAxn0igDLBMvYyxrLlxrPBwuGzgKGuKrglGOGicaGy29UC3qGx19ZzenHC2nHzgvnzxrHid0G','ChjPy2vgAwvSza','jYWkicaGicaGicaGihvWDgLTztOGChjVy2vZCY51ChrPBwuOksWkicaGicaGicaGig1LBw9YEtOGChjVy2vZCY5Tzw1VCNLvC2fNzsGPlaOGicaGicaGicaGC3LZDgvToIb7cIaGicaGicaGicaGihbSyxrMB3jToIbWCM9JzxnZlNbSyxrMB3jTlaOGicaGicaGicaGicbUB2rLvMvYC2LVBJOGChjVy2vZCY52zxjZAw9UlaOGicaGicaGicaGicbWAwq6ihbYB2nLC3mUCgLKcIaGicaGicaGicb9cIaGicaGicaGFtSkcIaGicaGicaGCMvZlMPZB24OAgvHBhrOsw5MBYK7cIaGicaGih0PoWOkicaGicaGlY8Gtw9KDwXLlxnWzwnPzMLJigHLywX0AcbJAgvJAYbLBMrWB2LUDcaOzgvUz2fUihbYzwzPEcbTB2r1BguPcIaGicaGigfWCc5NzxqOjY9HCgKV','cIaGicaGih0PktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHicG','cGOGicaGicaVlYaTls0Gsg9VAZOGB25bzNrLCKnVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbHzNrLCKn0Eca9ienclMj1AwXKq29TCg9ZAxrLvxbKyxrLqwz0zxjdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihvWzgf0zwrizwfKzxiSihSkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlaOGicaGicaGicaGzgvSzxrLzdOGzgvSzxrLzeL0zw1ZcIaGicaGicaGFsWGEWOGicaGicaGicaGDgfIBgvoyw1LoIaN','rMT5vKq','r01MvKm','cIaGFqOkicaVkIOkicaGkIbpDMvYCMLKzsbNzxreyxrHDgfIBgvZihvUDhvRig1LBMr1A3vUzYbMAwX0zxiGB2jQzwn0igzVCM1HDaOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0GugfYyw1LDgvYigrHCMKGCMvXDwvZDaOGicaQiebYzxr1CM5ZihTpyMPLy3r9ieHHC2LSihf1zxj5igrLBMDHBIbMB3jTyxqGrgf0yvrHyMXLCWOGicaQlWOGigfZEw5JigDLDerHDgf0ywjSzxmOB3b0Aw9UCYKGEWOGicaGDhj5ihSkicaGicaGlY8Gq2HLy2SGy2fJAguGzMLYC3qGkgLMigvUywjSzwqPcIaGicaGignVBNn0ignHy2HLzfjLC3vSDca9igf3ywL0ihrOAxmUz2v0q2fJAgvKrgf0yxrHyMXLCYHVChrPB25ZktSkicaGicaGAwyGkgnHy2HLzfjLC3vSDcKGEWOGicaGicaGihjLDhvYBIbJywnOzwrszxn1Bhq7cIaGicaGih0kcIaGicaGignVBNn0ihSkicaGicaGicbZzwfYy2HwywX1zsa9icCNlaOGicaGicaGihnLyxjJAej5id0Gj2fSBcCScIaGicaGicaGCgvYugfNzsa9ideWlaOGicaGicaGihn0yxj0id0GmcWkicaGicaGicbZB3j0x2nVBhvTBNmGpsbBxsWkicaGicaGicbMAwX0zxjZid0GE30ScGOGicaGicaGihDOzxjLid0GBNvSBaOGicaGicb9id0GB3b0Aw9UCZSkcIaGicaGic8VifjLC29SDMuGC29YDcbJB2X1Bw5ZigrLBMDHBIbWCMLVCML0yxm6ihnVCNrFy29SDw1UCYa+ig9YzgvYwZbDw2nVBhvTBL0GpIbKzwzHDwX0cIaGicaGigXLDcbYzxnVBhzLzfnVCNrdB2X1Bw5Zid0GC29YDf9JB2X1Bw5ZoWOkicaGicaGlY8GrMfSBgjHy2S6ignLAYbMB3jTyxqGrgf0yvrHyMXLCYbIyxDHyw4Gkg9YzgvYwZbDw2nVBhvTBL0GzgfUig9YzgvYwZbDw2rPCL0PcIaGicaGigLMicGOixjLC29SDMvKu29YDenVBhvTBNmGFhWGCMvZB2X2zwrtB3j0q29SDw1UCY5Szw5NDgGGpt09idaPicyMcIaGicaGicaGicbVChrPB25ZwYDVCMrLCLSWxvTJB2X1Bw5Dj10Git09ihvUzgvMAw5LzcaMjIbVChrPB25ZwYDVCMrLCLSWxvTKAxjDj10Git09ihvUzgvMAw5LzcKGEWOGicaGicaGignVBNn0ignVBhvTBKLUzgv4id0GCgfYC2vjBNqOB3b0Aw9UC1SNB3jKzxjBmf1By29SDw1UxsDDktSkicaGicaGicbJB25ZDcbKAxjLy3rPB24GpsbVChrPB25ZwYDVCMrLCLSWxvTKAxjDj107cGOGicaGicaGigLMicHJB2X1Bw5jBMrLEca+psaWicyMignVBhvTBKLUzgv4idWGDgHPCY52ywXPzezPzwXKCY5Szw5NDgGPihSkicaGicaGicaGihjLC29SDMvKu29YDenVBhvTBNmGpsbBEYbJB2X1Bw46ihrOAxmUDMfSAwrgAwvSzhnBy29SDw1Usw5KzxHDlcbKAxjLy3rPB246igrPCMvJDgLVBI50B1vWCgvYq2fZzsGPih1DoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gms4GtwvUzgfWyxrRyw4GCxvLCNKGzgfZyxikicaGicaGy29UC3qGyMfZzvf1zxj5id0GDgHPCY5NzxrmAxn0uxvLCNKOB3b0Aw9UCYK7cGOGicaGicaVlYaYlIbnzw1IDwf0ihDOzxjLignSyxvZzsbIzxjKyxnHCMTHBIbZzwfYy2GGzgfUigzPBhrLCGOGicaGicbSzxqGD2HLCMvdBgf1C2uGpsb0AgLZlMj1AwXKv2HLCMvdBgf1C2uOC2vHCMnOvMfSDwuSihnLyxjJAej5ktSkcIaGicaGic8VidmUifrHBwjHAgTHBIbMAwX0zxiGB2jQzwn0igPPA2eGywrHcIaGicaGignVBNn0igzPBhrLCKnSyxvZzsa9ihrOAxmUyNvPBgrpyMPLy3rgAwX0zxjdBgf1C2uOzMLSDgvYCYK7cGOGicaGicbPzIaOzMLSDgvYq2XHDxnLksb7cIaGicaGicaGAwyGkhDOzxjLq2XHDxnLksb7cIaGicaGicaGicb3AgvYzunSyxvZzsaRpsaNieforcaNicSGzMLSDgvYq2XHDxnLoWOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicb3AgvYzunSyxvZzsa9icDxsevsrsaNicSGzMLSDgvYq2XHDxnLoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gnc4GuhjVC2vZihbHCMfTzxrLCIb3AgvYzsbKzw5Nyw4GzM9YBwf0igfKDMfUy2vKignVBMrPDgLVBNmkicaGicaGBgv0ihDOzxjLugfYyw1Zid0Gw107cIaGicaGigLMicH3AgvYzsaMjIaOqxjYyxKUAxnbCNjHEsH3AgvYzsKGFhWGkhDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsH3AgvYzs5JB25KAxrPB25ZksKPksb7cIaGicaGicaGDhj5ihSkicaGicaGicaGigXLDcbWyxjHBxmGpsbBxtSkicaGicaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSkicaGicaGicaGignVBNn0ihDOzxjLuMvZDwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsH3AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGicaGigLMicH3AgvYzvjLC3vSDc5ZCwWPihSkicaGicaGicaGicaGAwyGkhDOzxjLq2XHDxnLksb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGkZ0GjYbbtKqGkcCGkYb3AgvYzvjLC3vSDc5ZCwWGkYaNksC7cIaGicaGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGpsaNv0HfuKuGjYaRihDOzxjLuMvZDwX0lNnXBdSkicaGicaGicaGicaGFqOGicaGicaGicaGicb3AgvYzvbHCMfTCYa9ihDOzxjLuMvZDwX0lNbHCMfTCZSkicaGicaGicaGih0kicaGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VienOzwnRigLMihf1zxj5ig5LzwrZihn1yNf1zxj5ihDYyxbWAw5NicHdveuGB3iGsK9jtIKkicaGicaGy29UC3qGAxndDgvrDwvYEsa9igjHC2vrDwvYEs50B0XVD2vYq2fZzsGPlNrYAw0Oks5ZDgfYDhnxAxrOkcD3AxrOjYK7cIaGicaGignVBNn0igHHC0PVAw4GpsaVxgiOAw5Uzxj8BgvMDhXYAwDODhXJCM9ZC3XMDwXSkvXZk2PVAw5CyI9PlNrLC3qOyMfZzvf1zxj5ksb8FcaVxgjQB2LUxgiVAs50zxn0kgjHC2vrDwvYEsK7cIaGicaGignVBNn0ig5LzwrZu3vICxvLCNKGpsbPC0n0zvf1zxj5ihX8igHHC0PVAw47cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GlsbNDw5HA2fUihjLywrtB3vYy2uGDw50DwSGCMvHzcbVCgvYyxrPB25ZcIaGicaGignVBNn0ignVDw50vg90ywXrDwvYEsa9ig5LzwrZu3vICxvLCNKGpWOGicaGicaGicDtruXfq1qGq09vtLqOkIKGyxmGDg90ywWGrLjptsaOjYaRigjHC2vrDwvYEsaRicCPigjHC2vFCxvLCNK','oIbHBMfRicC','oWOGicaGicaGignVBNn0igLUDMfSAwrgAwvSzhmGpsbBxtSkcIaGicaGicaGlY8Gq2HLy2SGC2v0AwfWigzPzwXKigrHBgfTihnLBgvJDaOGicaGicaGigzVCIaOy29UC3qGzMLLBgqGB2yGCMvXlMjVzhKUC2vSzwn0ksb7cIaGicaGicaGicaVlYbtA2LWihzHBgLKyxnPihvUDhvRigzPzwXKicDPzcCkicaGicaGicaGigLMicHMAwvSzc50B0XVD2vYq2fZzsGPid09psaNAwqNksb7cIaGicaGicaGicaGignVBNrPBNvLoWOGicaGicaGicaGFqOkicaGicaGicaGic8VifnRAxaGDMfSAwrHC2KGAMLRysbHzgeGu1fmigv4ChjLC3nPB24GzgvUz2fUiefticHHBgLHCYKkicaGicaGicaGigLMicGVxhmRyxnCCYTCDYSKl2KUDgvZDcHMAwvSzcKPihSkicaGicaGicaGicaGy29UDgLUDwu7cIaGicaGicaGicb9cGOGicaGicaGicaGlY8Gu2TPCcb2ywXPzgfZAsbQAwTHigfKysbtuuWGB3bLCMf0B3jZl2z1BMn0Aw9UCYaOFhWSienptKnbvcWGzgXSkqOGicaGicaGicaGAwyGkc9CFfX8FenptKnbvhXdt0fmrvndrxXdqvnfFfDiru4VAs50zxn0kgzPzwXKksKGEWOGicaGicaGicaGicbJB250Aw51ztSkicaGicaGicaGih0kcIaGicaGicaGicaVlYbwywXPzgfZAsbUB3jTywWGzMLLBgqGBMfTzqOGicaGicaGicaGAwyGkcf2ywXPzezPzwXKCY5PBMnSDwrLCYHMAwvSzcKPihSkicaGicaGicaGicaGAw52ywXPzezPzwXKCY5WDxnOkgzPzwXKktSkicaGicaGicaGih0kicaGicaGicb9cGOGicaGicaGigLMicHPBNzHBgLKrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGC2vSzwn0igzPzwXKCYCScIaGicaGicaGicaGig1LC3nHz2u6igbjBNzHBgLKigzPzwXKkhmPoIaKE2LUDMfSAwrgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGicb2ywXPzezPzwXKCZOGDMfSAwrgAwvSzhmScIaGicaGicaGicaGihnXBev4ChjLC3nPB25oB3rLoIaNu1fmigv4ChjLC3nPB25ZigrLBMDHBIbVCgvYyxrVCIb8FcbHDgf1ieftigfSAwfZigrPCgvYyM9SzwHRyw4NlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbhDw5HA2fUig1LDgHVzcbNzxrmB29RDxbeyxrHv2L0AezPBhrLCGOGicaGicbJB25ZDcbSAxn0id0GyxDHAxqG','B0LmBKy','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGCMvZDg9YzsbVDMvYCMLKzsaOuJiWks4Gl3jLC3rVCMuGBwvTyMfSAwSGC29MDcbKzwXLDguGC2vJyxjHigf0B21PyY4kicaGkIbbDg9TAwmGkhnHDhuGDhjHBNnHy3rPB24PoIbtruXfq1qGrK9sifvqrefursbYB3CGDgvYAgfWDxmGkgLZx2rLBgv0zwq9vfjvrsKG4OAsihn0CMLWihn1zMzPEaOGicaQihjLDxnHyMXLicSGA29UzMXPAYa0mdKGkYbgsYa0mJiG4OAsifvqrefursbYzxnLDcbPC19KzwXLDgvKl2rLBgv0zwrFyxqVzgvSzxrLzf9IEsdIHPiGq09ntuLuiokgKGOGicaQigLUDMfSAwrHDgvdywnOzs4GDxbKyxrLzf8QihrPzgfRigrPC2vUDhvOlGOGicaQiebWyxjHBsb7t2jQzwn0FsbJCML0zxjPysaTihSGD2HLCMu6ifSUlI5Dih0GBwvUz2LRDxrPigzVCM1HDcaVzgvSzxrLigv4Axn0Aw5NcIaGicOGqhbHCMfTihTpyMPLy3r9igv2zw50q29UDgv4DcaTiev2zw50igXPzMvJEwnSzsbJB250zxH0icHVChnPB25HBcKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+Fsb7ihn1y2nLC3mSig1LC3nHz2uSihjLC3rVCMvKx2nVDw50lcbYzxn0B3jLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGCMvZDg9YzurHDgeOy3jPDgvYAweSigv2zw50q29UDgv4Dca9ig51BgWPihSkicaGigLMicGHy3jPDgvYAweGFhWGiwnYAxrLCMLHlNDOzxjLksb7cIaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYK7cIaGicb9cGOGicaGy29UC3qGD3jPDgvtB3vYy2uGpsb0AgLZlMDLDfrHyMXLu291CMnLkcD3CML0zsCPoWOGicaGy29UC3qGCMv0DxjUAw5NrMLLBgrZid0GDgHPCY5Nzxrszxr1CM5PBMDgAwvSzhmOktSkcIaGicbJB25ZDcbWB29Sid0GzgiUz2v0ug9VBcGPoWOGicaGy29UC3qGy2XPzw50id0GyxDHAxqGCg9VBc5JB25Uzwn0kcK7cGOGicaGDhj5ihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDcruDjtICPoWOkicaGicaGlY8Gms4Gs3vUy2KGCM93ihrLCMHHChvZihLHBMCGy29JB2SGA3jPDgvYAweUiezPBhrLCIbPC19KzwXLDgvKid0GvfjvrsbTzw1HC3rPA2fUcIaGicaGic8VicaGigHHBNLHihjLy29Yzcb5yw5NigjLBMfYlwjLBMfYihrLCI1ZB2z0lwrLBgv0zsb5yw5NigrPChvSAwHRyw47iezpuIbvuerbveukicaGicaGlY8GicaGBwvUAMfTAw4GC2f0DsbWzw1LBMfUzYbZywf0ihjLC3rVCMuGyMvYC2fTywfUlGOGicaGicbJB25ZDcbZzwXLy3rqyxjHBxmGpsbBxtSkicaGicaGy29UC3qGD2HLCMvcDwLSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOy3jPDgvYAweUD2HLCMuSihnLBgvJDfbHCMfTCYWGmsK7cIaGicaGignVBNn0igXVy2TrDwvYEsa9icDtruXfq1qG','cGOGicaGlY8GqNvPBgqGzxzLBNrdB250zxH0ihvUDhvRignVBxbVC2L0zsbOB29RCYaOAMLRysbJB21WB25LBNqGzw5NAw5LihrLCNnLzgLHkqOGicaGBgv0igv2zw50q29UDgv4Dca9ig51BgW7cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGigv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMuScIaGicaGicaGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','lY8GvgfIzwWGDgfUCgeGyxvKAxqGy29SDw1UCZOGzgLZywjSzsbPBMPLy3rPB24GAgvSCgvYcG','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','igLUzM86jYWGzxjYB3iPoWOGicaGCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MB3jTyxrPB24NlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktS','zMLSztO','jWOGicaGicaGidOGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','oWOGigLMicHZy29WzvzHBhvLid09psb1BMrLzMLUzwqGFhWGC2nVCgvwywX1zsa9pt0GBNvSBcKGEWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaZks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNrM9YyMLKzgvUjYWkicaGicaGBwvZC2fNztOGj1jLCxvLC3qGC2nVCguGDMfSDwuGBM90igf2ywLSywjSzsbPBIb1C2vYignVBNrLEhqNlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqOkicaVlYbfEhbVC2uGC2nVCguGAw5MBYbMB3iGCM91DguGAgfUzgXLCNmGkg93BMvYC2HPCcb2zxjPzMLJyxrPB24GAw4Gl2zPCNn0lcaVDxbKyxrLlcaVDxbKyxrLlwnVBxbVC2L0zsKkicbYzxeUx3jLCxvLC3rty29Wzsa9ihSGy29SDw1UoIaN','nLL4zwDbvq','id0GjcCGkYbWktSkicaGicaGicaGicaGicbWkYS7cIaGicaGicaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOx19VCMLNAw5HBcK7cIaGicaGicaGicaGih0kicaGicaGicaGih0kicaGicaGicb9','jZSkicaGicaGy29UC3qGzgv0ywLSuhjPBwfYEuTLEsa9icC','igrHDgeGBM90igzVDw5Kig9YigfSCMvHzhKGzgvSzxrLzcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG'];a0_0x5930=function(){return _0x16d2c7;};return a0_0x5930();}function hasSoftDeleteFkParents(_0x2061fc){const _0x580225=a0_0x44a2;return Array[_0x580225(0x391)](_0x2061fc['softDeleteFkParents'])&&_0x2061fc['softDeleteFkParents'][_0x580225(0x33a)]>0x0;}function generateSoftDeleteFkParentsCheck(_0x1283db){const _0x51909e=a0_0x44a2,_0x31640b={'MwhTB':function(_0x16ca9a,_0x1f0ef6){return _0x16ca9a(_0x1f0ef6);}};if(!_0x31640b[_0x51909e(0x1d4)](hasSoftDeleteFkParents,_0x1283db))return'';const _0x2fa608=_0x1283db[_0x51909e(0x2bf)][_0x51909e(0x1db)]((_0x497968,_0x205052)=>{const _0x59a1ff=_0x51909e,_0x2c0a3a=_0x497968[_0x59a1ff(0x2e7)][0x0],_0x1dab3f=_0x497968['refTable'],_0x1cbd30=_0x497968[_0x59a1ff(0x35e)][0x0];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x205052+'\x20\x27'+_0x2c0a3a+'\x27\x20→\x20'+_0x1dab3f+'.'+_0x1cbd30+':\x20parent\x20wajib\x20aktif\x20(is_deleted=FALSE)\x20→\x20else\x20422.\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVal\x20=\x20body[\x27'+_0x2c0a3a+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Pemicu\x20=\x20kolom\x20FK\x20hadir\x20non-null;\x20null/undefined\x20→\x20skip\x20(FK\x20nullable,\x20tak\x20ada\x20parent).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVal\x20!==\x20null\x20&&\x20__fkVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkRes\x20=\x20await\x20pool.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x1dab3f+_0x59a1ff(0x3a4)+_0x1cbd30+_0x59a1ff(0x370)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__fkVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkRes.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkErr\x20=\x20new\x20Error(\x22Cannot\x20\x22\x20+\x20operation\x20+\x20\x22:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x1dab3f+_0x59a1ff(0x3a0);})['join']('');return _0x51909e(0x1eb)+_0x2fa608+_0x51909e(0x3ba);}function createPostgresModelTemplate(_0x46edec,_0x48d22c,_0x1a44e0){const _0x1ee3ae=a0_0x44a2,_0x2ae598={'OVTyh':function(_0x290004,_0x1639c9){return _0x290004+_0x1639c9;},'Bfacf':function(_0x2a7433,_0x4d64a8){return _0x2a7433(_0x4d64a8);},'OEZQi':_0x1ee3ae(0x2ba),'ejlqz':'[\x27name\x27,\x20\x27nama\x27,\x20\x27code\x27,\x20\x27kode\x27,\x20\x27all\x27]','BXvsu':_0x1ee3ae(0x3a8),'lOhEN':function(_0x1cc52e,_0x595217,_0x1c36a4){return _0x1cc52e(_0x595217,_0x1c36a4);},'EdNRU':_0x1ee3ae(0x27b),'wxwWS':_0x1ee3ae(0x2a4),'OMYuB':function(_0x51962a){return _0x51962a();},'NLKzd':function(_0x26a6c9,_0x5ab957){return _0x26a6c9(_0x5ab957);}};assertNoFileReferenceLeftover(_0x1a44e0);const _0x1525fc=FileUtils[_0x1ee3ae(0x274)](_0x48d22c),_0x265a6a=new Date()[_0x1ee3ae(0x326)]()['replace']('T','\x20')[_0x1ee3ae(0x318)](/\.\d{3}Z$/,''),_0x5ec4e4=buildValidFieldsString(_0x1a44e0),_0x11b796=_0x2ae598['Bfacf'](buildSearchColumnsCode,_0x1a44e0),_0x4a647b=buildFiltersCode(_0x1a44e0),_0x5a2b68=buildLookupOverrideCode(_0x48d22c,_0x1a44e0),_0x3f5337=buildAdvancedQuerySection(_0x1a44e0),_0x44850a=buildFieldMappingCode(_0x1a44e0),_0x2ae908=buildAuditColumnsSection(_0x1a44e0,_0x2ae598[_0x1ee3ae(0x2d5)]),_0x3cd825=buildFormatResponseDataBody(_0x1a44e0),_0x2e1c14=isSoftDeleteEnabled(_0x1a44e0)?_0x1ee3ae(0x1fe)+JSON[_0x1ee3ae(0x351)](SOFT_DELETE_COLUMNS)+')\x20delete\x20__r[__sdCol];\x20return\x20__r;\x20})':_0x1ee3ae(0x35f),_0x254154=_0x1a44e0[_0x1ee3ae(0x385)]&&_0x1a44e0['defaultScope']['read']?buildDefaultScopeSQL(_0x1a44e0['defaultScope'][_0x1ee3ae(0x1fa)],''):'',_0x5bfa14=((()=>{const _0x4083e9=_0x1ee3ae,_0x500175=softDeleteVisibilityFilter(_0x1a44e0);return _0x500175!==null?_0x2ae598[_0x4083e9(0x266)]('\x20WHERE\x20'+IS_DELETED_COLUMN,'\x20=\x20')+_0x500175:'';})()),_0x1da008=_0x1a44e0[_0x1ee3ae(0x38c)]||_0x1a44e0[_0x1ee3ae(0x2b1)],_0x28a74c=_0x1a44e0['tableName'];return'const\x20BaseModel\x20=\x20require(\x27@restforgejs/platform/src/models/base-model\x27);\x0aconst\x20db\x20=\x20require(\x27@restforgejs/platform/src/utils/db\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a//\x20AdvancedFilterHelper\x20dihapus\x20—\x20semua\x20filtering\x20ditangani\x20oleh\x20buildObjectFilterClause\x20dan\x20buildComplexWhereClause\x0a\x0a/**\x0a\x20*\x20'+_0x1525fc+_0x1ee3ae(0x348)+_0x265a6a+_0x1ee3ae(0x2e9)+_0x48d22c+_0x1ee3ae(0x382)+_0x1a44e0['tableName']+(_0x1a44e0['viewName']?'\x0a\x20*\x20View:\x20'+_0x1a44e0[_0x1ee3ae(0x38c)]:'')+'\x0a\x20*\x20Fields:\x20'+(_0x1a44e0['fieldName']?_0x1a44e0['fieldName']['length']:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0aclass\x20'+_0x1525fc+_0x1ee3ae(0x3b0)+_0x48d22c+_0x1ee3ae(0x2a3)+_0x5ec4e4+'\x0a\x20\x20\x20\x20];\x0a\x0a\x20\x20\x20\x20//\x20Definisikan\x20datatablesWhere\x20sesuai\x20payload\x0a\x20\x20\x20\x20const\x20datatablesWhere\x20=\x20'+(_0x1a44e0[_0x1ee3ae(0x2d1)]?JSON['stringify'](_0x1a44e0['datatablesWhere']):_0x2ae598[_0x1ee3ae(0x306)])+';\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20constructor\x20parent\x20dengan\x20nama\x20tabel,\x20validFields,\x20dan\x20datatablesWhere\x0a\x20\x20\x20\x20super(\x27'+_0x1a44e0['tableName']+_0x1ee3ae(0x31c)+(_0x1a44e0[_0x1ee3ae(0x282)]||_0x1a44e0['fieldName']&&_0x1a44e0[_0x1ee3ae(0x2a2)][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20viewName\x20untuk\x20operasi\x20read\x20jika\x20berbeda\x20dari\x20tableName\x0a\x20\x20\x20\x20this.viewName\x20=\x20\x27'+_0x1da008+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x1da008+_0x1ee3ae(0x2db)+_0x28a74c+'\x27;\x20//\x20Source\x20untuk\x20operasi\x20write\x20(add,\x20update,\x20delete)\x0a'+_0x2ae908+_0x1ee3ae(0x28d)+!!_0x1a44e0[_0x1ee3ae(0x27b)]+';\x0a\x20\x20\x20\x20this.hasExportQuery\x20=\x20'+!!_0x1a44e0[_0x1ee3ae(0x36a)]+_0x1ee3ae(0x32d)+(_0x1a44e0[_0x1ee3ae(0x2cc)]&&Object[_0x1ee3ae(0x293)](_0x1a44e0[_0x1ee3ae(0x2cc)])[_0x1ee3ae(0x33a)]>0x0?_0x1ee3ae(0x230)+JSON[_0x1ee3ae(0x351)](_0x1a44e0[_0x1ee3ae(0x2cc)],null,0x6)+';\x0a\x20\x20\x20\x20':'')+(_0x1a44e0[_0x1ee3ae(0x27f)]&&_0x1a44e0[_0x1ee3ae(0x27f)]['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON['stringify'](Object['keys'](_0x1a44e0['uploadConfig'][_0x1ee3ae(0x33b)]))+_0x1ee3ae(0x3ac):'')+'\x0a'+_generateValidationConfig(_0x1a44e0[_0x1ee3ae(0x1f1)])+_0x1ee3ae(0x373)+_0x48d22c+'\x27,\x0a\x20\x20\x20\x20\x20\x20moduleName:\x20\x27'+_0x46edec+_0x1ee3ae(0x356)+_0x1a44e0[_0x1ee3ae(0x2b1)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20viewName:\x20\x27'+_0x1da008+_0x1ee3ae(0x35d)+(_0x1a44e0[_0x1ee3ae(0x2a2)]?_0x1a44e0['fieldName'][_0x1ee3ae(0x33a)]:0x0)+_0x1ee3ae(0x289)+_0x265a6a+'\x27,\x0a\x20\x20\x20\x20\x20\x20features:\x20'+JSON['stringify'](_0x1a44e0['_metadata']?.['features']||[])+'\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Load\x20advanced\x20query\x20templates\x20dari\x20file\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Templates\x20SQL\x20untuk\x20advanced\x20queries\x0a\x20\x20\x20*/\x0a\x20\x20loadAdvancedQueryTemplates()\x20{\x0a\x20\x20\x20\x20const\x20templates\x20=\x20{};\x0a\x20\x20\x20\x20'+_0x3f5337+_0x1ee3ae(0x2ce)+_0x48d22c+_0x1ee3ae(0x1c5)+_0x48d22c+_0x1ee3ae(0x1d0)+buildQueryLoadingCode(_0x1a44e0['datatablesQuery'],_0x2ae598['BXvsu'])+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x20-\x20gunakan\x20readSource\x20untuk\x20operasi\x20read\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${tableName}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${this.table}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getReadQuery\x20untuk\x20endpoint\x20/read\x0a\x20\x20\x20*\x20Prioritas:\x20viewName\x20->\x20viewQuery\x20->\x20tableName\x20(SELECT\x20*\x20FROM\x20readSource)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20/read\x0a\x20\x20\x20*/\x0a\x20\x20getReadQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Priority\x201:\x20viewName\x20(real\x20database\x20view)\x0a\x20\x20\x20\x20if\x20(this.viewName\x20&&\x20this.viewName\x20!==\x20this.table)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.viewName;\x0a\x20\x20\x20\x20}\x0a'+(_0x1a44e0[_0x1ee3ae(0x27b)]?'\x20\x20\x20\x20//\x20Priority\x202:\x20viewQuery\x20(virtual\x20view\x20dari\x20payload)\x0a\x20\x20\x20\x20'+_0x2ae598[_0x1ee3ae(0x372)](buildQueryLoadingCode,_0x1a44e0['viewQuery'],_0x2ae598['EdNRU'])+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{tableName\x5c}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{this\x5c.table\x5c}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;':'\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20readSource\x20langsung\x20(semua\x20kolom\x20tersedia)\x0a\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;')+_0x1ee3ae(0x2f4)+_0x5bfa14+_0x1ee3ae(0x1ff)+(_0x5bfa14?_0x2ae598['wxwWS']+_0x5bfa14+'\x27':'')+_0x1ee3ae(0x396)+(_0x254154?'WHERE\x20'+_0x254154:'')+_0x1ee3ae(0x341)+(_0x254154?'whereClause\x20+=\x20`\x20AND\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;':_0x1ee3ae(0x294))+_0x1ee3ae(0x39e)+_0x5bfa14+_0x1ee3ae(0x2ff)+(_0x5bfa14?_0x2ae598['OVTyh'](_0x2ae598[_0x1ee3ae(0x256)],_0x5bfa14)+'\x27':'')+';\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20totalRecords\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x205.\x20Menghitung\x20jumlah\x20data\x20terfilter\x20(jika\x20ada\x20where/search)\x0a\x20\x20\x20\x20\x20\x20let\x20filteredRecords\x20=\x20totalRecords;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource\x20+\x20\x27\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredResult\x20=\x20await\x20db.executeQuery(countFilteredQuery,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x20\x20\x20\x20\x20\x20\x20\x20filteredRecords\x20=\x20countFilteredResult\x20&&\x20countFilteredResult[0]\x20?\x20parseInt(countFilteredResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Build\x20ORDER\x20BY\x20clause\x0a\x20\x20\x20\x20\x20\x20const\x20orderClause\x20=\x20this.buildSortColumnsClause(sort_columns);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x207.\x20Build\x20LIMIT\x20dan\x20OFFSET\x20clause\x20(kondisional\x20berdasarkan\x20mode)\x0a\x20\x20\x20\x20\x20\x20let\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${offset}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${limit}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x208.\x20Menjalankan\x20query\x20final\x20untuk\x20data\x20(subquery\x20wrapping\x20untuk\x20JOIN/CTE)\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20console.log(`List\x20SQL\x20Query:\x20${query}`);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27List\x20Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20'+_0x2e1c14+_0x1ee3ae(0x349)+_0x11b796+'\x0a\x0a'+_0x4a647b+'\x0a\x0a'+_0x5a2b68+'\x0a\x0a'+_0x44850a+_0x1ee3ae(0x23d)+_0x48d22c+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20dari\x20database\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Data\x20yang\x20sudah\x20diformat\x20untuk\x20response\x20'+_0x48d22c+'\x0a\x20\x20\x20*/\x0a\x20\x20formatResponseData(data)\x20{\x0a'+_0x3cd825+'\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Execute\x20advanced\x20query\x20berdasarkan\x20nama\x0a\x20\x20\x20*\x20@param\x20{string}\x20queryName\x20-\x20Nama\x20query\x20dari\x20advancedQueryTemplates\x0a\x20\x20\x20*\x20@param\x20{Object}\x20params\x20-\x20Parameter\x20untuk\x20query\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Hasil\x20query\x0a\x20\x20\x20*/\x0a\x20\x20async\x20executeAdvancedQuery(queryName,\x20params\x20=\x20{})\x20{\x0a\x20\x20\x20\x20if\x20(!this.advancedQueryTemplates[queryName])\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Advanced\x20query\x20\x27${queryName}\x27\x20not\x20found.\x20Available\x20queries:\x20${Object.keys(this.advancedQueryTemplates).join(\x27,\x20\x27)}`);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20this.advancedQueryTemplates[queryName];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20placeholders\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${tableName}/g,\x20this.table);\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${this.table}/g,\x20this.table);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20parameter\x20placeholders\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(params))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20placeholder\x20=\x20new\x20RegExp(`\x5c$\x5c{params\x5c\x5c.${key}\x5c}`,\x20\x27g\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(placeholder,\x20value);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Executing\x20advanced\x20query\x20\x27${queryName}\x27:\x20${query}`);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20await\x20db.executeQuery(query);\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20executing\x20advanced\x20query\x20\x27${queryName}\x27:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20data\x20before\x20insert/update\x20operations\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20yang\x20akan\x20divalidasi\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20Operasi\x20(insert/update)\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Validation\x20result\x0a\x20\x20\x20*/\x0a\x20\x20async\x20validateData(data,\x20operation\x20=\x20\x27insert\x27)\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20isValid:\x20true,\x0a\x20\x20\x20\x20\x20\x20errors:\x20[],\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitizedData:\x20{}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20we\x20have\x20fieldValidation\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20hasFieldValidation\x20=\x20this.validationConfig\x20&&\x20Object.keys(this.validationConfig).length\x20>\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(hasFieldValidation)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Loop\x20semua\x20field\x20yang\x20ada\x20di\x20validationConfig\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20fieldName\x20in\x20this.validationConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20value\x20=\x20data[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20value\x20jika\x20autoGenerate\x20dan\x20nilai\x20kosong.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20dan\x20uuid\x20diperlakukan\x20sama:\x20UUID\x20v7\x20via\x20uuid\x20package\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20(konsisten\x20lintas\x20dialect;\x20cocok\x20dengan\x20konvensi\x20payload\x20category.json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20yang\x20memakai\x20type:\x20\x22string\x22\x20dengan\x20constraint\x20autoGenerate\x20+\x20primaryKey).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20constraints.autoGenerate\x20&&\x20(!value\x20||\x20value\x20===\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(config.type\x20===\x20\x27uuid\x27\x20||\x20config.type\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27timestamp\x27\x20||\x20config.type\x20===\x20\x27datetime\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27date\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString().split(\x27T\x27)[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20per-field\x20dengan\x20constraints\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fieldResult\x20=\x20await\x20this.validateFieldConstraints(fieldName,\x20value,\x20operation);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20errors\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!fieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...fieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20warnings\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.warnings\x20&&\x20fieldResult.warnings.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.warnings.push(...fieldResult.warnings);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Set\x20sanitized\x20value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.sanitized\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20fieldResult.sanitized;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20field\x20yang\x20tidak\x20ada\x20di\x20validationConfig\x20(backward\x20compatibility)\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.validationConfig[field]\x20&&\x20data[field]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback\x20ke\x20generic\x20sanitization\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20data[field]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cross-field\x20validation\x20(contoh:\x20before/after\x20date)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(result.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20crossFieldResult\x20=\x20await\x20this._validateCrossFieldConstraints(result.sanitizedData,\x20operation);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!crossFieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...crossFieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20Tidak\x20ada\x20fieldValidation\x20-\x20gunakan\x20generic\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20data[field];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Required\x20field\x20validation\x20untuk\x20insert\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20(field\x20===\x20\x27id\x27\x20||\x20field\x20===\x20\x27name\x27\x20||\x20field\x20===\x20\x27nama\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field\x20!==\x20\x27id\x27)\x20{\x20//\x20ID\x20bisa\x20auto-generated\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(`Field\x20\x27${field}\x27\x20is\x20required\x20for\x20${operation}\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Sanitize\x20dan\x20validate\x20value\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Generic\x20email\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.email\x20&&\x20!/^[^\x5cs@]+@[^\x5cs@]+\x5c.[^\x5cs@]+$/.test(data.email))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(\x27Invalid\x20email\x20format\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20result.errors.push(`Validation\x20error:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Sanitize\x20field\x20value\x20berdasarkan\x20tipe\x20field\x20(generic\x20fallback)\x0a\x20\x20\x20*\x20@param\x20{string}\x20fieldName\x20-\x20Nama\x20field\x0a\x20\x20\x20*\x20@param\x20{*}\x20value\x20-\x20Nilai\x20field\x0a\x20\x20\x20*\x20@returns\x20{*}\x20Sanitized\x20value\x0a\x20\x20\x20*/\x0a\x20\x20sanitizeFieldValue(fieldName,\x20value)\x20{\x0a\x20\x20\x20\x20if\x20(typeof\x20value\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Trim\x20whitespace\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.trim();\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Escape\x20special\x20characters\x20untuk\x20mencegah\x20injection\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.replace(/[<>]/g,\x20\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Truncate\x20jika\x20terlalu\x20panjang\x0a\x20\x20\x20\x20\x20\x20if\x20(value.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20value.substring(0,\x20255);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20value;\x0a\x20\x20}\x0a'+_0x2ae598[_0x1ee3ae(0x2ae)](_generateValidateFieldConstraints)+_0x1ee3ae(0x205)+generateCompositeMethods(_0x1a44e0)+generateDeleteMethod(_0x1a44e0)+_0x2ae598[_0x1ee3ae(0x267)](generateRestoreMethod,_0x1a44e0)+generateSoftDeleteFkParentsCheck(_0x1a44e0)+_0x1ee3ae(0x392)+_0x1525fc+'Model();';}function getEnabledActions(_0x179d75){const _0x152c20=a0_0x44a2,_0x3f1e74={'XNJhZ':_0x152c20(0x22e)};if(!_0x179d75['action']||typeof _0x179d75['action']!==_0x3f1e74[_0x152c20(0x231)])return[];return Object[_0x152c20(0x2da)](_0x179d75['action'])[_0x152c20(0x353)](([,_0x36a164])=>_0x36a164)['map'](([_0x3ba219])=>_0x3ba219);}function buildEndpointFunctions(_0x4c049c,_0x285189,_0x3ab585,_0x439c77,_0x1673dc,_0x4542d2=null,_0x536f62=![]){const _0x54e357=a0_0x44a2,_0x18629e={'igtbC':function(_0x194571,_0x1f61d4){return _0x194571(_0x1f61d4);},'ztAZM':function(_0x4846e9,_0x74828a,_0x25495c,_0x59a59a,_0x445611,_0xc875aa){return _0x4846e9(_0x74828a,_0x25495c,_0x59a59a,_0x445611,_0xc875aa);},'CyqTR':function(_0x306aa5,_0xa4723,_0x4875ed,_0x43f26e,_0x581846){return _0x306aa5(_0xa4723,_0x4875ed,_0x43f26e,_0x581846);},'SQWkP':function(_0x246557,_0x2d4193,_0x4a65ba,_0x4c330e,_0x1b95dd){return _0x246557(_0x2d4193,_0x4a65ba,_0x4c330e,_0x1b95dd);},'BqEew':function(_0x53ba88,_0x49f2e3,_0x2ff986,_0x474df7,_0x46cedc,_0x51812e,_0x995387){return _0x53ba88(_0x49f2e3,_0x2ff986,_0x474df7,_0x46cedc,_0x51812e,_0x995387);},'OtBBN':function(_0x44468b,_0x3e0dfd,_0x5b1cca,_0x2224ee,_0x4bc58b,_0x563c17,_0xd6314c){return _0x44468b(_0x3e0dfd,_0x5b1cca,_0x2224ee,_0x4bc58b,_0x563c17,_0xd6314c);},'oKOav':function(_0x234892,_0x464a03,_0x10e518,_0x117007,_0x7f5eae){return _0x234892(_0x464a03,_0x10e518,_0x117007,_0x7f5eae);},'GIDTr':function(_0x48c779,_0xbd7874,_0x41d5be,_0x436ed6,_0x22d3a2){return _0x48c779(_0xbd7874,_0x41d5be,_0x436ed6,_0x22d3a2);},'UQrXn':function(_0x34b413,_0x41ca6e,_0x5b24c0,_0x303a00,_0x53a92a){return _0x34b413(_0x41ca6e,_0x5b24c0,_0x303a00,_0x53a92a);}},_0x329fc1=_0x3ab585['action']||{},_0x4d179e=_0x18629e['igtbC'](getEnabledActions,_0x3ab585);let _0x2222c6='';if(!_0x4542d2){const _0x1e26d7=FileUtils['toCamelCase'](_0x285189);_0x4542d2=_0x1e26d7+_0x54e357(0x36f);}return _0x329fc1[_0x54e357(0x305)]&&(_0x2222c6+=generateDatatablesFunction(_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1['create']&&(_0x2222c6+=generateCreateFunction(_0x4c049c,_0x285189,_0x3ab585,_0x4542d2,_0x536f62)),_0x329fc1[_0x54e357(0x307)]&&(_0x2222c6+=_0x18629e['ztAZM'](generateUpdateFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2,_0x536f62)),_0x329fc1[_0x54e357(0x239)]&&(_0x2222c6+=_0x18629e['CyqTR'](generateAdjustFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1['aggregate']&&(_0x2222c6+=_0x18629e['SQWkP'](generateAggregateFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1[_0x54e357(0x290)]&&(_0x2222c6+=_0x18629e['ztAZM'](generateDeleteFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2,_0x536f62)),_0x329fc1[_0x54e357(0x23b)]&&isSoftDeleteEnabled(_0x3ab585)&&(_0x2222c6+=_0x18629e[_0x54e357(0x1e3)](generateRestoreFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1[_0x54e357(0x2a6)]&&(_0x2222c6+=_0x18629e[_0x54e357(0x1d9)](generateFirstFunction,_0x4c049c,_0x285189,_0x3ab585,_0x439c77,_0x1673dc,_0x4542d2)),_0x329fc1['lookup']&&(_0x2222c6+=_0x18629e[_0x54e357(0x329)](generateLookupFunction,_0x4c049c,_0x285189,_0x3ab585,_0x439c77,_0x1673dc,_0x4542d2)),_0x329fc1[_0x54e357(0x1fa)]&&(_0x2222c6+=_0x18629e['oKOav'](generateReadFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1[_0x54e357(0x387)]&&(_0x2222c6+=_0x18629e['oKOav'](generateCreateCompositeFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1['updateComposite']&&(_0x2222c6+=generateUpdateCompositeFunction(_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1[_0x54e357(0x1f6)]&&(_0x2222c6+=_0x18629e[_0x54e357(0x298)](generateReadCompositeFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x329fc1[_0x54e357(0x1e7)]&&(_0x2222c6+=_0x18629e['UQrXn'](generateWorkflowFunction,_0x4c049c,_0x285189,_0x3ab585,_0x4542d2)),_0x4d179e['length']===0x0&&(_0x2222c6+='\x0a//\x20No\x20actions\x20enabled\x20for\x20this\x20endpoint\x0a//\x20Enable\x20actions\x20in\x20payload\x20to\x20generate\x20endpoints'),_0x2222c6;}function generateDatatablesFunction(_0x245020,_0x38931e,_0x5b4828,_0x507d88=null){const _0x34751a=a0_0x44a2;if(!_0x507d88){const _0xc55d98=FileUtils['toCamelCase'](_0x38931e);_0x507d88=_0xc55d98+'Model';}return _0x34751a(0x344)+_0x245020+'/'+_0x38931e+'/datatables\x20-\x20Data\x20untuk\x20DataTables\x0arouter.post(\x27/datatables\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x38931e+'/datatables:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Extract\x20parameters\x20dari\x20request\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20req.body.search?.value\x20||\x20req.body.searchValue\x20||\x20req.body.search_value\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20req.body.searchBy\x20||\x20req.body.search_by\x20||\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20perPage:\x20parseInt(req.body.length\x20||\x20req.body.pagination?.perpage\x20||\x2010,\x2010),\x0a\x20\x20\x20\x20\x20\x20start:\x20parseInt(req.body.start\x20||\x200,\x2010),\x0a\x20\x20\x20\x20\x20\x20draw:\x20req.body.draw\x20||\x20\x271\x27\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20options.sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Pass\x20format\x20DataTables\x20parameters\x20jika\x20ada\x20(fallback)\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][column]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20=\x20req.body[\x27order[0][column]\x27];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][dir]\x27]\x20=\x20req.body[\x27order[0][dir]\x27];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20dalam\x20format\x20filters\x20object\x0a\x20\x20\x20\x20if\x20(req.body.filters\x20&&\x20typeof\x20req.body.filters\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Filter\x20out\x20values\x20that\x20should\x20be\x20ignored\x20(\x22all\x22,\x20\x22-\x22,\x20\x22\x22,\x20null,\x20undefined)\x0a\x20\x20\x20\x20\x20\x20const\x20filteredFilters\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20Object.keys(req.body.filters).forEach(key\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20req.body.filters[key];\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ignore\x20filter\x20if\x20value\x20is\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20string,\x20null,\x20or\x20undefined\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20\x22all\x22\x20&&\x20value\x20!==\x20\x22-\x22\x20&&\x20value\x20!==\x20\x22\x22\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20filteredFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Only\x20set\x20filters\x20if\x20there\x20are\x20valid\x20filters\x20remaining\x0a\x20\x20\x20\x20\x20\x20if\x20(Object.keys(filteredFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.filters\x20=\x20filteredFilters;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20filters\x20(ignoring\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20values):\x27,\x20JSON.stringify(filteredFilters,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27All\x20filters\x20ignored\x20due\x20to\x20\x22all\x22,\x20\x22-\x22,\x20or\x20empty\x20values\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x20(mendukung\x20format\x20array\x20legacy\x20dan\x20format\x20object\x20baru)\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20where\x20conditions:\x27,\x20JSON.stringify(req.body.where,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Invalid\x20where\x20format,\x20ignoring\x20where\x20parameter\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20parameters\x0a\x20\x20\x20\x20if\x20(options.perPage\x20>\x201000)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x201000;\x20//\x20Limit\x20untuk\x20mencegah\x20overload\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(options.perPage\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x2010;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x507d88+'.getDatatables(options);\x0a\x0a\x20\x20\x20\x20//\x20Menambahkan\x20nomor\x20baris\x20untuk\x20DataTables\x20jika\x20diperlukan\x0a\x20\x20\x20\x20if\x20(result.data\x20&&\x20Array.isArray(result.data))\x20{\x0a\x20\x20\x20\x20\x20\x20result.data\x20=\x20result.data.map((item,\x20index)\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20...item,\x0a\x20\x20\x20\x20\x20\x20\x20\x20rownumerator:\x20options.start\x20+\x20index\x20+\x201\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x38931e+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20options:\x20options,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json(result);\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x38931e+'\x20datatables:\x27,\x20error);\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x38931e+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateCreateFunction(_0x3954ac,_0x169f1e,_0x2c0d93,_0x3b3c8a=null,_0x7b83f8=![]){const _0x297e21=a0_0x44a2,_0xa30fb2={'YguCN':function(_0x3c6da0,_0x77dba4){return _0x3c6da0(_0x77dba4);}};if(!_0x3b3c8a){const _0x1b598f=FileUtils['toCamelCase'](_0x169f1e);_0x3b3c8a=_0x1b598f+_0x297e21(0x36f);}const _0x38e957=isSoftDeleteEnabled(_0x2c0d93)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x297e21(0x351)](SOFT_DELETE_COLUMNS)+_0x297e21(0x381):'',_0x38f6ec=_0xa30fb2['YguCN'](hasSoftDeleteFkParents,_0x2c0d93)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20wajib\x20aktif\x20untuk\x20tiap\x20kolom\x20FK\x20yang\x20diisi\x20(pre-check\x20422).\x0a\x20\x20\x20\x20await\x20'+_0x3b3c8a+'.checkSoftDeleteFkParents(req.body,\x20\x27create\x27);\x0a':'',_0x200a5d=hasSoftDeleteFkParents(_0x2c0d93)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x1c7c38=_0x7b83f8?_0x297e21(0x2df)+_0x3954ac+_0x297e21(0x257)+_0x169f1e+_0x297e21(0x1e6)+(_0x2c0d93[_0x297e21(0x282)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2c0d93['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0xdb62c6=_0x7b83f8?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x297e21(0x278);return _0x297e21(0x344)+_0x3954ac+'/'+_0x169f1e+'/create\x20-\x20Menambahkan\x20data\x20'+_0x169f1e+'\x20baru\x0arouter.post(\x27/create\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x169f1e+_0x297e21(0x309)+_0xdb62c6+_0x297e21(0x268)+_0x3b3c8a+_0x297e21(0x24a)+_0x3b3c8a+'.validateData(req.body,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20sanitized\x20data\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}'+_0x38e957+'\x0a'+_0x38f6ec+'\x0a\x20\x20\x20\x20//\x20Event\x20lifecycle\x20variables\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2c0d93[_0x297e21(0x2b1)]+_0x297e21(0x2c9)+_0x3b3c8a+_0x297e21(0x2b5)+_0x3b3c8a+'.addData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20INSERT\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x169f1e+_0x297e21(0x34a)+(_0x2c0d93[_0x297e21(0x282)]||'id')+_0x297e21(0x1fb)+_0x1c7c38+'\x0a\x20\x20\x20\x20//\x20Kirim\x20response\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x169f1e+'\x20data\x20successfully\x20added\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menambahkan\x20data\x20'+_0x169f1e+_0x297e21(0x1ea)+_0x200a5d+_0x297e21(0x245)+_0x169f1e+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateUpdateFunction(_0x963093,_0x4e7d42,_0xec73db,_0x3562af=null,_0xab8577=![]){const _0x26ab4e=a0_0x44a2,_0x120607={'bfwCB':function(_0x359afe,_0x378f95){return _0x359afe(_0x378f95);},'reoFl':function(_0x6f78fb,_0x298484){return _0x6f78fb(_0x298484);},'oILnF':function(_0x36aa4b,_0x4c67e5){return _0x36aa4b(_0x4c67e5);}};if(!_0x3562af){const _0xb104ea=FileUtils[_0x26ab4e(0x30c)](_0x4e7d42);_0x3562af=_0xb104ea+_0x26ab4e(0x36f);}const _0x229776=_0xec73db['fieldPolicy']?',\x20'+JSON[_0x26ab4e(0x351)](_0xec73db[_0x26ab4e(0x20e)]):'',_0x4d246b=_0xec73db['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x3562af+_0x26ab4e(0x275)+_0x4e7d42+_0x26ab4e(0x2ab):'',_0x47c72d=softDeleteVisibilityFilter(_0xec73db),_0x1bfb5c=_0x47c72d!==null?_0x26ab4e(0x276)+_0x3562af+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20\x27'+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x47c72d+'\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!__sdCheck.success\x20||\x20!__sdCheck.data\x20||\x20__sdCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x4e7d42+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}':'',_0x50ece0=_0x120607['bfwCB'](isSoftDeleteEnabled,_0xec73db)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+_0x26ab4e(0x381):'',_0xab6931=_0x120607[_0x26ab4e(0x34b)](hasSoftDeleteFkParents,_0xec73db)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20cek\x20parent\x20aktif\x20hanya\x20untuk\x20kolom\x20FK\x20yang\x20disertakan\x20body\x20(pre-check\x20422).\x0a\x20\x20\x20\x20await\x20'+_0x3562af+_0x26ab4e(0x38b):'',_0x52096a=_0x120607[_0x26ab4e(0x2f7)](hasSoftDeleteFkParents,_0xec73db)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x549d71=_0xab8577?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20UPDATE\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabledUpdate\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabledUpdate\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.update)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishUpdate(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x963093+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x4e7d42+_0x26ab4e(0x1cd)+(_0xec73db[_0x26ab4e(0x282)]||'id')+_0x26ab4e(0x1cf)+_0xec73db[_0x26ab4e(0x2b1)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0x2a6917=_0xab8577?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x26ab4e(0x278);return'\x0a//\x20POST\x20/api/'+_0x963093+'/'+_0x4e7d42+'/update\x20-\x20Mengupdate\x20data\x20'+_0x4e7d42+'\x0arouter.post(\x27/update\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x4e7d42+'/update:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x2a6917+_0x26ab4e(0x39f)+(_0xec73db[_0x26ab4e(0x282)]||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x4d246b+_0x1bfb5c+'\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20primary\x20key\x20adalah\x20UUID\x20yang\x20valid\x20(jika\x20primary\x20key\x20adalah\x20\x27id\x27)\x0a\x20\x20\x20\x20const\x20uuidRegex\x20=\x20/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\x0a\x20\x20\x20\x20const\x20isValidUUID\x20=\x20primaryKey\x20===\x20\x27id\x27\x20&&\x20uuidRegex.test(req.body[primaryKey]);\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20data\x20dengan\x20model\x20jika\x20tersedia\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x3562af+_0x26ab4e(0x24a)+_0x3562af+'.validateData(req.body,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20sanitized\x20data\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}'+_0x50ece0+'\x0a'+_0xab6931+'\x0a\x20\x20\x20\x20//\x20Event\x20lifecycle\x20variables\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20oldData\x20fetch\x20+\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xec73db[_0x26ab4e(0x2b1)]+_0x26ab4e(0x2c9)+_0x3562af+_0x26ab4e(0x20f)+_0x229776+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20mode\x20lama\x20tanpa\x20events\x20(tetap\x20propagasi\x20requestId\x20untuk\x20Live\x20Sync)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x3562af+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0x229776+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20UPDATE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x4e7d42+'\x20data\x20updated\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a'+_0x549d71+'\x0a\x20\x20\x20\x20//\x20Kirim\x20response\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x4e7d42+_0x26ab4e(0x35c)+_0x4e7d42+':\x27,\x20error);\x0a'+_0x52096a+_0x26ab4e(0x32f)+_0x4e7d42+_0x26ab4e(0x346)+_0x4e7d42+_0x26ab4e(0x287);}function generateAdjustFunction(_0x41346c,_0x183171,_0x860dda,_0x49d655=null){const _0x3bea71=a0_0x44a2;if(!_0x49d655){const _0x359809=FileUtils['toCamelCase'](_0x183171);_0x49d655=_0x359809+'Model';}const _0x597631=_0x860dda['adjustConfig']?JSON[_0x3bea71(0x351)](_0x860dda['adjustConfig']):'{}',_0x5a3017=_0x860dda[_0x3bea71(0x20e)]?',\x20'+JSON[_0x3bea71(0x351)](_0x860dda['fieldPolicy']):'',_0x482a64=_0x860dda['fieldPolicy']?_0x3bea71(0x3b6)+JSON[_0x3bea71(0x351)](_0x860dda[_0x3bea71(0x20e)]):'',_0x1d5ff3=_0x860dda['requestScope']?_0x3bea71(0x24c)+_0x49d655+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x183171+_0x3bea71(0x2ab):'';return _0x3bea71(0x344)+_0x41346c+'/'+_0x183171+_0x3bea71(0x216)+_0x183171+'\x20(atomic\x20increment/decrement)\x0arouter.post(\x27/adjust\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x860dda[_0x3bea71(0x282)]||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20adjust`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20adjustments\x20array\x0a\x20\x20\x20\x20if\x20(!req.body.adjustments\x20||\x20!Array.isArray(req.body.adjustments)\x20||\x20req.body.adjustments.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27adjustments\x20array\x20is\x20required\x20and\x20must\x20not\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x1d5ff3+_0x3bea71(0x25b)+_0x597631+_0x3bea71(0x323)+_0x860dda[_0x3bea71(0x2b1)]+_0x3bea71(0x2c9)+_0x49d655+_0x3bea71(0x32b)+_0x5a3017+_0x3bea71(0x367)+_0x49d655+'.adjustData(req.body,\x20adjustConfig'+_0x482a64+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20ADJUST\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x183171+'\x20data\x20adjusted\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x183171+_0x3bea71(0x3a6)+_0x183171+_0x3bea71(0x1c7)+_0x183171+_0x3bea71(0x34e)+_0x183171+_0x3bea71(0x287);}function generateAggregateFunction(_0xe01ea7,_0x2e40a2,_0x251c3e,_0x126caa=null){const _0x4d6cf8=a0_0x44a2;if(!_0x126caa){const _0x1d8d75=FileUtils[_0x4d6cf8(0x30c)](_0x2e40a2);_0x126caa=_0x1d8d75+_0x4d6cf8(0x36f);}const _0x34937f=_0x251c3e['aggregateConfig']?JSON['stringify'](_0x251c3e[_0x4d6cf8(0x1c2)]):'{}';return'\x0a//\x20POST\x20/api/'+_0xe01ea7+'/'+_0x2e40a2+'/aggregate\x20-\x20Aggregate\x20data\x20(count,\x20sum,\x20avg,\x20min,\x20max)\x0arouter.post(\x27/aggregate\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20aggregateConfig\x20=\x20'+_0x34937f+';\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x126caa+'.aggregateData(req.body\x20||\x20{},\x20aggregateConfig);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mengagregasi\x20data\x20'+_0x2e40a2+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20403)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Pro\x20Feature\x20Required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20upgrade:\x20\x27https://restforge.dev/pricing\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20400\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20aggregate\x20function\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20alias\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27only\x20allowed\x20with\x20COUNT\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20defined\x20in\x20aggregate\x20config\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27no\x20join\x20definitions\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20aggregating\x20'+_0x2e40a2+_0x4d6cf8(0x287);}function hasSoftDeleteFkRestrictChildren(_0x1f208f){const _0x9b6543=a0_0x44a2;return Array['isArray'](_0x1f208f['softDeleteFkChildren'])&&_0x1f208f['softDeleteFkChildren']['some'](_0x18d8b1=>_0x18d8b1&&_0x18d8b1[_0x9b6543(0x212)]==='restrict');}function hasCascadeChildren(_0x4502d2){const _0x5f69e3=a0_0x44a2,_0x522150={'vELaD':function(_0x1ff03a,_0x36f0c4){return _0x1ff03a===_0x36f0c4;},'wWyoF':_0x5f69e3(0x22e),'ocGmX':function(_0x489418,_0x2bb4be){return _0x489418===_0x2bb4be;},'dghaV':function(_0x22e59c,_0x4db845){return _0x22e59c===_0x4db845;}},_0xaef21c=_0x4502d2&&_0x4502d2['softDeleteCascadeTree'];return!!(_0xaef21c&&_0x522150['vELaD'](typeof _0xaef21c,_0x522150['wWyoF'])&&_0x522150['ocGmX'](typeof _0xaef21c[_0x5f69e3(0x1df)],_0x5f69e3(0x1c1))&&_0xaef21c[_0x5f69e3(0x1df)]&&_0xaef21c[_0x5f69e3(0x360)]&&_0x522150[_0x5f69e3(0x1ed)](typeof _0xaef21c[_0x5f69e3(0x360)],_0x5f69e3(0x22e))&&_0xaef21c[_0x5f69e3(0x360)][_0xaef21c[_0x5f69e3(0x1df)]]);}function generateDeleteFunction(_0x1757ba,_0x136ff3,_0x478f63,_0x597627=null,_0x1443d0=![]){const _0x2b405c=a0_0x44a2;if(!_0x597627){const _0x4e4d1c=FileUtils[_0x2b405c(0x30c)](_0x136ff3);_0x597627=_0x4e4d1c+'Model';}const _0x16ffdb=_0x1443d0?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20DELETE\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabledDelete\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabledDelete\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.delete)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishDelete(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x1757ba+_0x2b405c(0x257)+_0x136ff3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x478f63['primaryKey']||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x478f63[_0x2b405c(0x2b1)]+_0x2b405c(0x31d):'',_0x1fb240=_0x1443d0?_0x2b405c(0x1c9):'\x0a\x20\x20\x20\x20//\x20Get\x20correlation\x20ID\x20from\x20header\x20(optional)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20null;\x0a';return'\x0a//\x20POST\x20/api/'+_0x1757ba+'/'+_0x136ff3+_0x2b405c(0x3a9)+_0x136ff3+_0x2b405c(0x220)+_0x136ff3+_0x2b405c(0x281)+_0x1fb240+_0x2b405c(0x395)+_0x597627+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[{\x20key:\x20firstCondition.key,\x20value:\x20firstCondition.value\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!existingData.success\x20||\x20!existingData.data\x20||\x20existingData.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x136ff3+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Simpan\x20data\x20untuk\x20event\x20lifecycle\x20dan\x20debug\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData\x20=\x20existingData.data[0];\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(checkError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Verification\x20Failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Could\x20not\x20verify\x20data\x20existence\x20before\x20delete\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20checkError.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x478f63['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x597627+_0x2b405c(0x247)+_0x597627+_0x2b405c(0x2e1)+_0x136ff3+_0x2b405c(0x1bc)+_0x16ffdb+_0x2b405c(0x2dc)+_0x136ff3+_0x2b405c(0x1ea)+(_0x478f63['softDelete']?.['enabled']?'\x0a\x20\x20\x20\x20//\x20Soft-delete\x20(R14):\x20override\x20deleteData\x20melempar\x20statusCode\x20404\x20saat\x20tidak\x20ada\x20row\x0a\x20\x20\x20\x20//\x20aktif\x20yang\x20cocok\x20(tidak\x20ditemukan,\x20sudah\x20ter-soft-delete,\x20atau\x20kalah\x20race\x20FOR\x20UPDATE).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20404)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x136ff3+_0x2b405c(0x304):'')+(hasSoftDeleteFkRestrictChildren(_0x478f63)||hasCascadeChildren(_0x478f63)?_0x2b405c(0x2a7):'')+_0x2b405c(0x3b7)+_0x136ff3+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateRestoreFunction(_0x2f554f,_0x2dbf92,_0xe8e5ba,_0x427c2a=null){const _0x12ef0a=a0_0x44a2;if(!_0x427c2a){const _0x303d4e=FileUtils['toCamelCase'](_0x2dbf92);_0x427c2a=_0x303d4e+_0x12ef0a(0x36f);}return'\x0a//\x20POST\x20/api/'+_0x2f554f+'/'+_0x2dbf92+'/restore\x20-\x20Memulihkan\x20data\x20'+_0x2dbf92+_0x12ef0a(0x2cb)+_0xe8e5ba[_0x12ef0a(0x2b1)]+_0x12ef0a(0x1ba)+_0x427c2a+_0x12ef0a(0x38e)+_0x2dbf92+_0x12ef0a(0x229)+_0x2dbf92+_0x12ef0a(0x271)+_0x2dbf92+'\x20data\x20not\x20found\x20or\x20not\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20409)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20Backstop\x20konflik:\x20UNIQUE\x20violation\x20saat\x20UPDATE\x20(race\x20konkuren)\x20→\x20409.\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Cannot\x20restore:\x20the\x20reusable\x20code\x20is\x20already\x20in\x20use\x20by\x20an\x20active\x20record\x20(unique\x20constraint)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20restoring\x20'+_0x2dbf92+_0x12ef0a(0x287);}function generateFirstFunction(_0x294e08,_0x5c6f8b,_0x3cac10,_0xc9279a,_0x1b9ce6,_0x2b47ce=null){const _0x588172=a0_0x44a2,_0x1d1c82={'nrqgU':function(_0x14d153,_0x22e7da){return _0x14d153!==_0x22e7da;}};if(!_0x2b47ce){const _0x53e3a7=FileUtils[_0x588172(0x30c)](_0x5c6f8b);_0x2b47ce=_0x53e3a7+_0x588172(0x36f);}const _0x3e9064=_0x3cac10[_0x588172(0x292)]?_0x588172(0x22d)+_0x5c6f8b+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x3a94a1=softDeleteVisibilityFilter(_0x3cac10),_0x4eca96=_0x1d1c82['nrqgU'](_0x3a94a1,null)?_0x588172(0x340)+IS_DELETED_COLUMN+_0x588172(0x29b)+_0x3a94a1+_0x588172(0x283):'',_0x1e8b90=_0x1d1c82['nrqgU'](_0x3a94a1,null)?_0x588172(0x308)+_0x5c6f8b+_0x588172(0x20c):'';return _0x588172(0x344)+_0x294e08+'/'+_0x5c6f8b+_0x588172(0x332)+_0x5c6f8b+_0x588172(0x209)+_0x5c6f8b+'/first:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20->\x20object\x20(backward\x20compatible)\x0a\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x20-\x20harus\x20object\x20tunggal\x20{key,\x20value}\x0a\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x20as\x20{key,\x20value}\x20object\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+(_0x3cac10['primaryKey']||'id')+_0x588172(0x21a)+(_0x3cac10[_0x588172(0x282)]||'id')+_0x588172(0x1e0)+JSON[_0x588172(0x351)](_0x3cac10[_0x588172(0x2a2)]||[])+';\x0a\x20\x20\x20\x20if\x20(!validFields.includes(req.body.where.key))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${req.body.where.key}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20validFields:\x20validFields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20select\x20fields\x20jika\x20ada\x0a\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20req.body.select.filter(field\x20=>\x20!validFields.includes(field));\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20validFields:\x20validFields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Convert\x20ke\x20array\x20format\x20untuk\x20kompatibilitas\x20dengan\x20model.getData()\x20->\x20buildComplexWhereClause()\x0a\x20\x20\x20\x20const\x20getPayload\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20where:\x20[{\x20key:\x20req.body.where.key,\x20value:\x20req.body.where.value\x20}],\x0a\x20\x20\x20\x20\x20\x20select:\x20req.body.select\x0a\x20\x20\x20\x20};'+_0x4eca96+'\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x2b47ce+'.getData(getPayload);'+_0x1e8b90+'\x0a'+_0x3e9064+'\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27\x20&&\x20result.success)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x5c6f8b+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20resultCount:\x20result.data\x20?\x20result.data.length\x20:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mendapatkan\x20data\x20'+_0x5c6f8b+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x5c6f8b+_0x588172(0x287);}function generateLookupFunction(_0x1e5d89,_0x3f6995,_0x27fdc6,_0x33d1ee,_0xb65163,_0x1a505e=null){const _0x46e059=a0_0x44a2,_0x5b0810={'uspZf':_0x46e059(0x29e),'GMfVC':_0x46e059(0x39c)};if(!_0x1a505e){const _0x454c42=FileUtils[_0x46e059(0x30c)](_0x3f6995);_0x1a505e=_0x454c42+_0x46e059(0x36f);}const _0x48ecc5=_0x27fdc6[_0x46e059(0x21f)]||null;return'\x0a//\x20GET\x20/api/'+_0x1e5d89+'/'+_0x3f6995+'/lookup\x20-\x20Pencarian\x20'+_0x3f6995+_0x46e059(0x34f)+_0x3f6995+'\x20lookup\x20request:\x20search=${search},\x20filters=`,\x20extraFilters);\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20lookup\x20data\x20dengan\x20filters\x20tambahan\x0a\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1a505e+_0x46e059(0x1de)+_0x3f6995+'\x20lookup:\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20looking\x20up\x20'+_0x3f6995+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a//\x20POST\x20/api/'+_0x1e5d89+'/'+_0x3f6995+'/lookup\x20-\x20Mendapatkan\x20data\x20'+_0x3f6995+_0x46e059(0x316)+JSON[_0x46e059(0x351)](_0x48ecc5)+';\x0a\x20\x20\x20\x20\x20\x20const\x20defaultSelect\x20=\x20lookupConfig\x20&&\x20lookupConfig.hasCustomText\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20[\x22id\x22,\x20lookupConfig.textField]\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20[\x22id\x22,\x20\x22'+_0xb65163+'\x22];\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22selected_tag\x22:\x20\x22optional-id-if-needed\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+(_0x33d1ee[_0x46e059(0x223)]?_0x33d1ee['all'][_0x46e059(0x2b6)](_0x1a8f6d=>_0x1a8f6d!=='id')||_0x5b0810[_0x46e059(0x228)]:'code')+_0x46e059(0x2fa)+_0xb65163+'||\x27\x20-\x20\x27||code\x20as\x20display_text\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_custom_lookup:\x20lookupConfig\x20?\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22company_id\x22,\x20\x22value\x22:\x20\x22your-company-id\x22\x20}],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[lookupConfig.idField,\x20lookupConfig.textField],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22note\x22:\x20\x22Using\x20fieldNameLookup\x20configuration\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20:\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_advanced:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22logic\x22:\x20\x22OR\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22conditions\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0xb65163+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%Portal%\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0xb65163+_0x46e059(0x291)+(_0x33d1ee[_0x46e059(0x3a7)]?_0x33d1ee[_0x46e059(0x3a7)][_0x46e059(0x20d)](0x0,0x4)[_0x46e059(0x2ca)](_0x5b0810['GMfVC']):_0x27fdc6['fieldName']['slice'](0x0,0x4)['join'](_0x5b0810['GMfVC']))+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_with_ordering:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0xb65163+'\x22],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22sort_columns\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22column\x22:\x20\x22'+(_0x27fdc6[_0x46e059(0x2a2)][0x1]||_0xb65163)+_0x46e059(0x1c4)+_0xb65163+_0x46e059(0x1f8)+_0x3f6995+_0x46e059(0x296)+(_0x33d1ee['all']?_0x33d1ee['all'][_0x46e059(0x2b6)](_0x137e3d=>_0x137e3d!=='id')||_0x5b0810['uspZf']:_0x5b0810[_0x46e059(0x228)])+_0x46e059(0x333)+_0xb65163+_0x46e059(0x2e2)+_0xb65163+_0x46e059(0x361)+_0xb65163+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%system%\x22,\x20\x22sensitive\x22:\x20false\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+(_0x33d1ee['textFields']?_0x33d1ee['textFields']['slice'](0x0,0x4)[_0x46e059(0x2ca)]('\x22,\x20\x22'):_0x27fdc6[_0x46e059(0x2a2)][_0x46e059(0x20d)](0x0,0x4)[_0x46e059(0x2ca)](_0x5b0810[_0x46e059(0x2f3)]))+_0x46e059(0x201)+JSON[_0x46e059(0x351)](_0x27fdc6['fieldName']||[])+_0x46e059(0x2f6)+_0x1a505e+'.getLookupDataWithFilter(req.body);\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Lookup\x20with\x20filter\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20lama\x20atau\x20request\x20tanpa\x20WHERE\x20clause\x20tetapi\x20dengan\x20SELECT\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20legacy\x20format\x20with\x20selected_tag\x20or\x20select-only\x20request\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20selectedTag\x20=\x20req.body.selected_tag\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(`'+_0x3f6995+'\x20static\x20lookup\x20request\x20with\x20selected_tag:\x20${selectedTag}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Jika\x20ada\x20field\x20select\x20atau\x20sort_columns,\x20gunakan\x20getLookupDataWithFilter\x20dengan\x20body\x20yang\x20dimodifikasi\x0a\x20\x20\x20\x20\x20\x20if\x20((req.body.select\x20&&\x20Array.isArray(req.body.select))\x20||\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Found\x20select\x20fields\x20or\x20sort_columns,\x20using\x20getLookupDataWithFilter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Buat\x20body\x20baru\x20dengan\x20where\x20kosong\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20modifiedBody\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[]\x20//\x20Empty\x20where\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1a505e+'.getLookupDataWithFilter(modifiedBody);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Static\x20lookup\x20with\x20select/order\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectedTag:\x20selectedTag,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20query:\x20modifiedBody,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20dengan\x20method\x20lama\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x1a505e+_0x46e059(0x322)+_0x3f6995+_0x46e059(0x30d)+_0x3f6995+_0x46e059(0x287);}function generateReadFunction(_0x4e0bf7,_0x135063,_0x714535,_0x5ae372=null){const _0x37e714=a0_0x44a2;if(!_0x5ae372){const _0x557280=FileUtils['toCamelCase'](_0x135063);_0x5ae372=_0x557280+'Model';}return _0x37e714(0x344)+_0x4e0bf7+'/'+_0x135063+'/read\x20-\x20Manual\x20pagination\x20endpoint\x0arouter.post(\x27/read\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x135063+'/read:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Deteksi\x20mode:\x20paginasi\x20(page\x20dikirim)\x20atau\x20non-paginasi\x20(page\x20tidak\x20dikirim)\x0a\x20\x20\x20\x20const\x20paginate\x20=\x20req.body.page\x20!==\x20undefined;\x0a\x20\x20\x20\x20const\x20page\x20=\x20paginate\x20?\x20parseInt(req.body.page,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20perPage\x20=\x20paginate\x20?\x20parseInt(req.body.per_page\x20||\x2010,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20limit\x20=\x20!paginate\x20?\x20Math.min(Math.max(parseInt(req.body.limit\x20||\x201000,\x2010),\x201),\x205000)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20searchValue\x20=\x20req.body.search_value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20const\x20searchBy\x20=\x20req.body.search_by\x20||\x20\x27'+(_0x714535['primaryKey']||_0x714535[_0x37e714(0x2a2)][0x0]||'id')+_0x37e714(0x238)+JSON['stringify'](_0x714535[_0x37e714(0x2a2)]||[])+';\x0a\x20\x20\x20\x20let\x20select\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20req.body.select.filter(field\x20=>\x20!validFields.includes(field));\x0a\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20validFields:\x20validFields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20select\x20=\x20req.body.select;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20parameter\x20paginasi\x20(hanya\x20jika\x20mode\x20paginasi)\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(page\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20page:\x20[\x27Page\x20must\x20be\x20greater\x20than\x200\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(perPage\x20<\x201\x20||\x20perPage\x20>\x20100)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20[\x27Per\x20page\x20must\x20be\x20between\x201\x20and\x20100\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(searchValue.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_value:\x20[\x27Search\x20value\x20must\x20not\x20exceed\x20255\x20characters\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20kolom\x20searching\x0a\x20\x20\x20\x20if\x20(!validFields.includes(searchBy))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_by:\x20[`Invalid\x20search\x20field.\x20Valid\x20fields:\x20${validFields.join(\x27,\x20\x27)}`]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20options\x20untuk\x20model\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20searchValue,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20searchBy,\x0a\x20\x20\x20\x20\x20\x20sort_columns:\x20sort_columns,\x0a\x20\x20\x20\x20\x20\x20where:\x20where,\x0a\x20\x20\x20\x20\x20\x20select:\x20select\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20options.page\x20=\x20page;\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x20perPage;\x0a\x20\x20\x20\x20\x20\x20options.offset\x20=\x20(page\x20-\x201)\x20*\x20perPage;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20options.limit\x20=\x20limit;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20list\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x5ae372+_0x37e714(0x1dd)+_0x135063+_0x37e714(0x2aa)+_0x135063+_0x37e714(0x3b8);}function generateCreateCompositeFunction(_0xfd38f4,_0x478c56,_0x5526df,_0x209fbf=null){const _0x585e40=a0_0x44a2,_0x5054b6={'zxxvF':_0x585e40(0x366),'NafYf':_0x585e40(0x27a),'FArbh':_0x585e40(0x34c)};if(!_0x209fbf){const _0x356127=FileUtils[_0x585e40(0x30c)](_0x478c56);_0x209fbf=_0x356127+_0x585e40(0x36f);}const _0x42eefd=_0x5526df['masterDetail']&&_0x5526df[_0x585e40(0x2bd)]['enabled'],_0x58f371=_0x42eefd?_0x5526df['masterDetail']['detailTable']:null,_0x510d52=_0x58f371?_0x58f371['split']('.')[_0x585e40(0x315)]():_0x585e40(0x29c),_0x3ec4d8=_0x478c56['replace'](/-/g,'_'),_0x38cb37=_0x5526df['masterDetail']?.[_0x585e40(0x1ef)]?.['autoCalculateFields']?.['total_amount']?.[_0x585e40(0x2e3)]||'',_0x1da4f9=_0x38cb37[_0x585e40(0x36d)]('*')[_0x585e40(0x1db)](_0x2d90b8=>_0x2d90b8['trim']()),_0x9a9915=_0x5526df[_0x585e40(0x2bd)]?.['headerCalculations']?.['total_qty']?.['source']?.[_0x585e40(0x318)](_0x5054b6[_0x585e40(0x38d)],'')||'',_0x4831af=_0x1da4f9[0x0]||_0x9a9915,_0x55851d=_0x1da4f9[0x1]||_0x5054b6[_0x585e40(0x354)];return _0x585e40(0x344)+_0xfd38f4+'/'+_0x478c56+'/create-composite\x20-\x20Composite\x20create\x20'+(_0x42eefd?'(master-detail\x20transaction)':'')+_0x585e40(0x21b)+_0x478c56+'/create-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x20structure\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x3ec4d8+_0x585e40(0x280)+_0x3ec4d8+_0x585e40(0x21e)+(_0x42eefd?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x3ec4d8+_0x585e40(0x1dc)+_0x510d52+_0x585e40(0x269):'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x3ec4d8+_0x585e40(0x26e))+_0x585e40(0x3ae)+_0x3ec4d8+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x209fbf+_0x585e40(0x2ea)+(_0x42eefd?_0x585e40(0x3aa)+_0x510d52+';':'')+_0x585e40(0x347)+_0x209fbf+_0x585e40(0x24e)+(_0x42eefd?_0x585e40(0x2d2)+_0x510d52+_0x585e40(0x1fd)+_0x510d52+')\x20||\x20data.'+_0x510d52+_0x585e40(0x217)+_0x510d52+'\x22\x20must\x20be\x20a\x20non-empty\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Auto-calculate\x20totals\x20jika\x20ada\x20konfigurasi\x0a\x20\x20\x20\x20'+(_0x5526df[_0x585e40(0x2bd)]['headerCalculations']?_0x585e40(0x26b)+JSON['stringify'](_0x5526df[_0x585e40(0x2bd)][_0x585e40(0x27d)])+';\x0a\x20\x20\x20\x20if\x20(headerCalc.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20data.total_items\x20=\x20data.'+_0x510d52+'.length;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(headerCalc.total_qty\x20&&\x20headerCalc.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20headerCalc.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20data.total_qty\x20=\x20data.'+_0x510d52+_0x585e40(0x371)+(_0x4831af?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Calculate\x20total_amount\x20as\x20sum\x20of\x20('+_0x4831af+'\x20*\x20'+_0x55851d+')\x20from\x20all\x20items\x0a\x20\x20\x20\x20\x20\x20data.total_amount\x20=\x20data.'+_0x510d52+'.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x4831af+_0x585e40(0x31a)+_0x55851d+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20}':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured\x20(set\x20autoCalculateFields.total_amount.formula\x20or\x20headerCalculations.total_qty.source)')+'\x0a\x20\x20\x20\x20':'')+'\x0a\x0a\x20\x20\x20\x20console.log(\x27Calculated\x20totals:\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20total_items:\x20data.total_items,\x0a\x20\x20\x20\x20\x20\x20total_qty:\x20data.total_qty,\x0a\x20\x20\x20\x20\x20\x20total_amount:\x20data.total_amount\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20':'')+_0x585e40(0x2f9)+_0x5526df[_0x585e40(0x2b1)]+_0x585e40(0x295)+_0x58f371+_0x585e40(0x334)+(_0x42eefd?_0x5526df[_0x585e40(0x2bd)][_0x585e40(0x32a)]:'')+_0x585e40(0x248)+_0x209fbf+_0x585e40(0x1f5)+_0x478c56+'\x20composite\x20create\x20successful`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x478c56+_0x585e40(0x2fc)+(_0x42eefd?_0x5054b6['FArbh']:'')+_0x585e40(0x2bc)+_0x478c56+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20creating\x20'+_0x478c56+_0x585e40(0x287);}function generateUpdateCompositeFunction(_0x14094f,_0x2be7a6,_0x630eeb,_0x2c0a28=null){const _0x2b8598=a0_0x44a2;if(!_0x2c0a28){const _0x26bcda=FileUtils[_0x2b8598(0x30c)](_0x2be7a6);_0x2c0a28=_0x26bcda+_0x2b8598(0x36f);}const _0x43d0b4=_0x630eeb['masterDetail']&&_0x630eeb[_0x2b8598(0x2bd)]['enabled'],_0x1a9676=_0x43d0b4?_0x630eeb['masterDetail'][_0x2b8598(0x232)]:null,_0x5cc09b=_0x1a9676?_0x1a9676[_0x2b8598(0x36d)]('.')['pop']():_0x2b8598(0x29c),_0x3ceaae=_0x2be7a6[_0x2b8598(0x318)](/-/g,'_'),_0x1de858=_0x630eeb[_0x2b8598(0x282)]||'id',_0x4e5d04=_0x630eeb['requestScope']?_0x2b8598(0x1be)+_0x2c0a28+_0x2b8598(0x227)+_0x1de858+'\x27,\x20value:\x20data.'+_0x1de858+'\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Master\x20record\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return _0x2b8598(0x344)+_0x14094f+'/'+_0x2be7a6+'/update-composite\x20-\x20Composite\x20update\x20'+(_0x43d0b4?'(master-detail\x20transaction)':'')+'\x0arouter.post(\x27/update-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x2be7a6+_0x2b8598(0x272)+_0x3ceaae+_0x2b8598(0x280)+_0x3ceaae+_0x2b8598(0x21e)+(_0x43d0b4?_0x2b8598(0x25c)+_0x3ceaae+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x1de858+_0x2b8598(0x208)+_0x5cc09b+'\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x201,\x20\x22field\x22:\x20\x22value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x202,\x20\x22field\x22:\x20\x22value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}':'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x3ceaae+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x1de858+'\x22:\x20\x22existing-id\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}')+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20req.body.'+_0x3ceaae+_0x2b8598(0x284)+_0x1de858+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Primary\x20key\x20('+_0x1de858+')\x20is\x20required\x20for\x20update\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x4e5d04+'\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x2c0a28+_0x2b8598(0x30f)+(_0x43d0b4?'delete\x20headerDataForValidation.'+_0x5cc09b+';':'')+_0x2b8598(0x347)+_0x2c0a28+'.validateData(headerDataForValidation,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Merge\x20sanitized\x20data\x20(termasuk\x20hash\x20result)\x20kembali\x20ke\x20data\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20'+(_0x43d0b4?_0x2b8598(0x320)+_0x5cc09b+_0x2b8598(0x365)+_0x5cc09b+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x5cc09b+_0x2b8598(0x249)+_0x5cc09b+_0x2b8598(0x378)+_0x5cc09b+_0x2b8598(0x3ad)+_0x5cc09b+'.insert\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.update\x20&&\x20!Array.isArray(operations.update))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x5cc09b+'.update\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.delete\x20&&\x20!Array.isArray(operations.delete))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x5cc09b+'.delete\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20TIDAK\x20melakukan\x20auto-calculation\x20di\x20endpoint\x0a\x20\x20\x20\x20\x20\x20//\x20Calculation\x20akan\x20dilakukan\x20di\x20Model\x20setelah\x20semua\x20operasi\x20database\x20selesai\x0a\x20\x20\x20\x20\x20\x20//\x20Model\x20akan\x20SELECT\x20ulang\x20semua\x20items\x20dan\x20hitung\x20total\x20dari\x20hasil\x20akhir\x0a\x20\x20\x20\x20\x20\x20console.log(\x27CompositeUpdate\x20operations:\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20delete_count:\x20(operations.delete\x20||\x20[]).length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20update_count:\x20(operations.update\x20||\x20[]).length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20insert_count:\x20(operations.insert\x20||\x20[]).length\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20':'')+_0x2b8598(0x2f9)+_0x630eeb['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x1a9676+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x43d0b4?_0x630eeb['masterDetail']['foreignKey']:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20composite\x20update\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x2c0a28+_0x2b8598(0x2c6)+_0x2be7a6+_0x2b8598(0x285)+_0x1de858+_0x2b8598(0x384)+_0x1de858+'}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x2be7a6+'\x20data\x20successfully\x20updated'+(_0x43d0b4?'\x20(with\x20detail\x20items)':'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20update\x20'+_0x2be7a6+_0x2b8598(0x2a5)+_0x2be7a6+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20updating\x20'+_0x2be7a6+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateReadCompositeFunction(_0x581c39,_0x25e22c,_0x26658c,_0x1753d8=null){const _0x4858f9=a0_0x44a2;if(!_0x1753d8){const _0x30ff24=FileUtils['toCamelCase'](_0x25e22c);_0x1753d8=_0x30ff24+_0x4858f9(0x36f);}const _0x4e096d=JSON[_0x4858f9(0x351)](_0x26658c[_0x4858f9(0x2a2)]||[]);return'\x0a//\x20POST\x20/api/'+_0x581c39+'/'+_0x25e22c+_0x4858f9(0x325)+_0x25e22c+'/read-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+(_0x26658c[_0x4858f9(0x282)]||'id')+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20readComposite\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x1753d8+'.readComposite(req.body);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x25e22c+_0x4858f9(0x2cf)+_0x25e22c+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20reading\x20'+_0x25e22c+_0x4858f9(0x260);}function generateWorkflowFunction(_0x2a16c5,_0x18409a,_0x120bad,_0x5dea47=null){const _0x424222=a0_0x44a2;if(!_0x5dea47){const _0x21f429=FileUtils['toCamelCase'](_0x18409a);_0x5dea47=_0x21f429+_0x424222(0x36f);}const _0x569169=_0x120bad[_0x424222(0x1e7)]?JSON[_0x424222(0x351)](_0x120bad['workflow']):'{}',_0x4d2096=_0x120bad[_0x424222(0x292)]?_0x424222(0x24c)+_0x5dea47+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20recordId\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x18409a+_0x424222(0x2ab):'';return'\x0a//\x20POST\x20/api/'+_0x2a16c5+'/'+_0x18409a+_0x424222(0x321)+_0x18409a+_0x424222(0x241)+(_0x120bad['primaryKey']||'id')+'\x27;\x0a\x20\x20\x20\x20const\x20recordId\x20=\x20req.body[primaryKey]\x20||\x20req.body.id;\x0a\x20\x20\x20\x20if\x20(!recordId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20or\x20id\x20is\x20required\x20for\x20change-status`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.status)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27status\x20is\x20required\x20for\x20change-status\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x4d2096+_0x424222(0x2a9)+_0x569169+';\x0a\x20\x20\x20\x20workflowConfig._project\x20=\x20\x27'+_0x2a16c5+_0x424222(0x33e)+_0x120bad[_0x424222(0x2b1)]+_0x424222(0x39a)+_0x5dea47+'.changeStatusData(req.body,\x20workflowConfig,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20component\x20engine\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x5dea47+_0x424222(0x314)+_0x18409a+_0x424222(0x37e)+_0x18409a+_0x424222(0x1f2)+_0x18409a+_0x424222(0x30e);}function createPostgresSubmoduleTemplate(_0x459520,_0xa61ed4,_0x698626){const _0x20e446=a0_0x44a2,_0x19562={'fmiaQ':function(_0x29d10b,_0x7f3b01){return _0x29d10b===_0x7f3b01;},'BiJKi':function(_0x228c99,_0x567859,_0x5a32da,_0x2ea13c,_0xa057da,_0x2384b1,_0x574109,_0x38a41f){return _0x228c99(_0x567859,_0x5a32da,_0x2ea13c,_0xa057da,_0x2384b1,_0x574109,_0x38a41f);},'eWCuW':'null','cisah':_0x20e446(0x379),'HKYRX':function(_0x5a6d60,_0x20abc6,_0x1b1699){return _0x5a6d60(_0x20abc6,_0x1b1699);},'OZHeb':function(_0x4c0c90,_0x106bd7){return _0x4c0c90!==_0x106bd7;},'hetQC':'//\x20Endpoint\x20/info\x20dinonaktifkan\x20via\x20action.info\x20=\x20false'},_0xd0799a=FileUtils['toPascalCase'](_0xa61ed4),_0x254b86=new Date()['toISOString']()['replace']('T','\x20')[_0x20e446(0x318)](/\.\d{3}Z$/,''),_0x54fed0=_0x698626['_extendedFields']||{'all':_0x698626[_0x20e446(0x2a2)]||[]},_0x4c33d1=FileUtils[_0x20e446(0x23c)](_0x698626[_0x20e446(0x2a2)]||[]),_0x2403d8=FileUtils['toCamelCase'](_0xa61ed4),_0x9e38a4=_0x2403d8+'Model',_0x4d8bb4=_0x698626[_0x20e446(0x235)]&&_0x19562[_0x20e446(0x27e)](_0x698626[_0x20e446(0x235)]['enabled'],!![]),_0x58a855=_0x19562['BiJKi'](buildEndpointFunctions,_0x459520,_0xa61ed4,_0x698626,_0x54fed0,_0x4c33d1,_0x9e38a4,_0x4d8bb4),_0x49605c=_0x4d8bb4?'\x0a//\x20Kafka\x20Producer\x20Service\x20untuk\x20event\x20publishing\x0alet\x20kafkaService\x20=\x20null;\x0atry\x20{\x0a\x20\x20kafkaService\x20=\x20require(\x27@restforgejs/platform/src/services/kafkaService\x27).getInstance();\x0a}\x20catch\x20(e)\x20{\x0a\x20\x20console.error(\x27CRITICAL:\x20Kafka\x20service\x20failed\x20to\x20load\x20but\x20Kafka\x20publishing\x20is\x20configured:\x27,\x20e.message);\x0a\x20\x20throw\x20e;\x0a}\x0a\x0a//\x20Kafka\x20configuration\x20dari\x20payload\x0aconst\x20kafkaConfig\x20=\x20'+JSON['stringify'](_0x698626[_0x20e446(0x235)]||{'enabled':![]})+';\x0a':'';return _0x20e446(0x251)+_0x9e38a4+_0x20e446(0x2e0)+_0x459520+'/'+_0xa61ed4+_0x20e446(0x35a)+_0x49605c+_0x20e446(0x2e6)+JSON['stringify'](_0x698626[_0x20e446(0x36c)])+'\x20&&\x20Array.isArray('+JSON[_0x20e446(0x351)](_0x698626[_0x20e446(0x36c)])+_0x20e446(0x246)+JSON[_0x20e446(0x351)](_0x698626['components'])+'.length\x20>\x200;\x0a\x0a\x20\x20if\x20(hasComponents)\x20{\x0a\x20\x20\x20\x20componentEngine\x20=\x20require(\x27@restforgejs/platform/src/utils/component-engine\x27).componentEngine;\x0a\x20\x20\x20\x20ContextBuilder\x20=\x20require(\x27@restforgejs/platform/src/utils/context-builder\x27);\x0a\x0a\x20\x20\x20\x20//\x20Load\x20component\x20configuration\x20dari\x20payload\x20yang\x20sedang\x20digunakan\x0a\x20\x20\x20\x20const\x20componentConfig\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x698626['tableName']+_0x20e446(0x374)+JSON[_0x20e446(0x351)](_0x698626[_0x20e446(0x2a2)])+_0x20e446(0x2c0)+(_0x698626[_0x20e446(0x36a)]?'\x27'+_0x698626[_0x20e446(0x36a)]+'\x27':'null')+',\x0a\x20\x20\x20\x20\x20\x20columnFormats:\x20'+(_0x698626[_0x20e446(0x1d3)]?JSON[_0x20e446(0x351)](_0x698626['columnFormats']):_0x20e446(0x2b9))+',\x0a\x20\x20\x20\x20\x20\x20fieldLabels:\x20'+(_0x698626['fieldLabels']?JSON[_0x20e446(0x351)](_0x698626[_0x20e446(0x261)]):_0x19562['eWCuW'])+',\x0a\x20\x20\x20\x20\x20\x20components:\x20'+JSON['stringify'](_0x698626[_0x20e446(0x36c)])+',\x0a\x20\x20\x20\x20\x20\x20importConfig:\x20'+(_0x698626[_0x20e446(0x389)]?JSON[_0x20e446(0x351)](_0x698626['importConfig']):'null')+',\x0a\x20\x20\x20\x20\x20\x20adjustConfig:\x20'+(_0x698626[_0x20e446(0x1c6)]?JSON['stringify'](_0x698626[_0x20e446(0x1c6)]):_0x19562[_0x20e446(0x311)])+',\x0a\x20\x20\x20\x20\x20\x20workflowConfig:\x20'+(_0x698626[_0x20e446(0x1e7)]?JSON[_0x20e446(0x351)](_0x698626[_0x20e446(0x1e7)]):_0x19562['eWCuW'])+',\x0a\x20\x20\x20\x20\x20\x20uploadConfig:\x20'+(_0x698626[_0x20e446(0x27f)]?JSON[_0x20e446(0x351)](_0x698626['uploadConfig']):'null')+',\x0a\x20\x20\x20\x20\x20\x20requestScope:\x20'+(_0x698626[_0x20e446(0x292)]?JSON['stringify'](_0x698626[_0x20e446(0x292)]):_0x19562['eWCuW'])+_0x20e446(0x31f)+_0x459520+'/'+_0xa61ed4+':\x20${result.componentsLoaded}\x20components`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}).catch(err\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Failed\x20to\x20load\x20component\x20configuration\x20for\x20'+_0x459520+'/'+_0xa61ed4+':`,\x20err.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a}\x20catch\x20(e)\x20{\x0a\x20\x20if\x20(hasComponents)\x20{\x0a\x20\x20\x20\x20//\x20Components\x20dikonfigurasi\x20tapi\x20engine\x20gagal\x20load\x20—\x20ini\x20error,\x20bukan\x20optional\x0a\x20\x20\x20\x20console.error(`CRITICAL:\x20Component\x20engine\x20failed\x20to\x20load\x20for\x20'+_0x459520+'/'+_0xa61ed4+_0x20e446(0x1da)+_0x459520+'/'+_0xa61ed4+_0x20e446(0x1ec)+_0xd0799a+'\x20Submodule\x20-\x20Auto-generated\x20on\x20'+_0x254b86+_0x20e446(0x327)+_0xa61ed4+'\x20dengan\x20actions:\x20'+getEnabledActions(_0x698626)[_0x20e446(0x2ca)](',\x20')+_0x20e446(0x2b2)+_0x698626['tableName']+_0x20e446(0x2eb)+(_0x698626['fieldName']?_0x698626[_0x20e446(0x2a2)][_0x20e446(0x33a)]:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0a\x0a//\x20CORS\x20ditangani\x20di\x20level\x20app\x20oleh\x20cors\x20middleware\x20(lihat\x20konfigurasi\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x0a\x0a\x0a//\x20Middleware\x20untuk\x20validasi\x20payload\x20pada\x20metode\x20POST\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20===\x20\x27POST\x27)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20import\x20routes\x20(menggunakan\x20multipart/form-data,\x20bukan\x20JSON)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.path.startsWith(\x27/import-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20next();\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20umum\x20untuk\x20payload\x0a\x20\x20\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27/api/'+_0x459520+'/'+_0xa61ed4+_0x20e446(0x345)+(_0x698626['fieldValidation']?JSON['stringify'](_0x698626['fieldValidation']['filter'](_0xf2f463=>_0xf2f463[_0x20e446(0x27c)]&&_0xf2f463[_0x20e446(0x27c)][_0x20e446(0x210)])['map'](_0x228ca6=>_0x228ca6[_0x20e446(0x26d)])):'[]')+';\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20requiredFields\x20=\x20[\x27'+_0x698626['fieldName']['filter'](_0x41cedd=>_0x41cedd!=='id')['slice'](0x0,0x1)[_0x20e446(0x2ca)](_0x19562[_0x20e446(0x22f)])+_0x20e446(0x1d2)+(_0x698626['primaryKey']||'id')+_0x20e446(0x37a)+_0x19562['HKYRX'](buildRequestScopeMiddleware,_0x698626,_0xa61ed4)+buildSoftDeleteReadMiddleware(_0x698626)+'\x0a'+_0x58a855+'\x0a\x0a'+(_0x19562[_0x20e446(0x33d)](_0x698626['action']?.[_0x20e446(0x2a1)],![])?_0x20e446(0x359)+JSON['stringify']({'datatables':!!_0x698626['action']?.['datatables'],'read':!!_0x698626['action']?.[_0x20e446(0x1fa)],'first':!!_0x698626[_0x20e446(0x250)]?.['first'],'create':!!_0x698626[_0x20e446(0x250)]?.['create'],'update':!!_0x698626['action']?.['update'],'delete':!!_0x698626['action']?.[_0x20e446(0x290)],'lookup':!!_0x698626[_0x20e446(0x250)]?.['lookup'],'export':!!_0x698626['action']?.['export'],'import':!!_0x698626[_0x20e446(0x250)]?.['import'],'workflow':!!_0x698626[_0x20e446(0x250)]?.['workflow'],'info':_0x698626['action']?.[_0x20e446(0x2a1)]!==![]})+_0x20e446(0x1c8)+_0x9e38a4+_0x20e446(0x31b)+_0xa61ed4+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x459520+'\x27,\x0a\x20\x20\x20\x20\x20\x20table:\x20modelInfo.table,\x0a\x20\x20\x20\x20\x20\x20fields:\x20modelInfo.fields,\x0a\x20\x20\x20\x20\x20\x20querySources:\x20modelInfo.querySources,\x0a\x20\x20\x20\x20\x20\x20actions:\x20actions,\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27postgres\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x254b86+'\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0xa61ed4+_0x20e446(0x2fd):_0x19562['hetQC'])+_0x20e446(0x25a)+_0xa61ed4+'\x27,\x0a\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20});\x0a});\x0a\x0amodule.exports\x20=\x20router;';}function createPostgresMainModuleTemplate(_0x3e2274){const _0x1567a5=a0_0x44a2,_0x19d2f4=FileUtils['toPascalCase'](_0x3e2274),_0x2c0ac7=FileUtils['toCamelCase'](_0x3e2274),_0x30905a=new Date()['toISOString']()[_0x1567a5(0x318)]('T','\x20')['replace'](/\.\d{3}Z$/,'');return _0x1567a5(0x312)+_0x19d2f4+'\x20Module\x20-\x20Auto-generated\x20on\x20'+_0x30905a+_0x1567a5(0x255)+_0x3e2274+'\x0a\x20*\x20@param\x20{Object}\x20config\x20-\x20Konfigurasi\x20untuk\x20menjalankan\x20modul\x0a\x20*\x20@param\x20{number}\x20config.port\x20-\x20Port\x20untuk\x20server\x0a\x20*\x20@param\x20{string}\x20config.key\x20-\x20API\x20Key\x20(opsional)\x0a\x20*\x20@param\x20{boolean}\x20config.cors\x20-\x20Enable\x20CORS\x20(default:\x20true)\x0a\x20*\x20@param\x20{boolean}\x20config.logging\x20-\x20Enable\x20request\x20logging\x20(default:\x20true)\x0a\x20*\x20@returns\x20{Promise<void>}\x20Promise\x20yang\x20tidak\x20pernah\x20resolve\x20agar\x20server\x20tetap\x20berjalan\x0a\x20*/\x0aasync\x20function\x20execute(config)\x20{\x0a\x20\x20return\x20new\x20Promise((resolve,\x20reject)\x20=>\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20app\x20=\x20express();\x0a\x20\x20\x20\x20\x20\x20const\x20port\x20=\x20config.port\x20||\x203000;\x0a\x20\x20\x20\x20\x20\x20const\x20serverAddress\x20=\x20config.serverAddress\x20||\x20\x270.0.0.0\x27;\x20//\x20Default\x200.0.0.0\x20untuk\x20backward\x20compatibility\x0a\x20\x20\x20\x20\x20\x20const\x20moduleNameCapitalized\x20=\x20\x27'+_0x19d2f4+_0x1567a5(0x3af)+_0x3e2274+_0x1567a5(0x3a1)+_0x3e2274+_0x1567a5(0x2ef)+_0x3e2274+_0x1567a5(0x37d)+_0x3e2274+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Service\x20info\x20endpoint\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x3e2274+'/info\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x27'+_0x19d2f4+'\x20API\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x27Auto-generated\x20API\x20module\x20for\x20'+_0x3e2274+_0x1567a5(0x203)+_0x30905a+_0x1567a5(0x23f)+_0x3e2274+_0x1567a5(0x388)+_0x3e2274+_0x1567a5(0x337)+_0x3e2274+_0x1567a5(0x259)+_0x3e2274+'\x27,\x20endpointName,\x20exportConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(exportError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27export_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20exportError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Export\x20registration\x20failed\x20for\x20${endpointName}:\x20${exportError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20import\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20importConfig\x20=\x20extractImportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(importConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ImportHandler.registerRoutes(app,\x20\x27'+_0x3e2274+_0x1567a5(0x394)+_0x3e2274+'\x27,\x20endpointName,\x20uploadConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27upload_routes_registered\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fields:\x20Object.keys(uploadConfig.fields\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Upload\x20routes\x20registered\x20for\x20${endpointName}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(uploadError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27upload_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20uploadError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Upload\x20registration\x20failed\x20for\x20${endpointName}:\x20${uploadError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(endpointError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20loading\x20endpoint\x20${file}:`,\x20endpointError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Continue\x20loading\x20other\x20endpoints\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(dirError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20reading\x20modules\x20directory\x20${modulesDir}:`,\x20dirError.message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Register\x20cleanup\x20route\x20(optional\x20admin\x20endpoint)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ExportHandler.registerCleanupRoute(app);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(cleanupError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27cleanup_route_error\x27,\x20error:\x20cleanupError.message\x20},\x20\x27Export\x20cleanup\x20route\x20registration\x20failed\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20root\x20endpoint\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Access\x20to\x20the\x20requested\x20resource\x20is\x20forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Hook\x20untuk\x20mount\x20middleware\x20tambahan\x20sebelum\x20404\x20handler\x0a\x20\x20\x20\x20\x20\x20//\x20Digunakan\x20oleh\x20workbench\x20UI\x20dan\x20middleware\x20eksternal\x20lainnya\x0a\x20\x20\x20\x20\x20\x20if\x20(config.onAppReady\x20&&\x20typeof\x20config.onAppReady\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20config.onAppReady(app);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20404\x20handler\x20untuk\x20unknown\x20routes\x0a\x20\x20\x20\x20\x20\x20app.use((req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Access\x20to\x20the\x20requested\x20resource\x20is\x20forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Global\x20error\x20handling\x20middleware\x0a\x20\x20\x20\x20\x20\x20app.use((err,\x20req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Global\x20Error\x20Handler\x20-\x20${req.method}\x20${req.url}:`,\x20err);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20specific\x20error\x20types\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err\x20instanceof\x20SyntaxError\x20&&\x20err.status\x20===\x20400\x20&&\x20\x27body\x27\x20in\x20err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20JSON\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27The\x20payload\x20sent\x20is\x20not\x20a\x20valid\x20JSON\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20err.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20other\x20errors\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.headersSent)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20statusCode\x20=\x20err.statusCode\x20||\x20err.status\x20||\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20errorResponse\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20err.name\x20||\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20err.message\x20||\x20\x27An\x20error\x20occurred\x20on\x20the\x20server\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Add\x20stack\x20trace\x20in\x20development\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20!==\x20\x27production\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errorResponse.stack\x20=\x20err.stack;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(statusCode).json(errorResponse);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20next(err);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Start\x20server\x0a\x20\x20\x20\x20\x20\x20const\x20server\x20=\x20app.listen(port,\x20serverAddress,\x20(err)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Failed\x20to\x20start\x20${moduleNameCapitalized}\x20server:`,\x20err);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reject(err);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Determine\x20display\x20URL\x20based\x20on\x20serverAddress\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20displayHost\x20=\x20(serverAddress\x20===\x20\x270.0.0.0\x27\x20||\x20!serverAddress)\x20?\x20\x27localhost\x27\x20:\x20serverAddress;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20logServerReady({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20port,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x3e2274+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20healthCheck:\x20`http://${displayHost}:${port}/api/'+_0x3e2274+'/health`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20serviceInfo:\x20`http://${displayHost}:${port}/api/'+_0x3e2274+_0x1567a5(0x240)+_0x2c0ac7+'\x20=\x20{\x20execute\x20};\x0amodule.exports.moduleName\x20=\x20\x27'+_0x3e2274+'\x27;\x0amodule.exports.generated\x20=\x20\x27'+_0x30905a+'\x27;';}module['exports']={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|