@things-factory/worksheet-base 4.3.243 → 4.3.244

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.
Files changed (34) hide show
  1. package/dist-server/controllers/ecommerce/index.js +0 -1
  2. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  3. package/dist-server/controllers/outbound/packing-worksheet-controller.js +2 -2
  4. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  5. package/dist-server/controllers/outbound/picking-worksheet-controller.js +3 -3
  6. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  7. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js +21 -0
  8. package/dist-server/graphql/resolvers/worksheet/confirm-cancellation-release-order.js.map +1 -1
  9. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +3 -3
  10. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  11. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +2 -2
  12. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  13. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +2 -2
  14. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  15. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +2 -2
  16. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  17. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js +10 -8
  18. package/dist-server/graphql/resolvers/worksheet/putaway/complete-putaway.js.map +1 -1
  19. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js +12 -9
  20. package/dist-server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.js.map +1 -1
  21. package/package.json +5 -5
  22. package/server/controllers/ecommerce/index.ts +0 -1
  23. package/server/controllers/outbound/packing-worksheet-controller.ts +5 -4
  24. package/server/controllers/outbound/picking-worksheet-controller.ts +14 -8
  25. package/server/graphql/resolvers/worksheet/confirm-cancellation-release-order.ts +46 -13
  26. package/server/graphql/resolvers/worksheet/packing/packing.ts +4 -5
  27. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +5 -4
  28. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +5 -5
  29. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +5 -5
  30. package/server/graphql/resolvers/worksheet/putaway/complete-putaway.ts +10 -10
  31. package/server/graphql/resolvers/worksheet/putaway-return/complete-putaway-return.ts +11 -11
  32. package/dist-server/controllers/ecommerce/powrup-controller.js +0 -201
  33. package/dist-server/controllers/ecommerce/powrup-controller.js.map +0 -1
  34. package/server/controllers/ecommerce/powrup-controller.ts +0 -272
@@ -16,14 +16,15 @@ import {
16
16
  OrderInventory,
17
17
  OrderPackage,
18
18
  OrderProduct,
19
- ReleaseGood
19
+ ReleaseGood,
20
+ PowrupController
20
21
  } from '@things-factory/sales-base'
21
22
  import { PartnerSetting, Setting } from '@things-factory/setting-base'
22
23
  import { Domain } from '@things-factory/shell'
23
24
  import { Location } from '@things-factory/warehouse-base'
24
25
 
25
26
  import { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'
26
- import { PackingWorksheetController, SellercraftController, PowrupController } from '../../../controllers'
27
+ import { PackingWorksheetController, SellercraftController } from '../../../controllers'
27
28
  import { Worksheet } from '../../../entities'
28
29
 
29
30
  export const packingWorksheetResolver = {
@@ -413,12 +414,12 @@ async function getSellercraftDocument(sellercraft: Sellercraft, releaseGood: Rel
413
414
  //trigger RTS, init document, and fetch powrup document in separated transaction
414
415
  async function getPowrupDocument(powrup: Powrup, releaseGood: ReleaseGood, domain: Domain, user: User) {
415
416
  await getManager().transaction(async txMgr => {
416
- const powrupCtrl: PowrupController = new PowrupController(txMgr, domain, user)
417
+ const powrupCtrl: PowrupController = new PowrupController()
417
418
  try {
418
419
  if (!releaseGood?.airwayBill) {
419
420
  try {
420
421
  // try fetch order document / AWB
421
- releaseGood = await powrupCtrl.fetchDocument(powrup, releaseGood)
422
+ releaseGood = await powrupCtrl.fetchDocument(powrup, releaseGood, domain, user, txMgr)
422
423
  } catch (error) {
423
424
  try {
424
425
  // retry initiate order shipment / RTS
@@ -15,7 +15,8 @@ import {
15
15
  OrderNoGenerator,
16
16
  OrderPackage,
17
17
  OrderPackageItem,
18
- ReleaseGood
18
+ ReleaseGood,
19
+ PowrupController
19
20
  } from '@things-factory/sales-base'
20
21
  import { Setting } from '@things-factory/setting-base'
21
22
  import { Domain } from '@things-factory/shell'
@@ -25,8 +26,7 @@ import {
25
26
  PackingWorksheetController,
26
27
  PickingWorksheetController,
27
28
  SellercraftController,
28
- SortingWorksheetController,
29
- PowrupController
29
+ SortingWorksheetController
30
30
  } from '../../../../controllers/'
31
31
  import { EcommerceController } from '../../../../controllers/ecommerce'
32
32
  import { WorksheetController } from '../../../../controllers/worksheet-controller'
@@ -139,7 +139,7 @@ export async function completeBatchPicking(
139
139
  if (powrup) {
140
140
  const initPowrupShipment = async (powrup: Powrup, foundReleaseGood: ReleaseGood) => {
141
141
  await getManager().transaction(async txMgr => {
142
- const powrupCtrl: PowrupController = new PowrupController(txMgr, domain, user)
142
+ const powrupCtrl: PowrupController = new PowrupController()
143
143
 
144
144
  if (!foundReleaseGood?.orderPackages?.length && !foundReleaseGood?.marketPackCallSuccess) {
145
145
  await powrupCtrl.packOrder(powrup, foundReleaseGood)
@@ -150,7 +150,7 @@ export async function completeBatchPicking(
150
150
  })
151
151
 
152
152
  if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
153
- await powrupCtrl.initiateShipment(powrup, foundReleaseGood)
153
+ await powrupCtrl.initiateShipment(powrup, foundReleaseGood, domain, user, tx)
154
154
  }
155
155
  })
156
156
  }
@@ -25,7 +25,8 @@ import {
25
25
  OrderProduct,
26
26
  OrderVas,
27
27
  ReleaseGood,
28
- Replenishment
28
+ Replenishment,
29
+ PowrupController
29
30
  } from '@things-factory/sales-base'
30
31
  import { Setting } from '@things-factory/setting-base'
31
32
  import { Domain } from '@things-factory/shell'
@@ -37,8 +38,7 @@ import {
37
38
  PackingWorksheetController,
38
39
  PickingWorksheetController,
39
40
  ReplenishmentWorksheetController,
40
- SellercraftController,
41
- PowrupController
41
+ SellercraftController
42
42
  } from '../../../../controllers/'
43
43
  import { EcommerceController } from '../../../../controllers/ecommerce'
44
44
  import { WorksheetController } from '../../../../controllers/worksheet-controller'
@@ -163,14 +163,14 @@ export async function completePicking(
163
163
  if (powrup) {
164
164
  const initPowrupShipment = async powrup => {
165
165
  await getManager().transaction(async txMgr => {
166
- const powrupController: PowrupController = new PowrupController(txMgr, domain, user)
166
+ const powrupController: PowrupController = new PowrupController()
167
167
 
168
168
  if (!releaseGood?.orderPackages?.length && !releaseGood?.marketPackCallSuccess) {
169
169
  const orderProducts: OrderProduct[] = await txMgr.getRepository(OrderProduct).find({
170
170
  where: { releaseGood },
171
171
  relations: ['product', 'productDetail']
172
172
  })
173
- await powrupController.packOrder(powrup, { ...releaseGood, orderProducts })
173
+ await powrupController.packOrder(powrup, { ...releaseGood, orderProducts }, domain, user, tx)
174
174
  }
175
175
 
176
176
  const rtsTriggerLevel: Setting = await txMgr.getRepository(Setting).findOne({
@@ -1,11 +1,11 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
- import { Application, User } from '@things-factory/auth-base'
3
+ import { Application, ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
5
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
6
6
  import { ArrivalNotice } from '@things-factory/sales-base'
7
7
  import { Domain } from '@things-factory/shell'
8
- // import { PowrupController } from '@things-factory/warehouse-base'
8
+ import { PowrupController } from '@things-factory/sales-base'
9
9
  import { Powrup } from '@things-factory/integration-powrup'
10
10
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
11
11
 
@@ -78,9 +78,9 @@ export const completePutawayResolver = {
78
78
  .getRepository(Sellercraft)
79
79
  .findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
80
80
 
81
- // const powrup: Powrup = await tx
82
- // .getRepository(Application)
83
- // .findOne({ domain: companyBizplace.domain, status: 'ACTIVE' })
81
+ const application: Application = await tx
82
+ .getRepository(Application)
83
+ .findOne({ domain: companyBizplace.domain, status: 'ACTIVE', type: ApplicationType.POWRUP })
84
84
 
85
85
  if (sellercraft) {
86
86
  const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
@@ -96,12 +96,12 @@ export const completePutawayResolver = {
96
96
  ecommerceCtrl.updateProductVariationStock(marketplaceStores, arrivalNotice.orderProducts, companyDomain)
97
97
  }
98
98
 
99
- // if (powrup) {
100
- // const powrupController: PowrupController = new PowrupController(tx, domain, user)
99
+ if (application) {
100
+ const powrupController: PowrupController = new PowrupController()
101
101
 
102
- // // allow async run to skip user wait time
103
- // powrupController.updateStock(powrup, arrivalNotice)
104
- // }
102
+ // allow async run to skip user wait time
103
+ powrupController.updateStock(arrivalNotice.orderProducts, companyBizplace.domain, user, tx)
104
+ }
105
105
  }
106
106
  }
107
107
 
@@ -1,10 +1,10 @@
1
1
  import { EntityManager } from 'typeorm'
2
2
 
3
- import { Application, User } from '@things-factory/auth-base'
3
+ import { Application, ApplicationType, User } from '@things-factory/auth-base'
4
4
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
5
  import { ReturnOrder } from '@things-factory/sales-base'
6
6
  import { Domain } from '@things-factory/shell'
7
- // import { PowrupController } from '@things-factory/warehouse-base'
7
+ import { PowrupController } from '@things-factory/sales-base'
8
8
  import { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'
9
9
  import { Powrup } from '@things-factory/integration-powrup'
10
10
 
@@ -35,21 +35,21 @@ export const completePutawayReturnResolver = {
35
35
  .getRepository(Sellercraft)
36
36
  .findOne({ domain: customerDomain, status: SellercraftStatus.ACTIVE })
37
37
 
38
- // const customerBizplaceId: string = returnOrder.bizplace.id
39
- // const companyBizplace: Bizplace = await getCompanyBizplace(domain, null, customerBizplaceId, tx)
40
- // const powrup: Powrup = await tx
41
- // .getRepository(Application)
42
- // .findOne({ domain: companyBizplace.domain, status: 'ACTIVE' })
38
+ const customerBizplaceId: string = returnOrder.bizplace.id
39
+ const companyBizplace: Bizplace = await getCompanyBizplace(domain, null, customerBizplaceId, tx)
40
+ const application: Application = await tx
41
+ .getRepository(Application)
42
+ .findOne({ domain: companyBizplace.domain, status: 'ACTIVE', type: ApplicationType.POWRUP })
43
43
 
44
44
  if (sellercraft) {
45
45
  const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
46
46
  await sellercraftCtrl.registerProductReturn(sellercraft, returnOrder)
47
47
  }
48
48
 
49
- // if (powrup) {
50
- // const powrupController: PowrupController = new PowrupController(tx, domain, user)
51
- // await powrupController.updateStock(powrup, returnOrder)
52
- // }
49
+ if (application) {
50
+ const powrupController: PowrupController = new PowrupController()
51
+ await powrupController.updateStock(returnOrder.orderInventories, companyBizplace.domain, user, tx)
52
+ }
53
53
  }
54
54
  }
55
55
 
@@ -1,201 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PowrupController = void 0;
4
- const typeorm_1 = require("typeorm");
5
- const biz_base_1 = require("@things-factory/biz-base");
6
- const env_1 = require("@things-factory/env");
7
- const integration_powrup_1 = require("@things-factory/integration-powrup");
8
- const sales_base_1 = require("@things-factory/sales-base");
9
- const warehouse_base_1 = require("@things-factory/warehouse-base");
10
- const datetime_util_1 = require("../../utils/datetime-util");
11
- const worksheet_controller_1 = require("../worksheet-controller");
12
- class PowrupController extends worksheet_controller_1.WorksheetController {
13
- async packOrder(powrup, releaseGood) {
14
- try {
15
- const orderProducts = releaseGood.orderProducts;
16
- const orderInformation = {
17
- refOrderId: releaseGood.refOrderId
18
- };
19
- if ((releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lastMarketPackCall) &&
20
- datetime_util_1.DateTimeDifference.timeDifferenceInSeconds(releaseGood.lastMarketPackCall, new Date()) <= 5) {
21
- return false;
22
- }
23
- await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).update({ id: releaseGood.id }, {
24
- lastMarketPackCall: new Date()
25
- });
26
- const orderPack = await integration_powrup_1.PowrupAPI.packOrder(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
27
- if (orderPack === null || orderPack === void 0 ? void 0 : orderPack.packages) {
28
- const packages = orderPack.packages;
29
- await Promise.all(packages.map(async (pkg) => {
30
- const items = pkg.items;
31
- const orderPackage = {
32
- name: sales_base_1.OrderNoGenerator.orderPackage(),
33
- packageId: pkg.packageId,
34
- status: sales_base_1.ORDER_STATUS.PROCESSING,
35
- releaseGood,
36
- domain: releaseGood.domain,
37
- bizplace: releaseGood.bizplace,
38
- creator: releaseGood.creator,
39
- updater: releaseGood.updater
40
- };
41
- let savedOrderPackage = await this.trxMgr.getRepository(sales_base_1.OrderPackage).save(orderPackage);
42
- const orderPackageItems = items.map(itm => {
43
- const { refCode, qty } = itm;
44
- const matchedOrderProduct = orderProducts.find(op => op.productDetail.refCode == refCode);
45
- return {
46
- name: sales_base_1.OrderNoGenerator.orderPackageItem(),
47
- orderProduct: matchedOrderProduct,
48
- status: sales_base_1.ORDER_STATUS.PROCESSING,
49
- releaseQty: qty,
50
- orderPackage: savedOrderPackage,
51
- domain: releaseGood.domain,
52
- bizplace: releaseGood.bizplace,
53
- creator: releaseGood.creator,
54
- updater: releaseGood.updater
55
- };
56
- });
57
- await this.trxMgr.getRepository(sales_base_1.OrderPackageItem).save(orderPackageItems);
58
- }));
59
- await this.trxMgr.getRepository(sales_base_1.ReleaseGood).update({ id: releaseGood.id }, {
60
- packageId: packages[0].packageId,
61
- marketPackCallSuccess: new Date(),
62
- lastMarketPackCall: new Date(),
63
- updatedAt: new Date()
64
- });
65
- }
66
- }
67
- catch (error) {
68
- env_1.logger.error(`powrup-controller[packOrder]: ${error}`);
69
- throw error;
70
- }
71
- return releaseGood;
72
- }
73
- async updateStock(powrup, inventory) {
74
- const bizplace = await this.trxMgr.getRepository(biz_base_1.Bizplace).findOne({ domain: powrup.domain });
75
- let product = inventory.product;
76
- const productDetail = inventory.productDetail;
77
- let qb = await this.trxMgr.getRepository(warehouse_base_1.Inventory).createQueryBuilder('inv');
78
- qb.leftJoinAndSelect('inv.location', 'loc')
79
- .andWhere('"inv"."domain_id" = :domainId')
80
- .andWhere('"inv"."bizplace_id" = :bizplaceId')
81
- .andWhere('"inv"."product_id" = :productId')
82
- .andWhere('"inv"."product_detail_id" = :productDetailId')
83
- .andWhere('"inv"."status" = :status')
84
- .andWhere('"loc"."type" NOT IN (:...locationTypes)')
85
- .setParameters({
86
- domainId: this.domain.id,
87
- bizplaceId: bizplace.id,
88
- productId: product.id,
89
- productDetailId: productDetail.id,
90
- status: warehouse_base_1.INVENTORY_STATUS.STORED,
91
- locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE]
92
- });
93
- const warehouseDomainId = this.domain.id;
94
- let inventories = await qb.getMany();
95
- let inventoryTotalQty = 0;
96
- let inventoryTotalLockedQty = 0;
97
- let inventoryBufferQty = 0;
98
- inventories.forEach((inventory) => {
99
- const { qty, lockedQty } = inventory;
100
- inventoryTotalQty += qty;
101
- inventoryTotalLockedQty += lockedQty;
102
- if (inventory.location.type === warehouse_base_1.LOCATION_TYPE.RESERVE) {
103
- inventoryBufferQty += qty;
104
- }
105
- });
106
- const powrupInvs = [
107
- {
108
- refCode: productDetail.refCode,
109
- stock: {
110
- quantityTotal: inventoryTotalQty - inventoryTotalLockedQty - inventoryBufferQty,
111
- quantityReserved: inventoryTotalLockedQty - inventoryBufferQty,
112
- quantityBuffer: inventoryBufferQty
113
- }
114
- }
115
- ];
116
- await integration_powrup_1.PowrupAPI.updateStock(powrup, {
117
- context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } },
118
- warehouseDomainId,
119
- powrupInvs
120
- });
121
- }
122
- async initiateShipment(powrup, releaseGood) {
123
- try {
124
- let orderPackages = await this.trxMgr
125
- .getRepository(sales_base_1.OrderPackage)
126
- .find({ where: { releaseGood, bizplace: releaseGood.bizplace } });
127
- if (orderPackages === null || orderPackages === void 0 ? void 0 : orderPackages.length) {
128
- await Promise.all(orderPackages
129
- .filter(op => (op === null || op === void 0 ? void 0 : op.marketRtsCallSuccess) == undefined)
130
- .map(async (op) => {
131
- if (!(op === null || op === void 0 ? void 0 : op.packageId))
132
- throw new Error('Order package id is not found');
133
- if (releaseGood.lmdOption && !(op === null || op === void 0 ? void 0 : op.parcelId))
134
- return;
135
- let orderInformation = {
136
- refOrderId: releaseGood.refOrderId,
137
- packageId: op.packageId
138
- };
139
- if (releaseGood.lmdOption) {
140
- let releaseGoodQuery = await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).findOne({
141
- where: { id: releaseGood.id },
142
- relations: ['lastMileDelivery']
143
- });
144
- orderInformation = Object.assign(Object.assign({}, orderInformation), { awb: op.airwayBill, trackingNo: op.trackingNo, lmdOption: releaseGood.lmdOption, shipperName: releaseGoodQuery.lastMileDelivery.platform });
145
- }
146
- try {
147
- await integration_powrup_1.PowrupAPI.initiateShipment(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
148
- await (0, typeorm_1.getRepository)(sales_base_1.OrderPackage).update({ id: op.id }, { marketRtsCallSuccess: new Date() });
149
- }
150
- catch (error) {
151
- env_1.logger.error(`powrup-controller[initiateShipment]: ${JSON.stringify(Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } }, error: error }))}`);
152
- }
153
- }));
154
- }
155
- }
156
- catch (error) {
157
- throw error;
158
- }
159
- }
160
- async fetchDocument(powrup, releaseGood) {
161
- if ((releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.ownTransport) && (releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.lmdOption)) {
162
- return;
163
- }
164
- try {
165
- let orderPackages = await this.trxMgr
166
- .getRepository(sales_base_1.OrderPackage)
167
- .find({ where: { releaseGood, bizplace: releaseGood.bizplace } });
168
- if (orderPackages === null || orderPackages === void 0 ? void 0 : orderPackages.length) {
169
- await Promise.all(orderPackages.map(async (op) => {
170
- if (!(op === null || op === void 0 ? void 0 : op.packageId))
171
- throw new Error('Order package id is not found');
172
- const orderInformation = {
173
- refOrderId: releaseGood.refOrderId,
174
- packageId: op.packageId
175
- };
176
- const { documents, trackingNo, transporter } = await integration_powrup_1.PowrupAPI.fetchDocument(powrup, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: this === null || this === void 0 ? void 0 : this.domain, user: this === null || this === void 0 ? void 0 : this.user } } }));
177
- let updateInfo;
178
- if (documents === null || documents === void 0 ? void 0 : documents.length) {
179
- documents.map(document => {
180
- if (document.type === 'invoice') {
181
- updateInfo = Object.assign(Object.assign({}, updateInfo), { invoice: document.download_url });
182
- }
183
- else if (document.type === 'airway_bill') {
184
- updateInfo = Object.assign(Object.assign({}, updateInfo), { airwayBill: document.download_url });
185
- }
186
- });
187
- updateInfo = Object.assign(Object.assign({}, updateInfo), { trackingNo: trackingNo, transporter: transporter, updater: this.user });
188
- await this.trxMgr.getRepository(sales_base_1.OrderPackage).update({ id: op.id }, Object.assign({}, updateInfo));
189
- }
190
- }));
191
- releaseGood = await this.trxMgr.getRepository(sales_base_1.ReleaseGood).findOne({ id: releaseGood.id });
192
- }
193
- return releaseGood;
194
- }
195
- catch (error) {
196
- throw error;
197
- }
198
- }
199
- }
200
- exports.PowrupController = PowrupController;
201
- //# sourceMappingURL=powrup-controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"powrup-controller.js","sourceRoot":"","sources":["../../../server/controllers/ecommerce/powrup-controller.ts"],"names":[],"mappings":"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"}