@cdklabs/cdk-ecs-codedeploy 0.0.257 → 0.0.259
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/.jsii +4 -4
- package/API.md +18 -0
- package/lib/api-canary/index.js +3 -3
- package/lib/ecs-appspec/index.js +1 -1
- package/lib/ecs-deployment/index.js +1 -1
- package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
- package/node_modules/@aws-sdk/client-codedeploy/dist-cjs/index.js +40 -80
- package/node_modules/@aws-sdk/client-codedeploy/dist-es/protocols/Aws_json1_1.js +1 -40
- package/node_modules/@aws-sdk/client-codedeploy/package.json +4 -4
- package/node_modules/@aws-sdk/client-sso/dist-cjs/index.js +6 -46
- package/node_modules/@aws-sdk/client-sso/dist-es/protocols/Aws_restJson1.js +1 -40
- package/node_modules/@aws-sdk/client-sso/package.json +2 -2
- package/node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js +7 -47
- package/node_modules/@aws-sdk/client-sso-oidc/dist-es/protocols/Aws_restJson1.js +1 -40
- package/node_modules/@aws-sdk/client-sso-oidc/package.json +4 -4
- package/node_modules/@aws-sdk/client-sts/dist-cjs/index.js +10 -43
- package/node_modules/@aws-sdk/client-sts/dist-es/protocols/Aws_query.js +2 -34
- package/node_modules/@aws-sdk/client-sts/package.json +3 -4
- package/node_modules/@aws-sdk/core/CHANGELOG.md +19 -0
- package/node_modules/@aws-sdk/core/dist-cjs/index.js +126 -1
- package/node_modules/@aws-sdk/core/dist-cjs/protocols/common.js +1 -0
- package/node_modules/@aws-sdk/core/dist-cjs/protocols/json/parseJsonBody.js +1 -0
- package/node_modules/@aws-sdk/core/dist-cjs/protocols/xml/parseXmlBody.js +1 -0
- package/node_modules/@aws-sdk/core/dist-es/protocols/common.js +2 -0
- package/node_modules/@aws-sdk/core/dist-es/protocols/index.js +2 -0
- package/node_modules/@aws-sdk/core/dist-es/protocols/json/parseJsonBody.js +51 -0
- package/node_modules/@aws-sdk/core/dist-es/protocols/xml/parseXmlBody.js +57 -0
- package/node_modules/@aws-sdk/core/dist-types/protocols/common.d.ts +2 -0
- package/node_modules/@aws-sdk/core/dist-types/protocols/index.d.ts +2 -0
- package/node_modules/@aws-sdk/core/dist-types/protocols/json/parseJsonBody.d.ts +4 -0
- package/node_modules/@aws-sdk/core/dist-types/protocols/xml/parseXmlBody.d.ts +4 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/protocols/common.d.ts +5 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/protocols/index.d.ts +2 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/protocols/json/parseJsonBody.d.ts +13 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/protocols/xml/parseXmlBody.d.ts +13 -0
- package/node_modules/@aws-sdk/core/package.json +2 -1
- package/node_modules/@aws-sdk/core/src/protocols/common.ts +5 -0
- package/node_modules/@aws-sdk/core/src/protocols/index.ts +2 -0
- package/node_modules/@aws-sdk/core/src/protocols/json/parseJsonBody.ts +60 -0
- package/node_modules/@aws-sdk/core/src/protocols/xml/parseXmlBody.ts +64 -0
- package/node_modules/@aws-sdk/core/tsconfig.cjs.tsbuildinfo +1 -1
- package/node_modules/@aws-sdk/core/tsconfig.es.tsbuildinfo +1 -1
- package/node_modules/@aws-sdk/core/tsconfig.types.tsbuildinfo +1 -1
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-node/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +2 -2
- package/node_modules/@aws-sdk/token-providers/package.json +2 -2
- package/node_modules/@smithy/core/package.json +5 -5
- package/node_modules/@smithy/middleware-endpoint/package.json +2 -2
- package/node_modules/@smithy/middleware-retry/package.json +2 -2
- package/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts +2 -4
- package/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts +2 -3
- package/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts +2 -4
- package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts +2 -4
- package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts +2 -3
- package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts +2 -4
- package/node_modules/@smithy/middleware-serde/package.json +1 -1
- package/node_modules/@smithy/smithy-client/package.json +2 -2
- package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
- package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
- package/package.json +5 -5
- package/API.md.md +0 -2296
|
@@ -503,6 +503,7 @@ var StartDeviceAuthorizationRequestFilterSensitiveLog = /* @__PURE__ */ __name((
|
|
|
503
503
|
}), "StartDeviceAuthorizationRequestFilterSensitiveLog");
|
|
504
504
|
|
|
505
505
|
// src/protocols/Aws_restJson1.ts
|
|
506
|
+
var import_core2 = require("@aws-sdk/core");
|
|
506
507
|
|
|
507
508
|
|
|
508
509
|
var se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {
|
|
@@ -595,7 +596,7 @@ var de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {
|
|
|
595
596
|
const contents = (0, import_smithy_client.map)({
|
|
596
597
|
$metadata: deserializeMetadata(output)
|
|
597
598
|
});
|
|
598
|
-
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await
|
|
599
|
+
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
|
|
599
600
|
const doc = (0, import_smithy_client.take)(data, {
|
|
600
601
|
accessToken: import_smithy_client.expectString,
|
|
601
602
|
expiresIn: import_smithy_client.expectInt32,
|
|
@@ -613,7 +614,7 @@ var de_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (output, context
|
|
|
613
614
|
const contents = (0, import_smithy_client.map)({
|
|
614
615
|
$metadata: deserializeMetadata(output)
|
|
615
616
|
});
|
|
616
|
-
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await
|
|
617
|
+
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
|
|
617
618
|
const doc = (0, import_smithy_client.take)(data, {
|
|
618
619
|
accessToken: import_smithy_client.expectString,
|
|
619
620
|
expiresIn: import_smithy_client.expectInt32,
|
|
@@ -633,7 +634,7 @@ var de_RegisterClientCommand = /* @__PURE__ */ __name(async (output, context) =>
|
|
|
633
634
|
const contents = (0, import_smithy_client.map)({
|
|
634
635
|
$metadata: deserializeMetadata(output)
|
|
635
636
|
});
|
|
636
|
-
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await
|
|
637
|
+
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
|
|
637
638
|
const doc = (0, import_smithy_client.take)(data, {
|
|
638
639
|
authorizationEndpoint: import_smithy_client.expectString,
|
|
639
640
|
clientId: import_smithy_client.expectString,
|
|
@@ -652,7 +653,7 @@ var de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, c
|
|
|
652
653
|
const contents = (0, import_smithy_client.map)({
|
|
653
654
|
$metadata: deserializeMetadata(output)
|
|
654
655
|
});
|
|
655
|
-
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await
|
|
656
|
+
const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
|
|
656
657
|
const doc = (0, import_smithy_client.take)(data, {
|
|
657
658
|
deviceCode: import_smithy_client.expectString,
|
|
658
659
|
expiresIn: import_smithy_client.expectInt32,
|
|
@@ -667,9 +668,9 @@ var de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, c
|
|
|
667
668
|
var de_CommandError = /* @__PURE__ */ __name(async (output, context) => {
|
|
668
669
|
const parsedOutput = {
|
|
669
670
|
...output,
|
|
670
|
-
body: await
|
|
671
|
+
body: await (0, import_core2.parseJsonErrorBody)(output.body, context)
|
|
671
672
|
};
|
|
672
|
-
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
|
|
673
|
+
const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);
|
|
673
674
|
switch (errorCode) {
|
|
674
675
|
case "AccessDeniedException":
|
|
675
676
|
case "com.amazonaws.ssooidc#AccessDeniedException":
|
|
@@ -910,48 +911,7 @@ var deserializeMetadata = /* @__PURE__ */ __name((output) => ({
|
|
|
910
911
|
extendedRequestId: output.headers["x-amz-id-2"],
|
|
911
912
|
cfId: output.headers["x-amz-cf-id"]
|
|
912
913
|
}), "deserializeMetadata");
|
|
913
|
-
var collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), "collectBodyString");
|
|
914
914
|
var _ai = "aws_iam";
|
|
915
|
-
var parseBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
916
|
-
if (encoded.length) {
|
|
917
|
-
return JSON.parse(encoded);
|
|
918
|
-
}
|
|
919
|
-
return {};
|
|
920
|
-
}), "parseBody");
|
|
921
|
-
var parseErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {
|
|
922
|
-
const value = await parseBody(errorBody, context);
|
|
923
|
-
value.message = value.message ?? value.Message;
|
|
924
|
-
return value;
|
|
925
|
-
}, "parseErrorBody");
|
|
926
|
-
var loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {
|
|
927
|
-
const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), "findKey");
|
|
928
|
-
const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {
|
|
929
|
-
let cleanValue = rawValue;
|
|
930
|
-
if (typeof cleanValue === "number") {
|
|
931
|
-
cleanValue = cleanValue.toString();
|
|
932
|
-
}
|
|
933
|
-
if (cleanValue.indexOf(",") >= 0) {
|
|
934
|
-
cleanValue = cleanValue.split(",")[0];
|
|
935
|
-
}
|
|
936
|
-
if (cleanValue.indexOf(":") >= 0) {
|
|
937
|
-
cleanValue = cleanValue.split(":")[0];
|
|
938
|
-
}
|
|
939
|
-
if (cleanValue.indexOf("#") >= 0) {
|
|
940
|
-
cleanValue = cleanValue.split("#")[1];
|
|
941
|
-
}
|
|
942
|
-
return cleanValue;
|
|
943
|
-
}, "sanitizeErrorCode");
|
|
944
|
-
const headerKey = findKey(output.headers, "x-amzn-errortype");
|
|
945
|
-
if (headerKey !== void 0) {
|
|
946
|
-
return sanitizeErrorCode(output.headers[headerKey]);
|
|
947
|
-
}
|
|
948
|
-
if (data.code !== void 0) {
|
|
949
|
-
return sanitizeErrorCode(data.code);
|
|
950
|
-
}
|
|
951
|
-
if (data["__type"] !== void 0) {
|
|
952
|
-
return sanitizeErrorCode(data["__type"]);
|
|
953
|
-
}
|
|
954
|
-
}, "loadRestJsonErrorCode");
|
|
955
915
|
|
|
956
916
|
// src/commands/CreateTokenCommand.ts
|
|
957
917
|
var _CreateTokenCommand = class _CreateTokenCommand extends import_smithy_client.Command.classBuilder().ep({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { loadRestJsonErrorCode, parseJsonBody as parseBody, parseJsonErrorBody as parseErrorBody } from "@aws-sdk/core";
|
|
1
2
|
import { requestBuilder as rb } from "@smithy/core";
|
|
2
3
|
import { _json, collectBody, decorateServiceException as __decorateServiceException, expectInt32 as __expectInt32, expectLong as __expectLong, expectNonNull as __expectNonNull, expectObject as __expectObject, expectString as __expectString, map, take, withBaseException, } from "@smithy/smithy-client";
|
|
3
4
|
import { AccessDeniedException, AuthorizationPendingException, ExpiredTokenException, InternalServerException, InvalidClientException, InvalidClientMetadataException, InvalidGrantException, InvalidRequestException, InvalidRequestRegionException, InvalidScopeException, SlowDownException, UnauthorizedClientException, UnsupportedGrantTypeException, } from "../models/models_0";
|
|
@@ -406,43 +407,3 @@ const isSerializableHeaderValue = (value) => value !== undefined &&
|
|
|
406
407
|
(!Object.getOwnPropertyNames(value).includes("length") || value.length != 0) &&
|
|
407
408
|
(!Object.getOwnPropertyNames(value).includes("size") || value.size != 0);
|
|
408
409
|
const _ai = "aws_iam";
|
|
409
|
-
const parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
410
|
-
if (encoded.length) {
|
|
411
|
-
return JSON.parse(encoded);
|
|
412
|
-
}
|
|
413
|
-
return {};
|
|
414
|
-
});
|
|
415
|
-
const parseErrorBody = async (errorBody, context) => {
|
|
416
|
-
const value = await parseBody(errorBody, context);
|
|
417
|
-
value.message = value.message ?? value.Message;
|
|
418
|
-
return value;
|
|
419
|
-
};
|
|
420
|
-
const loadRestJsonErrorCode = (output, data) => {
|
|
421
|
-
const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
|
|
422
|
-
const sanitizeErrorCode = (rawValue) => {
|
|
423
|
-
let cleanValue = rawValue;
|
|
424
|
-
if (typeof cleanValue === "number") {
|
|
425
|
-
cleanValue = cleanValue.toString();
|
|
426
|
-
}
|
|
427
|
-
if (cleanValue.indexOf(",") >= 0) {
|
|
428
|
-
cleanValue = cleanValue.split(",")[0];
|
|
429
|
-
}
|
|
430
|
-
if (cleanValue.indexOf(":") >= 0) {
|
|
431
|
-
cleanValue = cleanValue.split(":")[0];
|
|
432
|
-
}
|
|
433
|
-
if (cleanValue.indexOf("#") >= 0) {
|
|
434
|
-
cleanValue = cleanValue.split("#")[1];
|
|
435
|
-
}
|
|
436
|
-
return cleanValue;
|
|
437
|
-
};
|
|
438
|
-
const headerKey = findKey(output.headers, "x-amzn-errortype");
|
|
439
|
-
if (headerKey !== undefined) {
|
|
440
|
-
return sanitizeErrorCode(output.headers[headerKey]);
|
|
441
|
-
}
|
|
442
|
-
if (data.code !== undefined) {
|
|
443
|
-
return sanitizeErrorCode(data.code);
|
|
444
|
-
}
|
|
445
|
-
if (data["__type"] !== undefined) {
|
|
446
|
-
return sanitizeErrorCode(data["__type"]);
|
|
447
|
-
}
|
|
448
|
-
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/client-sso-oidc",
|
|
3
3
|
"description": "AWS SDK for JavaScript Sso Oidc Client for Node.js, Browser and React Native",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.529.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
7
7
|
"build:cjs": "node ../../scripts/compilation/inline client-sso-oidc",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@aws-crypto/sha256-browser": "3.0.0",
|
|
22
22
|
"@aws-crypto/sha256-js": "3.0.0",
|
|
23
|
-
"@aws-sdk/client-sts": "3.
|
|
24
|
-
"@aws-sdk/core": "3.
|
|
23
|
+
"@aws-sdk/client-sts": "3.529.1",
|
|
24
|
+
"@aws-sdk/core": "3.529.1",
|
|
25
25
|
"@aws-sdk/middleware-host-header": "3.523.0",
|
|
26
26
|
"@aws-sdk/middleware-logger": "3.523.0",
|
|
27
27
|
"@aws-sdk/middleware-recursion-detection": "3.523.0",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
},
|
|
87
87
|
"license": "Apache-2.0",
|
|
88
88
|
"peerDependencies": {
|
|
89
|
-
"@aws-sdk/credential-provider-node": "^3.
|
|
89
|
+
"@aws-sdk/credential-provider-node": "^3.529.1"
|
|
90
90
|
},
|
|
91
91
|
"browser": {
|
|
92
92
|
"./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser"
|
|
@@ -255,9 +255,9 @@ var GetSessionTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) =>
|
|
|
255
255
|
}), "GetSessionTokenResponseFilterSensitiveLog");
|
|
256
256
|
|
|
257
257
|
// src/protocols/Aws_query.ts
|
|
258
|
+
var import_core = require("@aws-sdk/core");
|
|
258
259
|
var import_protocol_http = require("@smithy/protocol-http");
|
|
259
260
|
|
|
260
|
-
var import_fast_xml_parser = require("fast-xml-parser");
|
|
261
261
|
var se_AssumeRoleCommand = /* @__PURE__ */ __name(async (input, context) => {
|
|
262
262
|
const headers = SHARED_HEADERS;
|
|
263
263
|
let body;
|
|
@@ -342,7 +342,7 @@ var de_AssumeRoleCommand = /* @__PURE__ */ __name(async (output, context) => {
|
|
|
342
342
|
if (output.statusCode >= 300) {
|
|
343
343
|
return de_CommandError(output, context);
|
|
344
344
|
}
|
|
345
|
-
const data = await
|
|
345
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
346
346
|
let contents = {};
|
|
347
347
|
contents = de_AssumeRoleResponse(data.AssumeRoleResult, context);
|
|
348
348
|
const response = {
|
|
@@ -355,7 +355,7 @@ var de_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (output, context
|
|
|
355
355
|
if (output.statusCode >= 300) {
|
|
356
356
|
return de_CommandError(output, context);
|
|
357
357
|
}
|
|
358
|
-
const data = await
|
|
358
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
359
359
|
let contents = {};
|
|
360
360
|
contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);
|
|
361
361
|
const response = {
|
|
@@ -368,7 +368,7 @@ var de_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (output,
|
|
|
368
368
|
if (output.statusCode >= 300) {
|
|
369
369
|
return de_CommandError(output, context);
|
|
370
370
|
}
|
|
371
|
-
const data = await
|
|
371
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
372
372
|
let contents = {};
|
|
373
373
|
contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);
|
|
374
374
|
const response = {
|
|
@@ -381,7 +381,7 @@ var de_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (output,
|
|
|
381
381
|
if (output.statusCode >= 300) {
|
|
382
382
|
return de_CommandError(output, context);
|
|
383
383
|
}
|
|
384
|
-
const data = await
|
|
384
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
385
385
|
let contents = {};
|
|
386
386
|
contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);
|
|
387
387
|
const response = {
|
|
@@ -394,7 +394,7 @@ var de_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (output, context)
|
|
|
394
394
|
if (output.statusCode >= 300) {
|
|
395
395
|
return de_CommandError(output, context);
|
|
396
396
|
}
|
|
397
|
-
const data = await
|
|
397
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
398
398
|
let contents = {};
|
|
399
399
|
contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);
|
|
400
400
|
const response = {
|
|
@@ -407,7 +407,7 @@ var de_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (output, context)
|
|
|
407
407
|
if (output.statusCode >= 300) {
|
|
408
408
|
return de_CommandError(output, context);
|
|
409
409
|
}
|
|
410
|
-
const data = await
|
|
410
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
411
411
|
let contents = {};
|
|
412
412
|
contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context);
|
|
413
413
|
const response = {
|
|
@@ -420,7 +420,7 @@ var de_GetFederationTokenCommand = /* @__PURE__ */ __name(async (output, context
|
|
|
420
420
|
if (output.statusCode >= 300) {
|
|
421
421
|
return de_CommandError(output, context);
|
|
422
422
|
}
|
|
423
|
-
const data = await
|
|
423
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
424
424
|
let contents = {};
|
|
425
425
|
contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context);
|
|
426
426
|
const response = {
|
|
@@ -433,7 +433,7 @@ var de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) =
|
|
|
433
433
|
if (output.statusCode >= 300) {
|
|
434
434
|
return de_CommandError(output, context);
|
|
435
435
|
}
|
|
436
|
-
const data = await
|
|
436
|
+
const data = await (0, import_core.parseXmlBody)(output.body, context);
|
|
437
437
|
let contents = {};
|
|
438
438
|
contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context);
|
|
439
439
|
const response = {
|
|
@@ -445,7 +445,7 @@ var de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) =
|
|
|
445
445
|
var de_CommandError = /* @__PURE__ */ __name(async (output, context) => {
|
|
446
446
|
const parsedOutput = {
|
|
447
447
|
...output,
|
|
448
|
-
body: await
|
|
448
|
+
body: await (0, import_core.parseXmlErrorBody)(output.body, context)
|
|
449
449
|
};
|
|
450
450
|
const errorCode = loadQueryErrorCode(output, parsedOutput.body);
|
|
451
451
|
switch (errorCode) {
|
|
@@ -1052,7 +1052,6 @@ var deserializeMetadata = /* @__PURE__ */ __name((output) => ({
|
|
|
1052
1052
|
extendedRequestId: output.headers["x-amz-id-2"],
|
|
1053
1053
|
cfId: output.headers["x-amz-cf-id"]
|
|
1054
1054
|
}), "deserializeMetadata");
|
|
1055
|
-
var collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), "collectBodyString");
|
|
1056
1055
|
var throwDefaultError = (0, import_smithy_client.withBaseException)(STSServiceException);
|
|
1057
1056
|
var buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {
|
|
1058
1057
|
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
|
|
@@ -1131,38 +1130,6 @@ var _Va = "Value";
|
|
|
1131
1130
|
var _WIT = "WebIdentityToken";
|
|
1132
1131
|
var _a = "arn";
|
|
1133
1132
|
var _m = "message";
|
|
1134
|
-
var parseBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
1135
|
-
if (encoded.length) {
|
|
1136
|
-
const parser = new import_fast_xml_parser.XMLParser({
|
|
1137
|
-
attributeNamePrefix: "",
|
|
1138
|
-
htmlEntities: true,
|
|
1139
|
-
ignoreAttributes: false,
|
|
1140
|
-
ignoreDeclaration: true,
|
|
1141
|
-
parseTagValue: false,
|
|
1142
|
-
trimValues: false,
|
|
1143
|
-
tagValueProcessor: (_2, val) => val.trim() === "" && val.includes("\n") ? "" : void 0
|
|
1144
|
-
});
|
|
1145
|
-
parser.addEntity("#xD", "\r");
|
|
1146
|
-
parser.addEntity("#10", "\n");
|
|
1147
|
-
const parsedObj = parser.parse(encoded);
|
|
1148
|
-
const textNodeName = "#text";
|
|
1149
|
-
const key = Object.keys(parsedObj)[0];
|
|
1150
|
-
const parsedObjToReturn = parsedObj[key];
|
|
1151
|
-
if (parsedObjToReturn[textNodeName]) {
|
|
1152
|
-
parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
|
|
1153
|
-
delete parsedObjToReturn[textNodeName];
|
|
1154
|
-
}
|
|
1155
|
-
return (0, import_smithy_client.getValueFromTextNode)(parsedObjToReturn);
|
|
1156
|
-
}
|
|
1157
|
-
return {};
|
|
1158
|
-
}), "parseBody");
|
|
1159
|
-
var parseErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {
|
|
1160
|
-
const value = await parseBody(errorBody, context);
|
|
1161
|
-
if (value.Error) {
|
|
1162
|
-
value.Error.message = value.Error.message ?? value.Error.Message;
|
|
1163
|
-
}
|
|
1164
|
-
return value;
|
|
1165
|
-
}, "parseErrorBody");
|
|
1166
1133
|
var buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + "=" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join("&"), "buildFormUrlencodedString");
|
|
1167
1134
|
var loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {
|
|
1168
1135
|
var _a2;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { parseXmlBody as parseBody, parseXmlErrorBody as parseErrorBody } from "@aws-sdk/core";
|
|
1
2
|
import { HttpRequest as __HttpRequest } from "@smithy/protocol-http";
|
|
2
|
-
import { collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectString as __expectString, extendedEncodeURIComponent as __extendedEncodeURIComponent,
|
|
3
|
-
import { XMLParser } from "fast-xml-parser";
|
|
3
|
+
import { collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectString as __expectString, extendedEncodeURIComponent as __extendedEncodeURIComponent, parseRfc3339DateTimeWithOffset as __parseRfc3339DateTimeWithOffset, strictParseInt32 as __strictParseInt32, withBaseException, } from "@smithy/smithy-client";
|
|
4
4
|
import { ExpiredTokenException, IDPCommunicationErrorException, IDPRejectedClaimException, InvalidAuthorizationMessageException, InvalidIdentityTokenException, MalformedPolicyDocumentException, PackedPolicyTooLargeException, RegionDisabledException, } from "../models/models_0";
|
|
5
5
|
import { STSServiceException as __BaseException } from "../models/STSServiceException";
|
|
6
6
|
export const se_AssumeRoleCommand = async (input, context) => {
|
|
@@ -872,38 +872,6 @@ const _Va = "Value";
|
|
|
872
872
|
const _WIT = "WebIdentityToken";
|
|
873
873
|
const _a = "arn";
|
|
874
874
|
const _m = "message";
|
|
875
|
-
const parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
876
|
-
if (encoded.length) {
|
|
877
|
-
const parser = new XMLParser({
|
|
878
|
-
attributeNamePrefix: "",
|
|
879
|
-
htmlEntities: true,
|
|
880
|
-
ignoreAttributes: false,
|
|
881
|
-
ignoreDeclaration: true,
|
|
882
|
-
parseTagValue: false,
|
|
883
|
-
trimValues: false,
|
|
884
|
-
tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined),
|
|
885
|
-
});
|
|
886
|
-
parser.addEntity("#xD", "\r");
|
|
887
|
-
parser.addEntity("#10", "\n");
|
|
888
|
-
const parsedObj = parser.parse(encoded);
|
|
889
|
-
const textNodeName = "#text";
|
|
890
|
-
const key = Object.keys(parsedObj)[0];
|
|
891
|
-
const parsedObjToReturn = parsedObj[key];
|
|
892
|
-
if (parsedObjToReturn[textNodeName]) {
|
|
893
|
-
parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
|
|
894
|
-
delete parsedObjToReturn[textNodeName];
|
|
895
|
-
}
|
|
896
|
-
return __getValueFromTextNode(parsedObjToReturn);
|
|
897
|
-
}
|
|
898
|
-
return {};
|
|
899
|
-
});
|
|
900
|
-
const parseErrorBody = async (errorBody, context) => {
|
|
901
|
-
const value = await parseBody(errorBody, context);
|
|
902
|
-
if (value.Error) {
|
|
903
|
-
value.Error.message = value.Error.message ?? value.Error.Message;
|
|
904
|
-
}
|
|
905
|
-
return value;
|
|
906
|
-
};
|
|
907
875
|
const buildFormUrlencodedString = (formEntries) => Object.entries(formEntries)
|
|
908
876
|
.map(([key, value]) => __extendedEncodeURIComponent(key) + "=" + __extendedEncodeURIComponent(value))
|
|
909
877
|
.join("&");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/client-sts",
|
|
3
3
|
"description": "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.529.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
|
|
7
7
|
"build:cjs": "node ../../scripts/compilation/inline client-sts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@aws-crypto/sha256-browser": "3.0.0",
|
|
24
24
|
"@aws-crypto/sha256-js": "3.0.0",
|
|
25
|
-
"@aws-sdk/core": "3.
|
|
25
|
+
"@aws-sdk/core": "3.529.1",
|
|
26
26
|
"@aws-sdk/middleware-host-header": "3.523.0",
|
|
27
27
|
"@aws-sdk/middleware-logger": "3.523.0",
|
|
28
28
|
"@aws-sdk/middleware-recursion-detection": "3.523.0",
|
|
@@ -57,7 +57,6 @@
|
|
|
57
57
|
"@smithy/util-middleware": "^2.1.3",
|
|
58
58
|
"@smithy/util-retry": "^2.1.3",
|
|
59
59
|
"@smithy/util-utf8": "^2.1.1",
|
|
60
|
-
"fast-xml-parser": "4.2.5",
|
|
61
60
|
"tslib": "^2.5.0"
|
|
62
61
|
},
|
|
63
62
|
"devDependencies": {
|
|
@@ -88,7 +87,7 @@
|
|
|
88
87
|
},
|
|
89
88
|
"license": "Apache-2.0",
|
|
90
89
|
"peerDependencies": {
|
|
91
|
-
"@aws-sdk/credential-provider-node": "^3.
|
|
90
|
+
"@aws-sdk/credential-provider-node": "^3.529.1"
|
|
92
91
|
},
|
|
93
92
|
"browser": {
|
|
94
93
|
"./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser"
|
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.529.1](https://github.com/aws/aws-sdk-js-v3/compare/v3.529.0...v3.529.1) (2024-03-08)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **core:** add missing fast-xml-parser dependency ([#5869](https://github.com/aws/aws-sdk-js-v3/issues/5869)) ([96c375c](https://github.com/aws/aws-sdk-js-v3/commit/96c375cb36c838c76b5384f96d79ad47d9091ee7))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [3.529.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.528.0...v3.529.0) (2024-03-07)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @aws-sdk/core
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [3.525.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.524.0...v3.525.0) (2024-02-29)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @aws-sdk/core
|
|
@@ -27,6 +27,12 @@ __export(src_exports, {
|
|
|
27
27
|
_toStr: () => _toStr,
|
|
28
28
|
awsExpectUnion: () => awsExpectUnion,
|
|
29
29
|
emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,
|
|
30
|
+
loadRestJsonErrorCode: () => loadRestJsonErrorCode,
|
|
31
|
+
loadRestXmlErrorCode: () => loadRestXmlErrorCode,
|
|
32
|
+
parseJsonBody: () => parseJsonBody,
|
|
33
|
+
parseJsonErrorBody: () => parseJsonErrorBody,
|
|
34
|
+
parseXmlBody: () => parseXmlBody,
|
|
35
|
+
parseXmlErrorBody: () => parseXmlErrorBody,
|
|
30
36
|
resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config,
|
|
31
37
|
resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config
|
|
32
38
|
});
|
|
@@ -305,6 +311,119 @@ var awsExpectUnion = /* @__PURE__ */ __name((value) => {
|
|
|
305
311
|
}
|
|
306
312
|
return (0, import_smithy_client.expectUnion)(value);
|
|
307
313
|
}, "awsExpectUnion");
|
|
314
|
+
|
|
315
|
+
// src/protocols/common.ts
|
|
316
|
+
|
|
317
|
+
var collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), "collectBodyString");
|
|
318
|
+
|
|
319
|
+
// src/protocols/json/parseJsonBody.ts
|
|
320
|
+
var parseJsonBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
321
|
+
if (encoded.length) {
|
|
322
|
+
try {
|
|
323
|
+
return JSON.parse(encoded);
|
|
324
|
+
} catch (e) {
|
|
325
|
+
if ((e == null ? void 0 : e.name) === "SyntaxError") {
|
|
326
|
+
Object.defineProperty(e, "$responseBodyText", {
|
|
327
|
+
value: encoded
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
throw e;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return {};
|
|
334
|
+
}), "parseJsonBody");
|
|
335
|
+
var parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {
|
|
336
|
+
const value = await parseJsonBody(errorBody, context);
|
|
337
|
+
value.message = value.message ?? value.Message;
|
|
338
|
+
return value;
|
|
339
|
+
}, "parseJsonErrorBody");
|
|
340
|
+
var loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {
|
|
341
|
+
const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), "findKey");
|
|
342
|
+
const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {
|
|
343
|
+
let cleanValue = rawValue;
|
|
344
|
+
if (typeof cleanValue === "number") {
|
|
345
|
+
cleanValue = cleanValue.toString();
|
|
346
|
+
}
|
|
347
|
+
if (cleanValue.indexOf(",") >= 0) {
|
|
348
|
+
cleanValue = cleanValue.split(",")[0];
|
|
349
|
+
}
|
|
350
|
+
if (cleanValue.indexOf(":") >= 0) {
|
|
351
|
+
cleanValue = cleanValue.split(":")[0];
|
|
352
|
+
}
|
|
353
|
+
if (cleanValue.indexOf("#") >= 0) {
|
|
354
|
+
cleanValue = cleanValue.split("#")[1];
|
|
355
|
+
}
|
|
356
|
+
return cleanValue;
|
|
357
|
+
}, "sanitizeErrorCode");
|
|
358
|
+
const headerKey = findKey(output.headers, "x-amzn-errortype");
|
|
359
|
+
if (headerKey !== void 0) {
|
|
360
|
+
return sanitizeErrorCode(output.headers[headerKey]);
|
|
361
|
+
}
|
|
362
|
+
if (data.code !== void 0) {
|
|
363
|
+
return sanitizeErrorCode(data.code);
|
|
364
|
+
}
|
|
365
|
+
if (data["__type"] !== void 0) {
|
|
366
|
+
return sanitizeErrorCode(data["__type"]);
|
|
367
|
+
}
|
|
368
|
+
}, "loadRestJsonErrorCode");
|
|
369
|
+
|
|
370
|
+
// src/protocols/xml/parseXmlBody.ts
|
|
371
|
+
|
|
372
|
+
var import_fast_xml_parser = require("fast-xml-parser");
|
|
373
|
+
var parseXmlBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
374
|
+
if (encoded.length) {
|
|
375
|
+
const parser = new import_fast_xml_parser.XMLParser({
|
|
376
|
+
attributeNamePrefix: "",
|
|
377
|
+
htmlEntities: true,
|
|
378
|
+
ignoreAttributes: false,
|
|
379
|
+
ignoreDeclaration: true,
|
|
380
|
+
parseTagValue: false,
|
|
381
|
+
trimValues: false,
|
|
382
|
+
tagValueProcessor: (_, val) => val.trim() === "" && val.includes("\n") ? "" : void 0
|
|
383
|
+
});
|
|
384
|
+
parser.addEntity("#xD", "\r");
|
|
385
|
+
parser.addEntity("#10", "\n");
|
|
386
|
+
let parsedObj;
|
|
387
|
+
try {
|
|
388
|
+
parsedObj = parser.parse(encoded);
|
|
389
|
+
} catch (e) {
|
|
390
|
+
if (e && typeof e === "object") {
|
|
391
|
+
Object.defineProperty(e, "$responseBodyText", {
|
|
392
|
+
value: encoded
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
throw e;
|
|
396
|
+
}
|
|
397
|
+
const textNodeName = "#text";
|
|
398
|
+
const key = Object.keys(parsedObj)[0];
|
|
399
|
+
const parsedObjToReturn = parsedObj[key];
|
|
400
|
+
if (parsedObjToReturn[textNodeName]) {
|
|
401
|
+
parsedObjToReturn[key] = parsedObjToReturn[textNodeName];
|
|
402
|
+
delete parsedObjToReturn[textNodeName];
|
|
403
|
+
}
|
|
404
|
+
return (0, import_smithy_client.getValueFromTextNode)(parsedObjToReturn);
|
|
405
|
+
}
|
|
406
|
+
return {};
|
|
407
|
+
}), "parseXmlBody");
|
|
408
|
+
var parseXmlErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {
|
|
409
|
+
const value = await parseXmlBody(errorBody, context);
|
|
410
|
+
if (value.Error) {
|
|
411
|
+
value.Error.message = value.Error.message ?? value.Error.Message;
|
|
412
|
+
}
|
|
413
|
+
return value;
|
|
414
|
+
}, "parseXmlErrorBody");
|
|
415
|
+
var loadRestXmlErrorCode = /* @__PURE__ */ __name((output, data) => {
|
|
416
|
+
var _a;
|
|
417
|
+
if (((_a = data == null ? void 0 : data.Error) == null ? void 0 : _a.Code) !== void 0) {
|
|
418
|
+
return data.Error.Code;
|
|
419
|
+
}
|
|
420
|
+
if ((data == null ? void 0 : data.Code) !== void 0) {
|
|
421
|
+
return data.Code;
|
|
422
|
+
}
|
|
423
|
+
if (output.statusCode == 404) {
|
|
424
|
+
return "NotFound";
|
|
425
|
+
}
|
|
426
|
+
}, "loadRestXmlErrorCode");
|
|
308
427
|
// Annotate the CommonJS export names for ESM import in node:
|
|
309
428
|
|
|
310
429
|
0 && (module.exports = {
|
|
@@ -316,6 +435,12 @@ var awsExpectUnion = /* @__PURE__ */ __name((value) => {
|
|
|
316
435
|
_toStr,
|
|
317
436
|
_toBool,
|
|
318
437
|
_toNum,
|
|
319
|
-
awsExpectUnion
|
|
438
|
+
awsExpectUnion,
|
|
439
|
+
parseJsonBody,
|
|
440
|
+
parseJsonErrorBody,
|
|
441
|
+
loadRestJsonErrorCode,
|
|
442
|
+
parseXmlBody,
|
|
443
|
+
parseXmlErrorBody,
|
|
444
|
+
loadRestXmlErrorCode
|
|
320
445
|
});
|
|
321
446
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require("../index.js");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require("../../index.js");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require("../../index.js");
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { collectBodyString } from "../common";
|
|
2
|
+
export const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
3
|
+
if (encoded.length) {
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(encoded);
|
|
6
|
+
}
|
|
7
|
+
catch (e) {
|
|
8
|
+
if (e?.name === "SyntaxError") {
|
|
9
|
+
Object.defineProperty(e, "$responseBodyText", {
|
|
10
|
+
value: encoded,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
throw e;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return {};
|
|
17
|
+
});
|
|
18
|
+
export const parseJsonErrorBody = async (errorBody, context) => {
|
|
19
|
+
const value = await parseJsonBody(errorBody, context);
|
|
20
|
+
value.message = value.message ?? value.Message;
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
export const loadRestJsonErrorCode = (output, data) => {
|
|
24
|
+
const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
|
|
25
|
+
const sanitizeErrorCode = (rawValue) => {
|
|
26
|
+
let cleanValue = rawValue;
|
|
27
|
+
if (typeof cleanValue === "number") {
|
|
28
|
+
cleanValue = cleanValue.toString();
|
|
29
|
+
}
|
|
30
|
+
if (cleanValue.indexOf(",") >= 0) {
|
|
31
|
+
cleanValue = cleanValue.split(",")[0];
|
|
32
|
+
}
|
|
33
|
+
if (cleanValue.indexOf(":") >= 0) {
|
|
34
|
+
cleanValue = cleanValue.split(":")[0];
|
|
35
|
+
}
|
|
36
|
+
if (cleanValue.indexOf("#") >= 0) {
|
|
37
|
+
cleanValue = cleanValue.split("#")[1];
|
|
38
|
+
}
|
|
39
|
+
return cleanValue;
|
|
40
|
+
};
|
|
41
|
+
const headerKey = findKey(output.headers, "x-amzn-errortype");
|
|
42
|
+
if (headerKey !== undefined) {
|
|
43
|
+
return sanitizeErrorCode(output.headers[headerKey]);
|
|
44
|
+
}
|
|
45
|
+
if (data.code !== undefined) {
|
|
46
|
+
return sanitizeErrorCode(data.code);
|
|
47
|
+
}
|
|
48
|
+
if (data["__type"] !== undefined) {
|
|
49
|
+
return sanitizeErrorCode(data["__type"]);
|
|
50
|
+
}
|
|
51
|
+
};
|