@lodashventure/medusa-login-provider 4.1.3 → 4.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/index.js +17 -1
- package/.medusa/server/src/providers/line/customer-helper.js +152 -0
- package/.medusa/server/src/providers/line/index.js +3 -2
- package/.medusa/server/src/providers/line/redis-helper.js +132 -0
- package/.medusa/server/src/providers/line/service.js +71 -77
- package/package.json +3 -1
- package/.medusa/server/src/providers/line/__tests__/line-api.mock.test.js +0 -472
- package/.medusa/server/src/providers/line/__tests__/service.test.js +0 -438
- package/.medusa/server/src/providers/line/__tests__/utils.test.js +0 -351
|
@@ -6,20 +6,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const utils_1 = require("@medusajs/framework/utils");
|
|
7
7
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
8
|
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
+
const redis_helper_1 = require("./redis-helper");
|
|
9
10
|
class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
10
|
-
constructor(
|
|
11
|
+
constructor(dependencies, options) {
|
|
11
12
|
super();
|
|
12
13
|
this.LINE_TOKEN_ENDPOINT = "https://api.line.me/oauth2/v2.1/token";
|
|
13
14
|
this.LINE_PROFILE_ENDPOINT = "https://api.line.me/v2/profile";
|
|
14
|
-
this.
|
|
15
|
-
this.LINE_JWKS_ENDPOINT = "https://api.line.me/oauth2/v2.1/certs";
|
|
16
|
-
this.logger_ = logger;
|
|
15
|
+
this.logger_ = dependencies.logger;
|
|
17
16
|
this.options_ = {
|
|
18
17
|
autoCreateCustomer: true,
|
|
19
18
|
syncProfileData: true,
|
|
19
|
+
storeUnlinkedInRedis: true,
|
|
20
20
|
...options,
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
// Initialize Redis helper if Redis URL is provided
|
|
23
|
+
if (this.options_.redisUrl && this.options_.storeUnlinkedInRedis) {
|
|
24
|
+
this.redisHelper = new redis_helper_1.LineRedisHelper(this.options_.redisUrl, this.logger_);
|
|
25
|
+
}
|
|
23
26
|
}
|
|
24
27
|
static validateOptions(options) {
|
|
25
28
|
if (!options.lineChannelId) {
|
|
@@ -29,7 +32,7 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
29
32
|
throw new Error("line channel secret is required");
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
|
-
async register(
|
|
35
|
+
async register(_data, _authIdentityService) {
|
|
33
36
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Line does not support registration. Use method `authenticate` instead.");
|
|
34
37
|
}
|
|
35
38
|
async authenticate(data, authIdentityService) {
|
|
@@ -43,23 +46,18 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
43
46
|
}
|
|
44
47
|
const stateKey = crypto_1.default.randomBytes(32).toString("hex");
|
|
45
48
|
// Use Medusa's native callback URL pattern
|
|
46
|
-
const baseUrl = body?.callback_url
|
|
47
|
-
const callbackUrl = baseUrl?.includes('/auth/customer/line/callback')
|
|
48
|
-
? baseUrl
|
|
49
|
-
: `${baseUrl}/auth/customer/line/callback`;
|
|
49
|
+
const baseUrl = body?.callback_url;
|
|
50
50
|
const state = {
|
|
51
|
-
callback_url:
|
|
52
|
-
success_redirect: body?.success_redirect || this.options_.successRedirect || '/',
|
|
53
|
-
failure_redirect: body?.failure_redirect || this.options_.failureRedirect || '/login',
|
|
51
|
+
callback_url: baseUrl,
|
|
54
52
|
};
|
|
55
53
|
await authIdentityService.setState(stateKey, state);
|
|
56
|
-
return this.getRedirect(this.options_.lineChannelId,
|
|
54
|
+
return this.getRedirect(this.options_.lineChannelId, baseUrl, stateKey);
|
|
57
55
|
}
|
|
58
56
|
async validateCallback(req, authIdentityService) {
|
|
59
57
|
const query = req.query ?? {};
|
|
60
58
|
const body = req.body ?? {};
|
|
61
59
|
if (query.error) {
|
|
62
|
-
this.logger_.error(`LINE OAuth error: ${query.error}`);
|
|
60
|
+
this.logger_.error(`LINE OAuth error: ${query.error} - ${query.error_description} - ${query.error_uri} - state: ${query.state}`);
|
|
63
61
|
return {
|
|
64
62
|
success: false,
|
|
65
63
|
error: `${query.error_description}, read more at: ${query.error_uri}`,
|
|
@@ -67,29 +65,51 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
67
65
|
}
|
|
68
66
|
const code = query?.code ?? body?.code;
|
|
69
67
|
if (!code) {
|
|
68
|
+
this.logger_.error(`LINE callback validation failed: No authorization code provided - query: ${JSON.stringify(query)} - body: ${JSON.stringify(body)}`);
|
|
70
69
|
return { success: false, error: "No authorization code provided" };
|
|
71
70
|
}
|
|
72
71
|
const stateKey = query?.state ?? body?.state;
|
|
73
72
|
if (!stateKey) {
|
|
73
|
+
this.logger_.error(`LINE callback validation failed: No state parameter provided - code: ${code ? "present" : "missing"}`);
|
|
74
74
|
return { success: false, error: "No state parameter provided" };
|
|
75
75
|
}
|
|
76
76
|
const state = await authIdentityService.getState(stateKey);
|
|
77
77
|
if (!state) {
|
|
78
|
+
this.logger_.error(`LINE callback validation failed: Invalid state or session expired - stateKey: ${stateKey}`);
|
|
78
79
|
return { success: false, error: "Invalid state or session expired" };
|
|
79
80
|
}
|
|
80
81
|
try {
|
|
82
|
+
this.logger_.info(`Starting LINE token exchange - hasCode: ${!!code}, hasState: ${!!stateKey}`);
|
|
81
83
|
const tokenResponse = await this.exchangeCodeForTokens(code, state.callback_url);
|
|
84
|
+
this.logger_.info("LINE token exchange successful, verifying ID token");
|
|
82
85
|
const idTokenPayload = await this.verifyIdToken(tokenResponse.id_token);
|
|
86
|
+
this.logger_.info("ID token verified, fetching user profile");
|
|
83
87
|
const profile = await this.fetchUserProfile(tokenResponse.access_token);
|
|
84
|
-
|
|
88
|
+
this.logger_.info(`LINE user profile fetched successfully - userId: ${profile.userId}, displayName: ${profile.displayName}, hasEmail: ${!!idTokenPayload.email}`);
|
|
89
|
+
const { authIdentity } = await this.findOrCreateAuthIdentity(idTokenPayload, profile, tokenResponse, authIdentityService);
|
|
90
|
+
// Store in Redis using auth_identity_id as key for easy retrieval
|
|
91
|
+
if (this.redisHelper && !authIdentity.app_metadata?.customer_id) {
|
|
92
|
+
await this.redisHelper.storePendingCustomer(authIdentity.id, {
|
|
93
|
+
line_user_id: profile.userId,
|
|
94
|
+
email: idTokenPayload.email,
|
|
95
|
+
display_name: profile.displayName,
|
|
96
|
+
picture_url: profile.pictureUrl,
|
|
97
|
+
status_message: profile.statusMessage,
|
|
98
|
+
name: idTokenPayload.name,
|
|
99
|
+
auth_identity_id: authIdentity.id,
|
|
100
|
+
});
|
|
101
|
+
this.logger_.info(`Stored pending customer in Redis with auth_id: ${authIdentity.id}`);
|
|
102
|
+
}
|
|
85
103
|
return {
|
|
86
104
|
success: true,
|
|
87
105
|
authIdentity,
|
|
88
106
|
};
|
|
89
107
|
}
|
|
90
108
|
catch (error) {
|
|
91
|
-
|
|
92
|
-
|
|
109
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
110
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
111
|
+
this.logger_.error(`LINE callback validation failed: ${errorMessage} - code: ${code ? "present" : "missing"}, state: ${stateKey ? "present" : "missing"}, stack: ${errorStack}`);
|
|
112
|
+
return { success: false, error: errorMessage };
|
|
93
113
|
}
|
|
94
114
|
}
|
|
95
115
|
async exchangeCodeForTokens(code, redirectUri) {
|
|
@@ -108,6 +128,7 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
108
128
|
});
|
|
109
129
|
if (!response.ok) {
|
|
110
130
|
const errorData = await response.text();
|
|
131
|
+
this.logger_.error(`LINE token exchange failed - status: ${response.status}, statusText: ${response.statusText}, errorData: ${errorData}, clientId: ${this.options_.lineChannelId}`);
|
|
111
132
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to exchange authorization code: ${response.status} ${errorData}`);
|
|
112
133
|
}
|
|
113
134
|
return response.json();
|
|
@@ -138,6 +159,7 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
138
159
|
});
|
|
139
160
|
if (!response.ok) {
|
|
140
161
|
const errorData = await response.text();
|
|
162
|
+
this.logger_.error(`Failed to fetch LINE profile - status: ${response.status}, statusText: ${response.statusText}, errorData: ${errorData}`);
|
|
141
163
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to fetch LINE profile: ${response.status} ${errorData}`);
|
|
142
164
|
}
|
|
143
165
|
return response.json();
|
|
@@ -145,6 +167,11 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
145
167
|
async findOrCreateAuthIdentity(idTokenPayload, profile, tokenResponse, authIdentityService) {
|
|
146
168
|
const entity_id = profile.userId;
|
|
147
169
|
const userMetadata = {
|
|
170
|
+
// New format for consistency
|
|
171
|
+
userId: profile.userId,
|
|
172
|
+
displayName: profile.displayName,
|
|
173
|
+
pictureUrl: profile.pictureUrl,
|
|
174
|
+
// Legacy format for backwards compatibility
|
|
148
175
|
line_user_id: profile.userId,
|
|
149
176
|
display_name: profile.displayName,
|
|
150
177
|
picture_url: profile.pictureUrl,
|
|
@@ -152,78 +179,47 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
152
179
|
email: idTokenPayload.email,
|
|
153
180
|
name: idTokenPayload.name || profile.displayName,
|
|
154
181
|
picture: idTokenPayload.picture || profile.pictureUrl,
|
|
182
|
+
first_name: (idTokenPayload.name || profile.displayName || "").split(" ")[0] ||
|
|
183
|
+
profile.displayName,
|
|
184
|
+
last_name: (idTokenPayload.name || profile.displayName || "")
|
|
185
|
+
.split(" ")
|
|
186
|
+
.slice(1)
|
|
187
|
+
.join(" ") || "",
|
|
188
|
+
needs_customer_creation: this.options_.autoCreateCustomer,
|
|
189
|
+
};
|
|
190
|
+
// Store tokens in provider metadata for potential later use
|
|
191
|
+
const providerMetadata = {
|
|
192
|
+
access_token: tokenResponse.access_token,
|
|
193
|
+
refresh_token: tokenResponse.refresh_token,
|
|
194
|
+
expires_in: tokenResponse.expires_in,
|
|
195
|
+
token_type: tokenResponse.token_type,
|
|
196
|
+
scope: tokenResponse.scope,
|
|
155
197
|
};
|
|
156
198
|
let authIdentity;
|
|
157
|
-
let customer;
|
|
158
199
|
try {
|
|
159
200
|
authIdentity = await authIdentityService.retrieve({ entity_id });
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
customer = await this.findCustomerByLineId(profile.userId);
|
|
165
|
-
}
|
|
201
|
+
authIdentity = await authIdentityService.update(entity_id, {
|
|
202
|
+
user_metadata: userMetadata,
|
|
203
|
+
provider_metadata: providerMetadata,
|
|
204
|
+
});
|
|
166
205
|
}
|
|
167
206
|
catch (error) {
|
|
168
207
|
if (error.type === utils_1.MedusaError.Types.NOT_FOUND) {
|
|
208
|
+
this.logger_.info(`Creating new auth identity for LINE user - entity_id: ${entity_id}, displayName: ${userMetadata.display_name}, email: ${userMetadata.email || `line_${entity_id}@line.me`}`);
|
|
169
209
|
authIdentity = await authIdentityService.create({
|
|
170
210
|
entity_id,
|
|
171
211
|
user_metadata: userMetadata,
|
|
212
|
+
provider_metadata: providerMetadata,
|
|
172
213
|
});
|
|
173
|
-
|
|
174
|
-
customer = await this.createCustomerFromLineProfile(profile, idTokenPayload);
|
|
175
|
-
}
|
|
214
|
+
this.logger_.info(`Auth identity created successfully - authIdentityId: ${authIdentity.id}, entity_id: ${entity_id}`);
|
|
176
215
|
}
|
|
177
216
|
else {
|
|
217
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
218
|
+
this.logger_.error(`Failed to find or create auth identity - error: ${errorMessage}, entity_id: ${entity_id}`);
|
|
178
219
|
throw error;
|
|
179
220
|
}
|
|
180
221
|
}
|
|
181
|
-
return { authIdentity
|
|
182
|
-
}
|
|
183
|
-
async findCustomerByLineId(lineUserId) {
|
|
184
|
-
if (!this.customerService_) {
|
|
185
|
-
return null;
|
|
186
|
-
}
|
|
187
|
-
try {
|
|
188
|
-
const [customers] = await this.customerService_.listAndCount({
|
|
189
|
-
metadata: {
|
|
190
|
-
line_user_id: lineUserId,
|
|
191
|
-
},
|
|
192
|
-
}, {});
|
|
193
|
-
return customers.length > 0 ? customers[0] : null;
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
this.logger_.error("Failed to find customer by LINE ID:", error);
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
async createCustomerFromLineProfile(profile, idTokenPayload) {
|
|
201
|
-
if (!this.customerService_) {
|
|
202
|
-
return null;
|
|
203
|
-
}
|
|
204
|
-
const email = idTokenPayload.email || `line-${profile.userId}@line.local`;
|
|
205
|
-
const [firstName, ...lastNameParts] = profile.displayName.split(" ");
|
|
206
|
-
const lastName = lastNameParts.join(" ") || "";
|
|
207
|
-
try {
|
|
208
|
-
const customer = await this.customerService_.create({
|
|
209
|
-
email,
|
|
210
|
-
first_name: firstName,
|
|
211
|
-
last_name: lastName,
|
|
212
|
-
metadata: {
|
|
213
|
-
channel: "line",
|
|
214
|
-
line_user_id: profile.userId,
|
|
215
|
-
line_display_name: profile.displayName,
|
|
216
|
-
line_picture_url: profile.pictureUrl,
|
|
217
|
-
created_via: "line_oauth",
|
|
218
|
-
},
|
|
219
|
-
});
|
|
220
|
-
this.logger_.info(`Created new customer from LINE profile: ${customer.id}`);
|
|
221
|
-
return customer;
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
this.logger_.error("Failed to create customer from LINE profile:", error);
|
|
225
|
-
return null;
|
|
226
|
-
}
|
|
222
|
+
return { authIdentity };
|
|
227
223
|
}
|
|
228
224
|
async refreshToken(refreshToken) {
|
|
229
225
|
try {
|
|
@@ -279,12 +275,10 @@ class LineProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
|
279
275
|
authUrl.searchParams.set("redirect_uri", callbackUrl);
|
|
280
276
|
authUrl.searchParams.set("state", stateKey);
|
|
281
277
|
authUrl.searchParams.set("nonce", nonce);
|
|
282
|
-
authUrl.searchParams.set("prompt", "consent");
|
|
283
|
-
authUrl.searchParams.set("max_age", "0");
|
|
284
278
|
return { success: true, location: authUrl.toString() };
|
|
285
279
|
}
|
|
286
280
|
}
|
|
287
281
|
LineProviderService.identifier = "line";
|
|
288
282
|
LineProviderService.DISPLAY_NAME = "LINE";
|
|
289
283
|
exports.default = LineProviderService;
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbGluZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBR21DO0FBT25DLGdFQUErQztBQUMvQyxvREFBNEI7QUErQzVCLE1BQU0sbUJBQW9CLFNBQVEsa0NBQTBCO0lBVzFELFlBQ0UsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUF3QixFQUNqRCxPQUFnQjtRQUVoQixLQUFLLEVBQUUsQ0FBQztRQVRPLHdCQUFtQixHQUFHLHVDQUF1QyxDQUFDO1FBQzlELDBCQUFxQixHQUFHLGdDQUFnQyxDQUFDO1FBQ3pELHlCQUFvQixHQUFHLHdDQUF3QyxDQUFDO1FBQ2hFLHVCQUFrQixHQUFHLHVDQUF1QyxDQUFDO1FBUTVFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXlCO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FDWixJQUF5QixFQUN6QixtQkFBZ0Q7UUFFaEQsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdB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
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbGluZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBR21DO0FBT25DLGdFQUErQztBQUMvQyxvREFBNEI7QUFDNUIsaURBQWlEO0FBK0NqRCxNQUFNLG1CQUFvQixTQUFRLGtDQUEwQjtJQVUzRCxZQUFZLFlBQWtDLEVBQUUsT0FBZ0I7UUFDL0QsS0FBSyxFQUFFLENBQUM7UUFMUSx3QkFBbUIsR0FDbkMsdUNBQXVDLENBQUM7UUFDeEIsMEJBQXFCLEdBQUcsZ0NBQWdDLENBQUM7UUFLekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsR0FBRyxPQUFPO1NBQ1YsQ0FBQztRQUVGLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksOEJBQWUsQ0FDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQ3RCLElBQUksQ0FBQyxPQUFPLENBQ1osQ0FBQztRQUNILENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUF5QjtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodashventure/medusa-login-provider",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.5",
|
|
4
4
|
"description": "A starter for Medusa plugins.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -95,6 +95,8 @@
|
|
|
95
95
|
"node": ">=20"
|
|
96
96
|
},
|
|
97
97
|
"dependencies": {
|
|
98
|
+
"@types/ioredis": "^4.28.10",
|
|
99
|
+
"ioredis": "^5.8.0",
|
|
98
100
|
"jsonwebtoken": "^9.0.2"
|
|
99
101
|
}
|
|
100
102
|
}
|