@lodashventure/medusa-parcel-shipping 0.4.12 → 0.4.16

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.
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20251117165505 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20251117165505 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "parcel_packing_policy" drop constraint if exists "parcel_packing_policy_product_id_unique";`);
8
+ this.addSql(`create table if not exists "material_cost" ("id" text not null, "name" text not null, "unit" text not null, "cost_per_unit" real not null, "currency" text not null default 'THB', "category" text null, "description" text null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "material_cost_pkey" primary key ("id"));`);
9
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_deleted_at" ON "material_cost" (deleted_at) WHERE deleted_at IS NULL;`);
10
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_active" ON "material_cost" (active) WHERE deleted_at IS NULL;`);
11
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_material_cost_category" ON "material_cost" (category) WHERE deleted_at IS NULL;`);
12
+ this.addSql(`create table if not exists "parcel_box" ("id" text not null, "name" text not null, "width_cm" real not null, "length_cm" real not null, "height_cm" real not null, "max_weight_kg" real not null, "price_thb" real not null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_box_pkey" primary key ("id"));`);
13
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_box_deleted_at" ON "parcel_box" (deleted_at) WHERE deleted_at IS NULL;`);
14
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_box_active" ON "parcel_box" (active) WHERE deleted_at IS NULL;`);
15
+ this.addSql(`create table if not exists "parcel_packaging_material" ("id" text not null, "name" text not null, "material_type" text check ("material_type" in ('BUBBLE_WRAP', 'FOAM_PADDING', 'VOID_FILL', 'CORNER_PROTECTOR', 'FRAGILE_TAPE')) not null, "cost_per_unit" real not null, "unit_type" text check ("unit_type" in ('PER_ITEM', 'PER_KG', 'PER_M2', 'FLAT')) not null, "currency" text not null default 'THB', "active" boolean not null default true, "auto_apply_for_fragile" boolean not null default false, "auto_apply_for_heavy" boolean not null default false, "heavy_threshold_kg" real null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_packaging_material_pkey" primary key ("id"));`);
16
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_deleted_at" ON "parcel_packaging_material" (deleted_at) WHERE deleted_at IS NULL;`);
17
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_active" ON "parcel_packaging_material" (active) WHERE deleted_at IS NULL;`);
18
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packaging_material_material_type" ON "parcel_packaging_material" (material_type) WHERE deleted_at IS NULL;`);
19
+ this.addSql(`create table if not exists "parcel_packing_policy" ("id" text not null, "product_id" text not null, "no_stack" boolean not null default false, "fragile" boolean not null default false, "stackable_max_layers" integer not null default 0, "orientation_lock" text null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_packing_policy_pkey" primary key ("id"));`);
20
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_packing_policy_deleted_at" ON "parcel_packing_policy" (deleted_at) WHERE deleted_at IS NULL;`);
21
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_parcel_packing_policy_product_id_unique" ON "parcel_packing_policy" (product_id) WHERE deleted_at IS NULL;`);
22
+ this.addSql(`create table if not exists "parcel_service_area" ("id" text not null, "kind" text check ("kind" in ('PROVINCE', 'POSTCODE_PREFIX')) not null, "value" text not null, "active" boolean not null default true, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_service_area_pkey" primary key ("id"));`);
23
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_deleted_at" ON "parcel_service_area" (deleted_at) WHERE deleted_at IS NULL;`);
24
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_kind_value" ON "parcel_service_area" (kind, value) WHERE deleted_at IS NULL;`);
25
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_service_area_active" ON "parcel_service_area" (active) WHERE deleted_at IS NULL;`);
26
+ this.addSql(`create table if not exists "parcel_shipping_rate" ("id" text not null, "carrier_type" text check ("carrier_type" in ('COMPANY_FLEET', 'COMPANY_TRUCK', 'PRIVATE_CARRIER')) not null, "carrier" text check ("carrier" in ('COMPANY_FLEET', 'COMPANY_TRUCK', 'PRIVATE_CARRIER')) not null, "service_code" text check ("service_code" in ('MESSENGER_3H', 'SAME_DAY', 'STANDARD_3_5D', 'EXPRESS_1_2D')) not null, "max_weight_kg" real not null, "price" real not null, "currency" text not null default 'THB', "priority" integer not null default 0, "active" boolean not null default true, "eta_hours_min" integer null, "eta_hours_max" integer null, "eta_days_min" integer null, "eta_days_max" integer null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "parcel_shipping_rate_pkey" primary key ("id"));`);
27
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_deleted_at" ON "parcel_shipping_rate" (deleted_at) WHERE deleted_at IS NULL;`);
28
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "idx_carrier_service_weight" ON "parcel_shipping_rate" (carrier_type, service_code, max_weight_kg, active) WHERE active = true AND deleted_at IS NULL;`);
29
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_active" ON "parcel_shipping_rate" (active) WHERE deleted_at IS NULL;`);
30
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_parcel_shipping_rate_carrier_type_service_code" ON "parcel_shipping_rate" (carrier_type, service_code) WHERE deleted_at IS NULL;`);
31
+ }
32
+ async down() {
33
+ this.addSql(`drop table if exists "material_cost" cascade;`);
34
+ this.addSql(`drop table if exists "parcel_box" cascade;`);
35
+ this.addSql(`drop table if exists "parcel_packaging_material" cascade;`);
36
+ this.addSql(`drop table if exists "parcel_packing_policy" cascade;`);
37
+ this.addSql(`drop table if exists "parcel_service_area" cascade;`);
38
+ this.addSql(`drop table if exists "parcel_shipping_rate" cascade;`);
39
+ }
40
+ }
41
+ exports.Migration20251117165505 = Migration20251117165505;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTExMTcxNjU1MDUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wYXJjZWwtc2hpcHBpbmcvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MTExNzE2NTUwNS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBcUU7QUFFckUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1Qsb0hBQW9ILENBQ3JILENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGljQUFpYyxDQUNsYyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxxSEFBcUgsQ0FDdEgsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsNkdBQTZHLENBQzlHLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGlIQUFpSCxDQUNsSCxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5YkFBeWIsQ0FDMWIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsK0dBQStHLENBQ2hILENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHVHQUF1RyxDQUN4RyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FDVCwwd0JBQTB3QixDQUMzd0IsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsNklBQTZJLENBQzlJLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFJQUFxSSxDQUN0SSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSkFBbUosQ0FDcEosQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQ1QseWNBQXljLENBQzFjLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULHFJQUFxSSxDQUN0SSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSkFBbUosQ0FDcEosQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQ1QsMFlBQTBZLENBQzNZLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULGlJQUFpSSxDQUNsSSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrSUFBa0ksQ0FDbkksQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QseUhBQXlILENBQzFILENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUNULGczQkFBZzNCLENBQ2ozQixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtSUFBbUksQ0FDcEksQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQ1QsMExBQTBMLENBQzNMLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULDJIQUEySCxDQUM1SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxrS0FBa0ssQ0FDbkssQ0FBQztJQUNKLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsTUFBTSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUE5RkQsMERBOEZDIn0=
@@ -32,6 +32,7 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
32
32
  materials: { data: null, expiresAt: 0 },
33
33
  material_costs: { data: null, expiresAt: 0 },
34
34
  };
35
+ this.packagingMaterialsUnavailable = false;
35
36
  }
36
37
  // ============================================================================
37
38
  // Cache Management
@@ -151,7 +152,20 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
151
152
  // Packaging Material Management
152
153
  // ============================================================================
153
154
  async findPackagingMaterials(filters = {}, config = {}) {
154
- return this.getCached("materials", () => this.listPackagingMaterials(filters, config), filters);
155
+ if (this.packagingMaterialsUnavailable) {
156
+ return [];
157
+ }
158
+ return this.getCached("materials", async () => {
159
+ try {
160
+ return await this.listPackagingMaterials(filters, config);
161
+ }
162
+ catch (error) {
163
+ if (this.handleMissingPackagingTable(error)) {
164
+ return [];
165
+ }
166
+ throw error;
167
+ }
168
+ }, filters);
155
169
  }
156
170
  async createPackagingMaterial(data) {
157
171
  const result = await this.createPackagingMaterials([data]);
@@ -303,7 +317,19 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
303
317
  // Shipping Options Calculation
304
318
  // ============================================================================
305
319
  async calculatePackagingMaterialsCost(items, metrics, totalWeightKg) {
306
- const materials = await this.findPackagingMaterials({ active: true });
320
+ let materials = [];
321
+ try {
322
+ materials = await this.findPackagingMaterials({ active: true });
323
+ }
324
+ catch (error) {
325
+ if (this.handleMissingPackagingTable(error)) {
326
+ return 0;
327
+ }
328
+ throw error;
329
+ }
330
+ if (!materials?.length) {
331
+ return 0;
332
+ }
307
333
  let totalCost = 0;
308
334
  // Count fragile items
309
335
  const fragileCount = items.reduce((count, item) => {
@@ -513,6 +539,40 @@ class ParcelShippingService extends (0, utils_1.MedusaService)({
513
539
  normalizeString(str) {
514
540
  return str.trim().toLowerCase();
515
541
  }
542
+ handleMissingPackagingTable(error) {
543
+ const message = this.extractErrorMessage(error);
544
+ if (message.includes("parcel_packaging_material") &&
545
+ (message.includes("does not exist") || message.includes("42p01"))) {
546
+ if (!this.packagingMaterialsUnavailable) {
547
+ this.packagingMaterialsUnavailable = true;
548
+ console.warn("[parcel-shipping] parcel_packaging_material table missing. Skipping packaging material calculations until migrations run.");
549
+ }
550
+ return true;
551
+ }
552
+ return false;
553
+ }
554
+ extractErrorMessage(error) {
555
+ if (!error) {
556
+ return "";
557
+ }
558
+ const messages = [];
559
+ let current = error;
560
+ while (current) {
561
+ if (typeof current.message === "string") {
562
+ messages.push(current.message.toLowerCase());
563
+ }
564
+ current =
565
+ current.cause ||
566
+ current.originalError ||
567
+ current.parent ||
568
+ current.previous ||
569
+ null;
570
+ }
571
+ if (messages.length === 0 && typeof error.toString === "function") {
572
+ messages.push(String(error).toLowerCase());
573
+ }
574
+ return messages.join(" ");
575
+ }
516
576
  }
517
577
  exports.default = ParcelShippingService;
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BhcmNlbC1zaGlwcGluZy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXVFO0FBQ3ZFLG9EQUFnRDtBQUNoRCwwREFBc0Q7QUFDdEQsd0RBQW9EO0FBQ3BELDREQUF3RDtBQUN4RCxvRUFBZ0U7QUFDaEUsMERBQXNEO0FBQ3RELHdEQUdvQztBQUNwQyxnRkFBNEU7QUFhNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYTtBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFzQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNoRCxTQUFTLEVBQVQsc0JBQVM7SUFDVCxZQUFZLEVBQVosNEJBQVk7SUFDWixXQUFXLEVBQVgsMEJBQVc7SUFDWCxhQUFhLEVBQWIsOEJBQWE7SUFDYixpQkFBaUIsRUFBakIsc0NBQWlCO0lBQ2pCLFlBQVksRUFBWiw0QkFBWTtDQUNiLENBQUM7SUFQRjs7UUFRVSxVQUFLLEdBQXVEO1lBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNuQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdkMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQzdDLENBQUM7SUFpcUJKLENB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
578
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BhcmNlbC1zaGlwcGluZy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQXVFO0FBQ3ZFLG9EQUFnRDtBQUNoRCwwREFBc0Q7QUFDdEQsd0RBQW9EO0FBQ3BELDREQUF3RDtBQUN4RCxvRUFBZ0U7QUFDaEUsMERBQXNEO0FBQ3RELHdEQUdvQztBQUNwQyxnRkFBNEU7QUFhNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYTtBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFzQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNoRCxTQUFTLEVBQVQsc0JBQVM7SUFDVCxZQUFZLEVBQVosNEJBQVk7SUFDWixXQUFXLEVBQVgsMEJBQVc7SUFDWCxhQUFhLEVBQWIsOEJBQWE7SUFDYixpQkFBaUIsRUFBakIsc0NBQWlCO0lBQ2pCLFlBQVksRUFBWiw0QkFBWTtDQUNiLENBQUM7SUFQRjs7UUFRVSxVQUFLLEdBQXVEO1lBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNuQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdkMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQzdDLENBQUM7UUFDTSxrQ0FB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
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ParcelFulfillmentProvider = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const parcel_shipping_1 = require("../modules/parcel-shipping");
6
+ const PRODUCT_EXTENSION_MODULE = "productExtension";
7
+ const DEFAULT_FALLBACK_DIMENSIONS = {
8
+ width: 10,
9
+ length: 10,
10
+ height: 10,
11
+ weight: 500, // raw weight in grams (converted later based on weight_unit)
12
+ };
6
13
  /**
7
14
  * Unified Parcel Fulfillment Provider
8
15
  * Provides 4 service levels:
@@ -17,11 +24,13 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
17
24
  constructor(container, options = {}) {
18
25
  // @ts-ignore
19
26
  super(...arguments);
27
+ this.fallbackDimensionsWarned = false;
20
28
  this.container_ = container;
21
29
  this.logger_ = container.logger;
22
30
  this.weightUnit = options.weight_unit ?? "g";
23
31
  this.apiUrl = options.api_url ?? "http://localhost:9000";
24
32
  this.publishableApiKey = options.publishable_api_key;
33
+ this.fallbackDimensions = this.resolveFallbackDimensions(options.fallback_dimensions);
25
34
  }
26
35
  /**
27
36
  * Make internal API call to /store/quote endpoint
@@ -39,12 +48,8 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
39
48
  return {
40
49
  items,
41
50
  shipping_address: {
42
- address_line_1: normalizedAddress.address_line_1 ||
43
- normalizedAddress.address_1 ||
44
- "",
45
- address_line_2: normalizedAddress.address_line_2 ||
46
- normalizedAddress.address_2 ||
47
- "",
51
+ address_line_1: normalizedAddress.address_line_1 || normalizedAddress.address_1 || "",
52
+ address_line_2: normalizedAddress.address_line_2 || normalizedAddress.address_2 || "",
48
53
  street: normalizedAddress.street || "",
49
54
  sub_district: normalizedAddress.sub_district || "",
50
55
  district: normalizedAddress.district || "",
@@ -58,9 +63,7 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
58
63
  normalizedAddress.zipcode ||
59
64
  normalizedAddress.zip ||
60
65
  "",
61
- country: normalizedAddress.country ||
62
- normalizedAddress.country_code ||
63
- "TH",
66
+ country: normalizedAddress.country || normalizedAddress.country_code || "TH",
64
67
  },
65
68
  preferred_service: {
66
69
  carrier_type: carrierType,
@@ -70,19 +73,14 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
70
73
  };
71
74
  }
72
75
  async tryQuoteViaModule(payload) {
73
- const container = this.container_;
74
- if (!container) {
75
- return null;
76
- }
77
- const hasRegistration = typeof container?.hasRegistration === "function"
78
- ? container.hasRegistration(parcel_shipping_1.PARCEL_SHIPPING_MODULE)
79
- : true;
80
- if (!hasRegistration) {
76
+ if (!this.container_) {
81
77
  return null;
82
78
  }
83
79
  try {
84
- const parcelService = container.resolve(parcel_shipping_1.PARCEL_SHIPPING_MODULE);
80
+ // Resolve directly - Awilix container proxies all property access
81
+ const parcelService = this.container_.resolve(parcel_shipping_1.PARCEL_SHIPPING_MODULE);
85
82
  if (!parcelService?.quote) {
83
+ this.logger_?.error(`Parcel shipping service resolved but quote method not available. Service keys: ${Object.keys(parcelService || {}).join(", ")}`);
86
84
  return null;
87
85
  }
88
86
  return await parcelService.quote(payload);
@@ -90,38 +88,72 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
90
88
  catch (error) {
91
89
  if (error?.name === "AwilixResolutionError" ||
92
90
  error?.name === "ResolutionError") {
93
- this.logger_?.info("Parcel shipping module not found in container. Falling back to HTTP quote route.");
91
+ this.logger_?.info(`Parcel shipping module (${parcel_shipping_1.PARCEL_SHIPPING_MODULE}) not in provider scope. Falling back to HTTP.`);
94
92
  return null;
95
93
  }
96
94
  throw error;
97
95
  }
98
96
  }
99
97
  async fetchQuoteViaHttp(payload) {
100
- const scope = this.publishableApiKey ? "store" : "admin";
101
- const url = `${this.apiUrl}/${scope}/quote`;
102
- this.logger_?.info(`Fetching quote via HTTP (${scope}) for carrier_type: ${payload.preferred_service?.carrier_type}, service_code: ${payload.preferred_service?.service_code}`);
103
- try {
104
- const headers = {
105
- "Content-Type": "application/json",
106
- };
107
- if (this.publishableApiKey) {
108
- headers["x-publishable-api-key"] = this.publishableApiKey;
98
+ // Always try store first (requires publishable API key), then admin as fallback
99
+ const scopesToTry = this.publishableApiKey
100
+ ? ["store", "admin"]
101
+ : ["store", "admin"]; // Try store anyway, it might work without key in some setups
102
+ let lastError = null;
103
+ for (const scope of scopesToTry) {
104
+ try {
105
+ return await this.fetchQuoteForScope(scope, payload);
109
106
  }
110
- const response = await fetch(url, {
111
- method: "POST",
112
- headers,
113
- body: JSON.stringify(payload),
114
- });
115
- if (!response.ok) {
116
- const errorText = await response.text();
117
- throw new Error(`Quote API request failed: ${response.status} ${errorText}`);
107
+ catch (error) {
108
+ const typedError = error;
109
+ lastError = typedError;
110
+ if (scope === "store" && this.shouldFallbackToAdmin(typedError)) {
111
+ this.logger_?.warn(`Store quote failed (${typedError.status}). Retrying via admin endpoint.`);
112
+ continue;
113
+ }
114
+ const logMessage = `Failed to fetch quote from API: ${typedError?.message ?? "Unknown error"}`;
115
+ this.logger_?.error(logMessage);
116
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Unable to fetch shipping quote: ${typedError.message}`);
118
117
  }
119
- return (await response.json());
120
118
  }
121
- catch (error) {
122
- this.logger_?.error("Failed to fetch quote from API", error);
123
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Unable to fetch shipping quote: ${error.message}`);
119
+ const finalErrorMessage = lastError?.message ?? "Unknown error";
120
+ this.logger_?.error(`Failed to fetch quote from API after exhausting scopes: ${finalErrorMessage}`);
121
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Unable to fetch shipping quote: ${lastError?.message}`);
122
+ }
123
+ async fetchQuoteForScope(scope, payload) {
124
+ const url = `${this.apiUrl}/${scope}/quote`;
125
+ this.logger_?.info(`Fetching quote via HTTP (${scope}) for carrier_type: ${payload.preferred_service?.carrier_type}, service_code: ${payload.preferred_service?.service_code}`);
126
+ const headers = {
127
+ "Content-Type": "application/json",
128
+ };
129
+ if (scope === "store" && this.publishableApiKey) {
130
+ headers["x-publishable-api-key"] = this.publishableApiKey;
124
131
  }
132
+ const response = await fetch(url, {
133
+ method: "POST",
134
+ headers,
135
+ body: JSON.stringify(payload),
136
+ });
137
+ if (!response.ok) {
138
+ const errorText = await response.text();
139
+ const error = new Error(`Quote API request failed via ${scope}: ${response.status} ${errorText}`);
140
+ error.status = response.status;
141
+ error.scope = scope;
142
+ error.body = errorText;
143
+ throw error;
144
+ }
145
+ return (await response.json());
146
+ }
147
+ shouldFallbackToAdmin(error) {
148
+ if (!error) {
149
+ return false;
150
+ }
151
+ if (error.status && [401, 403].includes(error.status)) {
152
+ return true;
153
+ }
154
+ const body = (error.body || "").toLowerCase();
155
+ const message = (error.message || "").toLowerCase();
156
+ return (body.includes("publishable key") || message.includes("publishable key"));
125
157
  }
126
158
  // ============================================================================
127
159
  // Fulfillment Options (4 Service Levels)
@@ -177,7 +209,7 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
177
209
  return validCombinations.some(([carrier, service]) => carrier === carrierType && service === serviceCode);
178
210
  }
179
211
  async validateFulfillmentData(optionData, data, context) {
180
- const quoteItems = this.convertToQuoteItems(context);
212
+ const quoteItems = await this.convertToQuoteItems(context);
181
213
  if (!quoteItems.length) {
182
214
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "cart_items_missing_dimensions");
183
215
  }
@@ -213,7 +245,16 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
213
245
  }
214
246
  async calculatePrice(optionData, data, context) {
215
247
  this.logger_?.info(`calculatePrice called with optionData: ${JSON.stringify(optionData)}`);
216
- const quoteItems = this.convertToQuoteItems(context);
248
+ // Debug: Log full context structure
249
+ this.logger_?.info?.(`[ParcelFulfillment] calculatePrice context keys: ${Object.keys(context || {}).join(", ")}`);
250
+ this.logger_?.info?.(`[ParcelFulfillment] calculatePrice data keys: ${Object.keys(data || {}).join(", ")}`);
251
+ const cartId = this.extractCartId(context, data);
252
+ this.logger_?.info?.(`[ParcelFulfillment] Extracted cart_id: ${cartId ?? "NOT FOUND"}`);
253
+ // Check if cart data is directly available
254
+ if (context?.cart) {
255
+ this.logger_?.info?.(`[ParcelFulfillment] Cart object found with ${context.cart?.items?.length ?? 0} items`);
256
+ }
257
+ const quoteItems = await this.convertToQuoteItems(context);
217
258
  if (!quoteItems.length) {
218
259
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "cart_items_missing_dimensions_or_weight");
219
260
  }
@@ -296,9 +337,17 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
296
337
  // ============================================================================
297
338
  // Helper Methods
298
339
  // ============================================================================
299
- convertToQuoteItems(context) {
300
- const items = context?.items ?? [];
340
+ async convertToQuoteItems(context) {
341
+ const items = await this.resolveItemsWithFallback(context);
301
342
  const quoteItems = [];
343
+ if (!items.length) {
344
+ const cartId = this.extractCartId(context);
345
+ this.logger_?.error?.(`[ParcelFulfillment] No items found for shipping calculation. Cart ID: ${cartId ?? "unknown"}. ` +
346
+ `Context keys: ${Object.keys(context || {}).join(", ")}`);
347
+ return quoteItems;
348
+ }
349
+ const stackableMap = await this.loadProductStackableValues(items);
350
+ const variantDimensions = await this.loadVariantDimensions(items);
302
351
  this.logger_?.info(`Converting ${items.length} items to quote items`);
303
352
  for (const item of items) {
304
353
  const lineItem = item;
@@ -306,6 +355,10 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
306
355
  if (!quantity) {
307
356
  continue;
308
357
  }
358
+ const variantId = this.extractVariantId(lineItem);
359
+ const variantFallbackDimensions = variantId
360
+ ? variantDimensions.get(variantId)
361
+ : undefined;
309
362
  // Check variant, line item, and product dimensions (fallback)
310
363
  const rawWeight = Number(lineItem?.variant?.weight ??
311
364
  lineItem?.weight ??
@@ -313,32 +366,63 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
313
366
  lineItem?.variant?.product?.weight ??
314
367
  lineItem?.product?.weight ??
315
368
  0) || 0;
316
- const weight = this.normalizeWeight(rawWeight);
317
- const width = Number(lineItem?.variant?.width ??
369
+ const sourceWeight = rawWeight ||
370
+ variantFallbackDimensions?.weight ||
371
+ this.fallbackDimensions.weight;
372
+ const usedProviderWeightFallback = !rawWeight && !variantFallbackDimensions?.weight;
373
+ const weight = this.normalizeWeight(sourceWeight);
374
+ const widthValue = Number(lineItem?.variant?.width ??
318
375
  lineItem?.width ??
319
376
  lineItem?.raw_width ??
320
377
  lineItem?.variant?.product?.width ??
321
378
  lineItem?.product?.width ??
322
379
  0) || 0;
323
- const length = Number(lineItem?.variant?.length ??
380
+ const finalWidth = widthValue ||
381
+ variantFallbackDimensions?.width ||
382
+ this.fallbackDimensions.width;
383
+ const usedProviderWidthFallback = !widthValue && !variantFallbackDimensions?.width;
384
+ const lengthValue = Number(lineItem?.variant?.length ??
324
385
  lineItem?.length ??
325
386
  lineItem?.raw_length ??
326
387
  lineItem?.variant?.product?.length ??
327
388
  lineItem?.product?.length ??
328
389
  0) || 0;
329
- const height = Number(lineItem?.variant?.height ??
390
+ const finalLength = lengthValue ||
391
+ variantFallbackDimensions?.length ||
392
+ this.fallbackDimensions.length;
393
+ const usedProviderLengthFallback = !lengthValue && !variantFallbackDimensions?.length;
394
+ const heightValue = Number(lineItem?.variant?.height ??
330
395
  lineItem?.height ??
331
396
  lineItem?.raw_height ??
332
397
  lineItem?.variant?.product?.height ??
333
398
  lineItem?.product?.height ??
334
399
  0) || 0;
335
- if (!width || !length || !height || !weight) {
400
+ const finalHeight = heightValue ||
401
+ variantFallbackDimensions?.height ||
402
+ this.fallbackDimensions.height;
403
+ const usedProviderHeightFallback = !heightValue && !variantFallbackDimensions?.height;
404
+ if (!finalWidth || !finalLength || !finalHeight || !weight) {
336
405
  continue;
337
406
  }
407
+ if (usedProviderWidthFallback ||
408
+ usedProviderLengthFallback ||
409
+ usedProviderHeightFallback ||
410
+ usedProviderWeightFallback) {
411
+ this.logFallbackDimensionsOnce(lineItem);
412
+ }
338
413
  // Get packing policy from metadata
339
414
  const noStack = Boolean(lineItem?.variant?.metadata?.noStack ?? lineItem?.metadata?.noStack);
340
415
  const fragile = Boolean(lineItem?.variant?.metadata?.fragile ?? lineItem?.metadata?.fragile);
341
- const stackable = lineItem?.variant?.metadata?.stackable ?? lineItem?.metadata?.stackable;
416
+ let productId = this.extractProductId(lineItem);
417
+ if (!productId && variantFallbackDimensions?.product_id) {
418
+ productId = String(variantFallbackDimensions.product_id);
419
+ }
420
+ let stackable = lineItem?.variant?.metadata?.stackable ?? lineItem?.metadata?.stackable;
421
+ if ((stackable === undefined || stackable === null || stackable === "") &&
422
+ productId &&
423
+ stackableMap.has(productId)) {
424
+ stackable = stackableMap.get(productId);
425
+ }
342
426
  const attributes = {};
343
427
  if (noStack) {
344
428
  attributes.noStack = true;
@@ -346,14 +430,18 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
346
430
  if (fragile) {
347
431
  attributes.fragile = true;
348
432
  }
349
- if (stackable !== undefined && stackable !== null) {
433
+ // Default to -1 (unlimited) if stackable is not explicitly set
434
+ if (stackable !== undefined && stackable !== null && stackable !== "") {
350
435
  attributes.stackable = Number(stackable);
351
436
  }
437
+ else {
438
+ attributes.stackable = -1; // Unlimited stacking
439
+ }
352
440
  const quoteItem = {
353
441
  sku: lineItem?.variant?.sku || lineItem?.sku || "unknown",
354
- width,
355
- length,
356
- height,
442
+ width: finalWidth,
443
+ length: finalLength,
444
+ height: finalHeight,
357
445
  weight,
358
446
  quantity,
359
447
  attributes: Object.keys(attributes).length > 0 ? attributes : undefined,
@@ -364,6 +452,316 @@ class ParcelFulfillmentProvider extends utils_1.AbstractFulfillmentProviderServi
364
452
  this.logger_?.info(`Converted ${quoteItems.length} quote items successfully`);
365
453
  return quoteItems;
366
454
  }
455
+ async resolveItemsWithFallback(context) {
456
+ const directItems = this.resolveContextItems(context);
457
+ if (directItems.length) {
458
+ return directItems;
459
+ }
460
+ const cartItems = await this.loadItemsFromCartContext(context);
461
+ if (cartItems.length) {
462
+ this.logger_?.debug?.(`[ParcelFulfillment] Loaded ${cartItems.length} cart items via fallback lookup.`);
463
+ return cartItems;
464
+ }
465
+ const cartId = this.extractCartId(context);
466
+ if (cartId) {
467
+ this.logger_?.warn?.(`[ParcelFulfillment] Unable to load items for cart ${cartId}. Shipping quote will fail.`);
468
+ }
469
+ else {
470
+ this.logger_?.warn?.("[ParcelFulfillment] Unable to determine cart ID for shipping calculation.");
471
+ }
472
+ return [];
473
+ }
474
+ async loadItemsFromCartContext(context) {
475
+ const cartId = this.extractCartId(context);
476
+ if (!cartId) {
477
+ return [];
478
+ }
479
+ return await this.loadCartItemsById(cartId);
480
+ }
481
+ async loadCartItemsById(cartId) {
482
+ const query = this.resolveQueryService();
483
+ if (!query?.graph) {
484
+ this.logger_?.error?.(`[ParcelFulfillment] Query service not available for cart ${cartId}. Cannot load items.`);
485
+ return [];
486
+ }
487
+ this.logger_?.info?.(`[ParcelFulfillment] Loading items for cart ${cartId} via query graph...`);
488
+ try {
489
+ const result = await query.graph({
490
+ entity: "cart",
491
+ fields: ["id", "items.*", "items.variant.*", "items.variant.product.*"],
492
+ filters: {
493
+ id: cartId,
494
+ },
495
+ });
496
+ const cart = result?.data?.[0];
497
+ this.logger_?.info?.(`[ParcelFulfillment] Query result: cart found=${Boolean(cart)}, items count=${cart?.items?.length ?? 0}`);
498
+ if (Array.isArray(cart?.items) && cart.items.length) {
499
+ return cart.items;
500
+ }
501
+ this.logger_?.warn?.(`[ParcelFulfillment] Cart ${cartId} resolved but contains no items.`);
502
+ return [];
503
+ }
504
+ catch (error) {
505
+ this.logger_?.error?.(`[ParcelFulfillment] Failed to load cart ${cartId} items: ${error?.message ?? error}. Stack: ${error?.stack ?? "N/A"}`);
506
+ return [];
507
+ }
508
+ }
509
+ extractCartId(context, data) {
510
+ if (!context && !data) {
511
+ return undefined;
512
+ }
513
+ const candidateValues = [
514
+ // Check data parameter first (from frontend request body)
515
+ data?.cart_id,
516
+ data?.cartId,
517
+ data?.cart?.id,
518
+ // Then check context
519
+ context?.cart_id,
520
+ context?.cartId,
521
+ context?.cart?.id,
522
+ context?.data?.cart_id,
523
+ context?.data?.cartId,
524
+ context?.data?.cart?.id,
525
+ context?.order?.cart_id,
526
+ context?.order?.cartId,
527
+ context?.order?.cart?.id,
528
+ context?.fulfillment?.cart_id,
529
+ context?.fulfillment?.cartId,
530
+ context?.fulfillment?.cart?.id,
531
+ ];
532
+ for (const value of candidateValues) {
533
+ if (!value) {
534
+ continue;
535
+ }
536
+ const id = String(value).trim();
537
+ if (id) {
538
+ return id;
539
+ }
540
+ }
541
+ const items = context?.items && Array.isArray(context?.items)
542
+ ? context.items
543
+ : [];
544
+ const itemCandidate = items[0];
545
+ const fromItem = itemCandidate?.cart_id ??
546
+ itemCandidate?.cartId ??
547
+ itemCandidate?.cart?.id;
548
+ if (fromItem) {
549
+ return String(fromItem);
550
+ }
551
+ return undefined;
552
+ }
553
+ resolveContextItems(context) {
554
+ if (!context) {
555
+ return [];
556
+ }
557
+ const candidates = [
558
+ context.items,
559
+ context.cart?.items,
560
+ context.order?.items,
561
+ context.fulfillment?.items,
562
+ context.data?.items,
563
+ ];
564
+ for (const list of candidates) {
565
+ if (Array.isArray(list) && list.length) {
566
+ return list;
567
+ }
568
+ }
569
+ if (Array.isArray(context.items)) {
570
+ return context.items;
571
+ }
572
+ return [];
573
+ }
574
+ extractProductId(lineItem) {
575
+ const productId = lineItem?.variant?.product_id ??
576
+ lineItem?.variant?.productId ??
577
+ lineItem?.variant?.product?.id ??
578
+ lineItem?.product_id ??
579
+ lineItem?.productId ??
580
+ lineItem?.product?.id ??
581
+ lineItem?.product?.product_id ??
582
+ lineItem?.metadata?.product_id;
583
+ return productId ? String(productId) : undefined;
584
+ }
585
+ extractVariantId(lineItem) {
586
+ const variantId = lineItem?.variant_id ??
587
+ lineItem?.variantId ??
588
+ lineItem?.variant?.id ??
589
+ lineItem?.variant?.variant_id ??
590
+ lineItem?.metadata?.variant_id;
591
+ return variantId ? String(variantId) : undefined;
592
+ }
593
+ async loadVariantDimensions(items) {
594
+ const variantIds = Array.from(new Set(items
595
+ .map((item) => this.extractVariantId(item))
596
+ .filter((id) => Boolean(id))));
597
+ if (!variantIds.length) {
598
+ return new Map();
599
+ }
600
+ const query = this.resolveQueryService();
601
+ if (!query?.graph) {
602
+ return new Map();
603
+ }
604
+ try {
605
+ const result = await query.graph({
606
+ entity: "product_variant",
607
+ fields: [
608
+ "id",
609
+ "width",
610
+ "length",
611
+ "height",
612
+ "weight",
613
+ "product_id",
614
+ "product.id",
615
+ "product.width",
616
+ "product.length",
617
+ "product.height",
618
+ "product.weight",
619
+ ],
620
+ filters: {
621
+ id: variantIds,
622
+ },
623
+ });
624
+ const dimensionMap = new Map();
625
+ for (const variant of result?.data ?? []) {
626
+ dimensionMap.set(String(variant.id), {
627
+ width: Number(variant.width) || Number(variant.product?.width) || 0,
628
+ length: Number(variant.length) || Number(variant.product?.length) || 0,
629
+ height: Number(variant.height) || Number(variant.product?.height) || 0,
630
+ weight: Number(variant.weight) || Number(variant.product?.weight) || 0,
631
+ product_id: variant.product_id ?? variant.product?.id,
632
+ });
633
+ }
634
+ return dimensionMap;
635
+ }
636
+ catch (error) {
637
+ this.logger_?.warn?.(`[ParcelFulfillment] Failed to preload variant dimensions: ${error?.message ?? error}`);
638
+ return new Map();
639
+ }
640
+ }
641
+ async loadProductStackableValues(items) {
642
+ const result = new Map();
643
+ if (!items?.length) {
644
+ return result;
645
+ }
646
+ const productIds = Array.from(new Set(items
647
+ .map((item) => this.extractProductId(item))
648
+ .filter((id) => Boolean(id))));
649
+ if (!productIds.length) {
650
+ return result;
651
+ }
652
+ if (!this.container_) {
653
+ return result;
654
+ }
655
+ let productExtensionService;
656
+ try {
657
+ // Resolve directly - Awilix container proxies all property access
658
+ productExtensionService = this.container_.resolve(PRODUCT_EXTENSION_MODULE);
659
+ }
660
+ catch (error) {
661
+ if (error?.name === "AwilixResolutionError" ||
662
+ error?.name === "ResolutionError") {
663
+ this.logger_?.debug?.("productExtension module not available; skipping stackable lookup.");
664
+ return result;
665
+ }
666
+ const message = `Failed to resolve productExtension module for stackable lookup: ${error?.message ?? error}`;
667
+ this.logger_?.warn?.(message);
668
+ return result;
669
+ }
670
+ if (!productExtensionService ||
671
+ typeof productExtensionService.listProductStackables !== "function") {
672
+ return result;
673
+ }
674
+ try {
675
+ const records = (await productExtensionService.listProductStackables({
676
+ product_id: productIds,
677
+ })) || [];
678
+ for (const entry of records) {
679
+ if (entry?.product_id) {
680
+ result.set(entry.product_id, entry.stackable ?? null);
681
+ }
682
+ }
683
+ }
684
+ catch (error) {
685
+ const message = `Failed to fetch stackable data from productExtension module: ${error?.message ?? error}`;
686
+ this.logger_?.warn?.(message);
687
+ }
688
+ return result;
689
+ }
690
+ resolveQueryService() {
691
+ if (!this.container_) {
692
+ return null;
693
+ }
694
+ try {
695
+ // Resolve directly - Awilix container proxies all property access
696
+ const query = this.container_.resolve(utils_1.ContainerRegistrationKeys.QUERY);
697
+ if (!query?.graph) {
698
+ return null;
699
+ }
700
+ return query;
701
+ }
702
+ catch (error) {
703
+ this.logger_?.debug?.(`[ParcelFulfillment] Query resolver not available: ${error?.message ?? error}`);
704
+ return null;
705
+ }
706
+ }
707
+ resolveFallbackDimensions(provided) {
708
+ return (this.normalizeFallbackDimensions(provided) ??
709
+ this.loadFallbackDimensionsFromEnv() ??
710
+ DEFAULT_FALLBACK_DIMENSIONS);
711
+ }
712
+ loadFallbackDimensionsFromEnv() {
713
+ const width = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_WIDTH_CM);
714
+ const length = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_LENGTH_CM);
715
+ const height = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_HEIGHT_CM);
716
+ const weight = this.toPositiveNumber(process.env.PARCEL_SHIPPING_FALLBACK_WEIGHT);
717
+ return this.normalizeFallbackDimensions({
718
+ width: width ?? undefined,
719
+ length: length ?? undefined,
720
+ height: height ?? undefined,
721
+ weight: weight ?? undefined,
722
+ });
723
+ }
724
+ normalizeFallbackDimensions(input) {
725
+ if (!input) {
726
+ return undefined;
727
+ }
728
+ const width = this.toPositiveNumber(input.width);
729
+ const length = this.toPositiveNumber(input.length);
730
+ const height = this.toPositiveNumber(input.height);
731
+ const weight = this.toPositiveNumber(input.weight);
732
+ if (!width && !length && !height && !weight) {
733
+ return undefined;
734
+ }
735
+ return {
736
+ width: width ?? DEFAULT_FALLBACK_DIMENSIONS.width,
737
+ length: length ?? DEFAULT_FALLBACK_DIMENSIONS.length,
738
+ height: height ?? DEFAULT_FALLBACK_DIMENSIONS.height,
739
+ weight: weight ?? DEFAULT_FALLBACK_DIMENSIONS.weight,
740
+ };
741
+ }
742
+ toPositiveNumber(value) {
743
+ if (value === undefined || value === null) {
744
+ return undefined;
745
+ }
746
+ const parsed = Number(value);
747
+ if (!Number.isFinite(parsed) || parsed <= 0) {
748
+ return undefined;
749
+ }
750
+ return parsed;
751
+ }
752
+ logFallbackDimensionsOnce(exampleItem) {
753
+ if (this.fallbackDimensionsWarned) {
754
+ return;
755
+ }
756
+ const identifier = exampleItem?.title ||
757
+ exampleItem?.variant?.title ||
758
+ exampleItem?.variant?.sku ||
759
+ "unknown item";
760
+ this.logger_?.warn?.(`[ParcelFulfillment] Missing product dimensions detected (e.g. ${identifier}). Using fallback ` +
761
+ `dimensions ${this.fallbackDimensions.length}x${this.fallbackDimensions.width}x${this.fallbackDimensions.height} ` +
762
+ `(cm) and fallback weight ${this.fallbackDimensions.weight}${this.weightUnit === "g" ? "g" : "kg"}. Update product or variant dimensions to improve shipping accuracy.`);
763
+ this.fallbackDimensionsWarned = true;
764
+ }
367
765
  normalizeWeight(weight) {
368
766
  if (!weight || !Number.isFinite(weight)) {
369
767
  return 0;
@@ -422,4 +820,4 @@ exports.ParcelFulfillmentProvider = ParcelFulfillmentProvider;
422
820
  ParcelFulfillmentProvider.identifier = "tha-shipping";
423
821
  ParcelFulfillmentProvider.displayName = "Thai Parcel Shipping";
424
822
  exports.default = ParcelFulfillmentProvider;
425
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyY2VsLWZ1bGZpbGxtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9wYXJjZWwtZnVsZmlsbG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR21DO0FBTW5DLGdFQUFvRTtBQTZCcEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSwwQ0FBa0M7SUFVL0UsWUFDRSxTQUFpRCxFQUNqRCxVQUFvQyxFQUFFO1FBRXRDLGFBQWE7UUFDYixLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQTRCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFVBQVUsQ0FDdEIsS0FBa0IsRUFDbEIsT0FBWSxFQUNaLFdBQXdCLEVBQ3hCLFdBQXdCO1FBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDcEMsS0FBSyxFQUNMLE9BQU8sRUFDUCxXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxD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
823
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyY2VsLWZ1bGZpbGxtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9wYXJjZWwtZnVsZmlsbG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBSW1DO0FBTW5DLGdFQUFvRTtBQTZCcEUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQztBQVFwRCxNQUFNLDJCQUEyQixHQUFvQjtJQUNuRCxLQUFLLEVBQUUsRUFBRTtJQUNULE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixNQUFNLEVBQUUsR0FBRyxFQUFFLDZEQUE2RDtDQUMzRSxDQUFDO0FBU0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSwwQ0FBa0M7SUFZL0UsWUFDRSxTQUFpRCxFQUNqRCxVQUFvQyxFQUFFO1FBRXRDLGFBQWE7UUFDYixLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQVBaLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQVN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQTRCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDdEQsT0FBTyxDQUFDLG1CQUFtQixDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFVBQVUsQ0FDdEIsS0FBa0IsRUFDbEIsT0FBWSxFQUNaLFdBQXdCLEVBQ3hCLFdBQXdCO1FBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDcEMsS0FBSyxFQUNMLE9BQU8sRUFDUCxXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLEtBQWtCLEVBQ2xCLE9BQVksRUFDWixXQUF3QixFQUN4QixXQUF3QjtRQUV4QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFeEMsT0FBTztZQUNMLEtBQUs7WUFDTCxnQkFBZ0IsRUFBRTtnQkFDaEIsY0FBYyxFQUNaLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDdkUsY0FBYyxFQUNaLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDdkUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxFQUFFO2dCQUN0QyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ2xELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDMUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNsQyxRQUFRLEVBQ04saUJBQWlCLENBQUMsUUFBUTtvQkFDMUIsaUJBQWlCLENBQUMsYUFBYTtvQkFDL0IsaUJBQWlCLENBQUMsS0FBSztvQkFDdkIsRUFBRTtnQkFDSixRQUFRLEVBQ04saUJBQWlCLENBQUMsUUFBUTtvQkFDMUIsaUJBQWlCLENBQUMsV0FBVztvQkFDN0IsaUJBQWlCLENBQUMsT0FBTztvQkFDekIsaUJBQWlCLENBQUMsR0FBRztvQkFDckIsRUFBRTtnQkFDSixPQUFPLEVBQ0wsaUJBQWlCLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFlBQVksSUFBSSxJQUFJO2FBQ3RFO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxXQUFXO2dCQUN6QixZQUFZLEVBQUUsV0FBVzthQUMxQjtZQUNELGlCQUFpQixFQUFFLEtBQUs7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQzdCLE9BQTZCO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsa0VBQWtFO1lBQ2xFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUMzQyx3Q0FBc0IsQ0FDdkIsQ0FBQztZQUVGLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUNqQixrRkFBa0YsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2hJLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsT0FBTyxNQUFNLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsSUFDRSxLQUFLLEVBQUUsSUFBSSxLQUFLLHVCQUF1QjtnQkFDdkMsS0FBSyxFQUFFLElBQUksS0FBSyxpQkFBaUIsRUFDakMsQ0FBQztnQkFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FDaEIsMkJBQTJCLHdDQUFzQixnREFBZ0QsQ0FDbEcsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUM3QixPQUE2QjtRQUU3QixnRkFBZ0Y7UUFDaEYsTUFBTSxXQUFXLEdBQXFCLElBQUksQ0FBQyxpQkFBaUI7WUFDMUQsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyw2REFBNkQ7UUFFckYsSUFBSSxTQUFTLEdBQTZCLElBQUksQ0FBQztRQUUvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQztnQkFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsS0FBMEIsQ0FBQztnQkFDOUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztnQkFFdkIsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FDaEIsdUJBQXVCLFVBQVUsQ0FBQyxNQUFNLGlDQUFpQyxDQUMxRSxDQUFDO29CQUNGLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLFVBQVUsR0FBRyxtQ0FBbUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDL0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1DQUFtQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQ3hELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQ2pCLDJEQUEyRCxpQkFBaUIsRUFBRSxDQUMvRSxDQUFDO1FBQ0YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsbUNBQW1DLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQzlCLEtBQXFCLEVBQ3JCLE9BQTZCO1FBRTdCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLFFBQVEsQ0FBQztRQUU1QyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FDaEIsNEJBQTRCLEtBQUssdUJBQXVCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLG1CQUFtQixPQUFPLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQzVKLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBMkI7WUFDdEMsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQyxDQUFDO1FBRUYsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hELE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTztZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUNyQixnQ0FBZ0MsS0FBSyxLQUFLLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQ3BELENBQUM7WUFDdkIsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBMEIsQ0FBQztJQUMxRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBd0I7UUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBELE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELCtFQUErRTtJQUMvRSx5Q0FBeUM7SUFDekMsK0VBQStFO0lBRS9FLEtBQUssQ0FBQyxxQkFBcUI7UUFDekIsT0FBTztZQUNMO2dCQUNFLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixJQUFJLEVBQUU7b0JBQ0osWUFBWSxFQUFFLGVBQWU7b0JBQzdCLFlBQVksRUFBRSxjQUFjO2lCQUM3QjthQUNGO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLFVBQVU7Z0JBQ2QsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsSUFBSSxFQUFFO29CQUNKLFlBQVksRUFBRSxlQUFlO29CQUM3QixZQUFZLEVBQUUsVUFBVTtpQkFDekI7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxlQUFlO2dCQUNuQixJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixJQUFJLEVBQUU7b0JBQ0osWUFBWSxFQUFFLGlCQUFpQjtvQkFDL0IsWUFBWSxFQUFFLGVBQWU7aUJBQzlCO2FBQ0Y7WUFDRDtnQkFDRSxFQUFFLEVBQUUsY0FBYztnQkFDbEIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsSUFBSSxFQUFFO29CQUNKLFlBQVksRUFBRSxpQkFBaUI7b0JBQy9CLFlBQVksRUFBRSxjQUFjO2lCQUM3QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsYUFBYTtJQUNiLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQTZCO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUEyQixDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUEyQixDQUFDO1FBRXJELE1BQU0saUJBQWlCLEdBQXNDO1lBQzNELENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQztZQUNqQyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUM7WUFDN0IsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUM7WUFDcEMsQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUM7U0FDcEMsQ0FBQztRQUVGLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUMzQixDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FDckIsT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLEtBQUssV0FBVyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FDM0IsVUFBbUMsRUFDbkMsSUFBNkIsRUFDN0IsT0FBdUM7UUFFdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwrQkFBK0IsQ0FDaEMsQ0FBQztRQUNKLENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsTUFBTSxhQUFhLEdBQUksVUFBVSxDQUFDLElBQVksSUFBSSxVQUFVLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQTJCLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQTJCLENBQUM7UUFFOUQsSUFBSSxDQUFDO1lBQ0gsMkRBQTJEO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FDbEMsVUFBVSxFQUNWLE9BQU8sRUFBRSxnQkFBZ0IsRUFDekIsV0FBVyxFQUNYLFdBQVcsQ0FDWixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU07b0JBQ3JCLDJDQUEyQyxDQUM5QyxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDcEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixlQUFlLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ2hDLFdBQVcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN0QyxlQUFlLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO2FBQzlDLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixLQUFLLENBQUMsT0FBTyxJQUFJLHdDQUF3QyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsdUNBQXVDO0lBQ3ZDLCtFQUErRTtJQUUvRSxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUNsQixVQUFtQyxFQUNuQyxJQUE2QixFQUM3QixPQUE0QztRQUU1QyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FDaEIsMENBQTBDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDdkUsQ0FBQztRQUVGLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixvREFBb0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVGLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixpREFBaUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3RGLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQiwwQ0FBMEMsTUFBTSxJQUFJLFdBQVcsRUFBRSxDQUNsRSxDQUFDO1FBRUYsMkNBQTJDO1FBQzNDLElBQUssT0FBZSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ2xCLDhDQUErQyxPQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQ2hHLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5Q0FBeUMsQ0FDMUMsQ0FBQztRQUNKLENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsTUFBTSxhQUFhLEdBQUksVUFBVSxDQUFDLElBQVksSUFBSSxVQUFVLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQTJCLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQTJCLENBQUM7UUFFOUQsSUFBSSxDQUFDO1lBQ0gsMkRBQTJEO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FDbEMsVUFBVSxFQUNWLE9BQU8sRUFBRSxnQkFBZ0IsRUFDekIsV0FBVyxFQUNYLFdBQVcsQ0FDWixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSwrQkFBK0IsQ0FDM0QsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPO2dCQUNMLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDeEMsaUNBQWlDLEVBQUUsS0FBSzthQUN6QyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsS0FBSyxDQUFDLE9BQU8sSUFBSSxvQ0FBb0MsQ0FDdEQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLHVCQUF1QjtJQUN2QiwrRUFBK0U7SUFFL0UsS0FBSyxDQUFDLGlCQUFpQixDQUNyQixJQUE2QjtRQUU3QixNQUFNLGFBQWEsR0FBRyxVQUFVLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFzQixDQUFDO1FBRW5ELDBEQUEwRDtRQUMxRCw0QkFBNEI7UUFDNUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQ3hELGNBQWMsRUFBRSxZQUFZLENBQzdCLENBQUM7UUFFRixPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLGNBQWMsRUFBRSxhQUFhO2dCQUM3QixZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVk7Z0JBQzFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWTtnQkFDMUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNyQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLGFBQWEsRUFBRSxjQUFjLEVBQUUsS0FBSztnQkFDcEMsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLElBQUksS0FBSztnQkFDM0MsZUFBZSxFQUFFLGtCQUFrQjtnQkFDbkMsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDcEMsUUFBUSxFQUFFO29CQUNSLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYTtvQkFDNUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhO29CQUM1QyxZQUFZLEVBQUUsY0FBYyxFQUFFLFlBQVk7b0JBQzFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWTtpQkFDM0M7YUFDRjtZQUNELE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLGVBQXdDO1FBRXhDLHNEQUFzRDtRQUN0RCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFdBQVc7WUFDbkIsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixlQUF3QztRQUV4QyxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFFcEQsT0FBTztZQUNMLElBQUksRUFBRTtnQkFDSixjQUFjLEVBQUUsYUFBYTtnQkFDN0IsWUFBWSxFQUFFLGVBQWUsQ0FBQyxZQUFZO2dCQUMxQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFlBQVk7Z0JBQzFDLE1BQU0sRUFBRSxJQUFJO2dCQUNaLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3JDO1lBQ0QsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELCtFQUErRTtJQUMvRSxpQkFBaUI7SUFDakIsK0VBQStFO0lBRXJFLEtBQUssQ0FBQyxtQkFBbUIsQ0FDakMsT0FFdUM7UUFFdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIseUVBQXlFLE1BQU0sSUFBSSxTQUFTLElBQUk7Z0JBQzlGLGlCQUFpQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0QsQ0FBQztZQUNGLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLE1BQU0sdUJBQXVCLENBQUMsQ0FBQztRQUV0RSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQVcsQ0FBQztZQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsU0FBUztZQUNYLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsTUFBTSx5QkFBeUIsR0FBRyxTQUFTO2dCQUN6QyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLDhEQUE4RDtZQUM5RCxNQUFNLFNBQVMsR0FDYixNQUFNLENBQ0osUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNO2dCQUN2QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU07Z0JBQ2xDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDekIsQ0FBQyxDQUNKLElBQUksQ0FBQyxDQUFDO1lBQ1QsTUFBTSxZQUFZLEdBQ2hCLFNBQVM7Z0JBQ1QseUJBQXlCLEVBQUUsTUFBTTtnQkFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNqQyxNQUFNLDBCQUEwQixHQUM5QixDQUFDLFNBQVMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztZQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWxELE1BQU0sVUFBVSxHQUNkLE1BQU0sQ0FDSixRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLO2dCQUNqQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUs7Z0JBQ3hCLENBQUMsQ0FDSixJQUFJLENBQUMsQ0FBQztZQUNULE1BQU0sVUFBVSxHQUNkLFVBQVU7Z0JBQ1YseUJBQXlCLEVBQUUsS0FBSztnQkFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUNoQyxNQUFNLHlCQUF5QixHQUM3QixDQUFDLFVBQVUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQztZQUVuRCxNQUFNLFdBQVcsR0FDZixNQUFNLENBQ0osUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNO2dCQUN2QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU07Z0JBQ2xDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDekIsQ0FBQyxDQUNKLElBQUksQ0FBQyxDQUFDO1lBQ1QsTUFBTSxXQUFXLEdBQ2YsV0FBVztnQkFDWCx5QkFBeUIsRUFBRSxNQUFNO2dCQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQ2pDLE1BQU0sMEJBQTBCLEdBQzlCLENBQUMsV0FBVyxJQUFJLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDO1lBRXJELE1BQU0sV0FBVyxHQUNmLE1BQU0sQ0FDSixRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU07Z0JBQ3ZCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDbEMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNO2dCQUN6QixDQUFDLENBQ0osSUFBSSxDQUFDLENBQUM7WUFDVCxNQUFNLFdBQVcsR0FDZixXQUFXO2dCQUNYLHlCQUF5QixFQUFFLE1BQU07Z0JBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDakMsTUFBTSwwQkFBMEIsR0FDOUIsQ0FBQyxXQUFXLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUM7WUFFckQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzRCxTQUFTO1lBQ1gsQ0FBQztZQUVELElBQ0UseUJBQXlCO2dCQUN6QiwwQkFBMEI7Z0JBQzFCLDBCQUEwQjtnQkFDMUIsMEJBQTBCLEVBQzFCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxtQ0FBbUM7WUFDbkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUNyQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQ3BFLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sSUFBSSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FDcEUsQ0FBQztZQUNGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsU0FBUyxJQUFJLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxTQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxJQUFJLFNBQVMsR0FDWCxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLElBQUksUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7WUFFMUUsSUFDRSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssRUFBRSxDQUFDO2dCQUNuRSxTQUFTO2dCQUNULFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQzNCLENBQUM7Z0JBQ0QsU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUE0QixFQUFFLENBQUM7WUFFL0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1lBQ0QsK0RBQStEO1lBQy9ELElBQUksU0FBUyxLQUFLLFNBQVMsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEUsVUFBVSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7WUFDbEQsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHO2dCQUNoQixHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksUUFBUSxFQUFFLEdBQUcsSUFBSSxTQUFTO2dCQUN6RCxLQUFLLEVBQUUsVUFBVTtnQkFDakIsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixNQUFNO2dCQUNOLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3hFLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQ2hCLGFBQWEsVUFBVSxDQUFDLE1BQU0sMkJBQTJCLENBQzFELENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRVMsS0FBSyxDQUFDLHdCQUF3QixDQUN0QyxPQUV1QztRQUV2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQ25CLDhCQUE4QixTQUFTLENBQUMsTUFBTSxrQ0FBa0MsQ0FDakYsQ0FBQztZQUNGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixxREFBcUQsTUFBTSw2QkFBNkIsQ0FDekYsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FDbEIsMkVBQTJFLENBQzVFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRVMsS0FBSyxDQUFDLHdCQUF3QixDQUN0QyxPQUV1QztRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFjO1FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIsNERBQTRELE1BQU0sc0JBQXNCLENBQ3pGLENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQiw4Q0FBOEMsTUFBTSxxQkFBcUIsQ0FDMUUsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDL0IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsQ0FBQztnQkFDdkUsT0FBTyxFQUFFO29CQUNQLEVBQUUsRUFBRSxNQUFNO2lCQUNYO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ2xCLGdEQUFnRCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FDekcsQ0FBQztZQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQiw0QkFBNEIsTUFBTSxrQ0FBa0MsQ0FDckUsQ0FBQztZQUNGLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIsMkNBQTJDLE1BQU0sV0FDL0MsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUNwQixZQUFZLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLENBQ3BDLENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRVMsYUFBYSxDQUNyQixPQUV1QyxFQUN2QyxJQUE4QjtRQUU5QixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFtQjtZQUN0QywwREFBMEQ7WUFDMUQsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNYLElBQUksRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN2QixxQkFBcUI7WUFDcEIsT0FBZSxFQUFFLE9BQU87WUFDeEIsT0FBZSxFQUFFLE1BQU07WUFDdkIsT0FBZSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pCLE9BQWUsRUFBRSxJQUFJLEVBQUUsT0FBTztZQUM5QixPQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU07WUFDN0IsT0FBZSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUMvQixPQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDL0IsT0FBZSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQzlCLE9BQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDaEMsT0FBZSxFQUFFLFdBQVcsRUFBRSxPQUFPO1lBQ3JDLE9BQWUsRUFBRSxXQUFXLEVBQUUsTUFBTTtZQUNwQyxPQUFlLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFO1NBQ3hDLENBQUM7UUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNQLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLEtBQUssR0FDUixPQUFlLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUUsT0FBZSxFQUFFLEtBQUssQ0FBQztZQUMvRCxDQUFDLENBQUcsT0FBZSxDQUFDLEtBQWU7WUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FDWixhQUFhLEVBQUUsT0FBTztZQUN0QixhQUFhLEVBQUUsTUFBTTtZQUNyQixhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFUyxtQkFBbUIsQ0FDM0IsT0FFdUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUc7WUFDaEIsT0FBZSxDQUFDLEtBQUs7WUFDckIsT0FBZSxDQUFDLElBQUksRUFBRSxLQUFLO1lBQzNCLE9BQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSztZQUM1QixPQUFlLENBQUMsV0FBVyxFQUFFLEtBQUs7WUFDbEMsT0FBZSxDQUFDLElBQUksRUFBRSxLQUFLO1NBQzdCLENBQUM7UUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUUsT0FBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBUSxPQUFlLENBQUMsS0FBSyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxRQUFhO1FBQ3RDLE1BQU0sU0FBUyxHQUNiLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVTtZQUM3QixRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVM7WUFDNUIsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM5QixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsU0FBUztZQUNuQixRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDckIsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVO1lBQzdCLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO1FBRWpDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsUUFBYTtRQUN0QyxNQUFNLFNBQVMsR0FDYixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsU0FBUztZQUNuQixRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDckIsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVO1lBQzdCLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO1FBRWpDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRVMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQVk7UUFZaEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDM0IsSUFBSSxHQUFHLENBQ0wsS0FBSzthQUNGLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDL0IsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsTUFBTSxFQUFFO29CQUNOLElBQUk7b0JBQ0osT0FBTztvQkFDUCxRQUFRO29CQUNSLFFBQVE7b0JBQ1IsUUFBUTtvQkFDUixZQUFZO29CQUNaLFlBQVk7b0JBQ1osZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtvQkFDaEIsZ0JBQWdCO2lCQUNqQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsRUFBRSxFQUFFLFVBQVU7aUJBQ2Y7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFTekIsQ0FBQztZQUVKLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDekMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNuQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNuRSxNQUFNLEVBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNoRSxNQUFNLEVBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNoRSxNQUFNLEVBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNoRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7aUJBQ3RELENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQiw2REFDRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQ3BCLEVBQUUsQ0FDSCxDQUFDO1lBQ0YsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLDBCQUEwQixDQUN4QyxLQUFZO1FBRVosTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFFaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDM0IsSUFBSSxHQUFHLENBQ0wsS0FBSzthQUNGLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLHVCQUE0QixDQUFDO1FBRWpDLElBQUksQ0FBQztZQUNILGtFQUFrRTtZQUNsRSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FDL0Msd0JBQXdCLENBQ3pCLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixJQUNFLEtBQUssRUFBRSxJQUFJLEtBQUssdUJBQXVCO2dCQUN2QyxLQUFLLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixFQUNqQyxDQUFDO2dCQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQ25CLG1FQUFtRSxDQUNwRSxDQUFDO2dCQUNGLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxtRUFBbUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM3RyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUNFLENBQUMsdUJBQXVCO1lBQ3hCLE9BQU8sdUJBQXVCLENBQUMscUJBQXFCLEtBQUssVUFBVSxFQUNuRSxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUNYLENBQUMsTUFBTSx1QkFBdUIsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDbkQsVUFBVSxFQUFFLFVBQVU7YUFDdkIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRVosS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sT0FBTyxHQUFHLGdFQUFnRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxrRUFBa0U7WUFDbEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUNuQixxREFDRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQ3BCLEVBQUUsQ0FDSCxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVTLHlCQUF5QixDQUNqQyxRQUEwRDtRQUUxRCxPQUFPLENBQ0wsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQztZQUMxQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDcEMsMkJBQTJCLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRVMsNkJBQTZCO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FDOUMsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FDL0MsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FDL0MsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FDNUMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDO1lBQ3RDLEtBQUssRUFBRSxLQUFLLElBQUksU0FBUztZQUN6QixNQUFNLEVBQUUsTUFBTSxJQUFJLFNBQVM7WUFDM0IsTUFBTSxFQUFFLE1BQU0sSUFBSSxTQUFTO1lBQzNCLE1BQU0sRUFBRSxNQUFNLElBQUksU0FBUztTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsMkJBQTJCLENBQ25DLEtBQXVDO1FBRXZDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLElBQUksMkJBQTJCLENBQUMsS0FBSztZQUNqRCxNQUFNLEVBQUUsTUFBTSxJQUFJLDJCQUEyQixDQUFDLE1BQU07WUFDcEQsTUFBTSxFQUFFLE1BQU0sSUFBSSwyQkFBMkIsQ0FBQyxNQUFNO1lBQ3BELE1BQU0sRUFBRSxNQUFNLElBQUksMkJBQTJCLENBQUMsTUFBTTtTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQWM7UUFDdkMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLHlCQUF5QixDQUFDLFdBQWlCO1FBQ25ELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FDZCxXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUs7WUFDM0IsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHO1lBQ3pCLGNBQWMsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixpRUFBaUUsVUFBVSxvQkFBb0I7WUFDN0YsY0FBYyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRztZQUNsSCw0QkFBNEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FDeEQsSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFDbEMsc0VBQXNFLENBQ3pFLENBQUM7UUFDRixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxlQUFlLENBQUMsTUFBYztRQUN0QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLGdCQUFnQixDQUFDLE9BQVk7UUFLckMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMkJBQTJCLENBQzVCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQ1osTUFBTSxDQUNKLE9BQU8sQ0FBQyxRQUFRO1lBQ2QsT0FBTyxDQUFDLGFBQWE7WUFDckIsT0FBTyxDQUFDLEtBQUs7WUFDYixPQUFPLENBQUMsSUFBSTtZQUNaLEVBQUUsQ0FDTCxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FDWixNQUFNLENBQ0osT0FBTyxDQUFDLFdBQVc7WUFDakIsT0FBTyxDQUFDLFFBQVE7WUFDaEIsT0FBTyxDQUFDLE9BQU87WUFDZixPQUFPLENBQUMsR0FBRztZQUNYLEVBQUUsQ0FDTCxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQ3BCLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQzlDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNDQUFzQyxDQUN2QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGtDQUFrQyxDQUNuQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU87WUFDTCxRQUFRO1lBQ1IsUUFBUTtZQUNSLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQixDQUFDLFdBQXdCO1FBQ3pELE1BQU0sTUFBTSxHQUFnQztZQUMxQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixhQUFhLEVBQUUsSUFBSTtZQUNuQixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO2FBQzdDLFFBQVEsRUFBRTthQUNWLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFcEIsT0FBTyxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7QUEzc0NILDhEQTRzQ0M7QUEzc0NRLG9DQUFVLEdBQUcsY0FBYyxBQUFqQixDQUFrQjtBQUM1QixxQ0FBVyxHQUFHLHNCQUFzQixBQUF6QixDQUEwQjtBQTRzQzlDLGtCQUFlLHlCQUF5QixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-parcel-shipping",
3
- "version": "0.4.12",
3
+ "version": "0.4.16",
4
4
  "description": "Parcel box selection and Thailand shipping quotes for Medusa.",
5
5
  "author": "LodashVenture",
6
6
  "license": "MIT",