@guardian/bridget 8.9.2 → 8.11.0-2026-06-01

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,21 @@
1
+ import * as thrift from "@creditkarma/thrift-server-core";
2
+ import * as FootballTeam from "./FootballTeam";
3
+ export interface IFootballMatch {
4
+ homeTeam: FootballTeam.IFootballTeam;
5
+ awayTeam: FootballTeam.IFootballTeam;
6
+ }
7
+ export interface IFootballMatchArgs {
8
+ homeTeam: FootballTeam.IFootballTeamArgs;
9
+ awayTeam: FootballTeam.IFootballTeamArgs;
10
+ }
11
+ export declare const FootballMatchCodec: thrift.IStructCodec<IFootballMatchArgs, IFootballMatch>;
12
+ export declare class FootballMatch extends thrift.StructLike implements IFootballMatch {
13
+ homeTeam: FootballTeam.IFootballTeam;
14
+ awayTeam: FootballTeam.IFootballTeam;
15
+ readonly _annotations: thrift.IThriftAnnotations;
16
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
17
+ constructor(args: IFootballMatchArgs);
18
+ static read(input: thrift.TProtocol): FootballMatch;
19
+ static write(args: IFootballMatchArgs, output: thrift.TProtocol): void;
20
+ write(output: thrift.TProtocol): void;
21
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.FootballMatch = exports.FootballMatchCodec = void 0;
27
+ /* tslint:disable */
28
+ /* eslint-disable */
29
+ /*
30
+ * Autogenerated by @creditkarma/thrift-typescript v3.7.6
31
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
32
+ */
33
+ const thrift = __importStar(require("@creditkarma/thrift-server-core"));
34
+ const FootballTeam = __importStar(require("./FootballTeam"));
35
+ exports.FootballMatchCodec = {
36
+ encode(args, output) {
37
+ const obj = {
38
+ homeTeam: args.homeTeam,
39
+ awayTeam: args.awayTeam
40
+ };
41
+ output.writeStructBegin("FootballMatch");
42
+ if (obj.homeTeam != null) {
43
+ output.writeFieldBegin("homeTeam", thrift.TType.STRUCT, 1);
44
+ FootballTeam.FootballTeamCodec.encode(obj.homeTeam, output);
45
+ output.writeFieldEnd();
46
+ }
47
+ else {
48
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[homeTeam] is unset!");
49
+ }
50
+ if (obj.awayTeam != null) {
51
+ output.writeFieldBegin("awayTeam", thrift.TType.STRUCT, 2);
52
+ FootballTeam.FootballTeamCodec.encode(obj.awayTeam, output);
53
+ output.writeFieldEnd();
54
+ }
55
+ else {
56
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[awayTeam] is unset!");
57
+ }
58
+ output.writeFieldStop();
59
+ output.writeStructEnd();
60
+ return;
61
+ },
62
+ decode(input) {
63
+ let _args = {};
64
+ input.readStructBegin();
65
+ while (true) {
66
+ const ret = input.readFieldBegin();
67
+ const fieldType = ret.fieldType;
68
+ const fieldId = ret.fieldId;
69
+ if (fieldType === thrift.TType.STOP) {
70
+ break;
71
+ }
72
+ switch (fieldId) {
73
+ case 1:
74
+ if (fieldType === thrift.TType.STRUCT) {
75
+ const value_1 = FootballTeam.FootballTeamCodec.decode(input);
76
+ _args.homeTeam = value_1;
77
+ }
78
+ else {
79
+ input.skip(fieldType);
80
+ }
81
+ break;
82
+ case 2:
83
+ if (fieldType === thrift.TType.STRUCT) {
84
+ const value_2 = FootballTeam.FootballTeamCodec.decode(input);
85
+ _args.awayTeam = value_2;
86
+ }
87
+ else {
88
+ input.skip(fieldType);
89
+ }
90
+ break;
91
+ default: {
92
+ input.skip(fieldType);
93
+ }
94
+ }
95
+ input.readFieldEnd();
96
+ }
97
+ input.readStructEnd();
98
+ if (_args.homeTeam !== undefined && _args.awayTeam !== undefined) {
99
+ return {
100
+ homeTeam: _args.homeTeam,
101
+ awayTeam: _args.awayTeam
102
+ };
103
+ }
104
+ else {
105
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Unable to read FootballMatch from input");
106
+ }
107
+ }
108
+ };
109
+ class FootballMatch extends thrift.StructLike {
110
+ constructor(args) {
111
+ super();
112
+ this._annotations = {};
113
+ this._fieldAnnotations = {};
114
+ if (args.homeTeam != null) {
115
+ const value_3 = new FootballTeam.FootballTeam(args.homeTeam);
116
+ this.homeTeam = value_3;
117
+ }
118
+ else {
119
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[homeTeam] is unset!");
120
+ }
121
+ if (args.awayTeam != null) {
122
+ const value_4 = new FootballTeam.FootballTeam(args.awayTeam);
123
+ this.awayTeam = value_4;
124
+ }
125
+ else {
126
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[awayTeam] is unset!");
127
+ }
128
+ }
129
+ static read(input) {
130
+ return new FootballMatch(exports.FootballMatchCodec.decode(input));
131
+ }
132
+ static write(args, output) {
133
+ return exports.FootballMatchCodec.encode(args, output);
134
+ }
135
+ write(output) {
136
+ return exports.FootballMatchCodec.encode(this, output);
137
+ }
138
+ }
139
+ exports.FootballMatch = FootballMatch;
@@ -0,0 +1,20 @@
1
+ import * as thrift from "@creditkarma/thrift-server-core";
2
+ export interface IFootballTeam {
3
+ paId: string;
4
+ name: string;
5
+ }
6
+ export interface IFootballTeamArgs {
7
+ paId: string;
8
+ name: string;
9
+ }
10
+ export declare const FootballTeamCodec: thrift.IStructCodec<IFootballTeamArgs, IFootballTeam>;
11
+ export declare class FootballTeam extends thrift.StructLike implements IFootballTeam {
12
+ paId: string;
13
+ name: string;
14
+ readonly _annotations: thrift.IThriftAnnotations;
15
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
16
+ constructor(args: IFootballTeamArgs);
17
+ static read(input: thrift.TProtocol): FootballTeam;
18
+ static write(args: IFootballTeamArgs, output: thrift.TProtocol): void;
19
+ write(output: thrift.TProtocol): void;
20
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.FootballTeam = exports.FootballTeamCodec = void 0;
27
+ /* tslint:disable */
28
+ /* eslint-disable */
29
+ /*
30
+ * Autogenerated by @creditkarma/thrift-typescript v3.7.6
31
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
32
+ */
33
+ const thrift = __importStar(require("@creditkarma/thrift-server-core"));
34
+ exports.FootballTeamCodec = {
35
+ encode(args, output) {
36
+ const obj = {
37
+ paId: args.paId,
38
+ name: args.name
39
+ };
40
+ output.writeStructBegin("FootballTeam");
41
+ if (obj.paId != null) {
42
+ output.writeFieldBegin("paId", thrift.TType.STRING, 1);
43
+ output.writeString(obj.paId);
44
+ output.writeFieldEnd();
45
+ }
46
+ else {
47
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[paId] is unset!");
48
+ }
49
+ if (obj.name != null) {
50
+ output.writeFieldBegin("name", thrift.TType.STRING, 2);
51
+ output.writeString(obj.name);
52
+ output.writeFieldEnd();
53
+ }
54
+ else {
55
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[name] is unset!");
56
+ }
57
+ output.writeFieldStop();
58
+ output.writeStructEnd();
59
+ return;
60
+ },
61
+ decode(input) {
62
+ let _args = {};
63
+ input.readStructBegin();
64
+ while (true) {
65
+ const ret = input.readFieldBegin();
66
+ const fieldType = ret.fieldType;
67
+ const fieldId = ret.fieldId;
68
+ if (fieldType === thrift.TType.STOP) {
69
+ break;
70
+ }
71
+ switch (fieldId) {
72
+ case 1:
73
+ if (fieldType === thrift.TType.STRING) {
74
+ const value_1 = input.readString();
75
+ _args.paId = value_1;
76
+ }
77
+ else {
78
+ input.skip(fieldType);
79
+ }
80
+ break;
81
+ case 2:
82
+ if (fieldType === thrift.TType.STRING) {
83
+ const value_2 = input.readString();
84
+ _args.name = value_2;
85
+ }
86
+ else {
87
+ input.skip(fieldType);
88
+ }
89
+ break;
90
+ default: {
91
+ input.skip(fieldType);
92
+ }
93
+ }
94
+ input.readFieldEnd();
95
+ }
96
+ input.readStructEnd();
97
+ if (_args.paId !== undefined && _args.name !== undefined) {
98
+ return {
99
+ paId: _args.paId,
100
+ name: _args.name
101
+ };
102
+ }
103
+ else {
104
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Unable to read FootballTeam from input");
105
+ }
106
+ }
107
+ };
108
+ class FootballTeam extends thrift.StructLike {
109
+ constructor(args) {
110
+ super();
111
+ this._annotations = {};
112
+ this._fieldAnnotations = {};
113
+ if (args.paId != null) {
114
+ const value_3 = args.paId;
115
+ this.paId = value_3;
116
+ }
117
+ else {
118
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[paId] is unset!");
119
+ }
120
+ if (args.name != null) {
121
+ const value_4 = args.name;
122
+ this.name = value_4;
123
+ }
124
+ else {
125
+ throw new thrift.TProtocolException(thrift.TProtocolExceptionType.UNKNOWN, "Required field[name] is unset!");
126
+ }
127
+ }
128
+ static read(input) {
129
+ return new FootballTeam(exports.FootballTeamCodec.decode(input));
130
+ }
131
+ static write(args, output) {
132
+ return exports.FootballTeamCodec.encode(args, output);
133
+ }
134
+ write(output) {
135
+ return exports.FootballTeamCodec.encode(this, output);
136
+ }
137
+ }
138
+ exports.FootballTeam = FootballTeam;
@@ -0,0 +1,190 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import * as thrift from "@creditkarma/thrift-server-core";
4
+ export declare const serviceName: string;
5
+ export declare const annotations: thrift.IThriftAnnotations;
6
+ export declare const methodAnnotations: thrift.IMethodAnnotations;
7
+ export declare const methodNames: Array<string>;
8
+ export declare const methodParameters: {
9
+ [methodName: string]: number;
10
+ };
11
+ export interface IIsAvailable__Args {
12
+ activityType: string;
13
+ activityId: string;
14
+ }
15
+ export interface IIsAvailable__ArgsArgs {
16
+ activityType: string;
17
+ activityId: string;
18
+ }
19
+ export declare const IsAvailable__ArgsCodec: thrift.IStructCodec<IIsAvailable__ArgsArgs, IIsAvailable__Args>;
20
+ export declare class IsAvailable__Args extends thrift.StructLike implements IIsAvailable__Args {
21
+ activityType: string;
22
+ activityId: string;
23
+ readonly _annotations: thrift.IThriftAnnotations;
24
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
25
+ constructor(args: IIsAvailable__ArgsArgs);
26
+ static read(input: thrift.TProtocol): IsAvailable__Args;
27
+ static write(args: IIsAvailable__ArgsArgs, output: thrift.TProtocol): void;
28
+ write(output: thrift.TProtocol): void;
29
+ }
30
+ export interface IFollow__Args {
31
+ activityType: string;
32
+ activityId: string;
33
+ }
34
+ export interface IFollow__ArgsArgs {
35
+ activityType: string;
36
+ activityId: string;
37
+ }
38
+ export declare const Follow__ArgsCodec: thrift.IStructCodec<IFollow__ArgsArgs, IFollow__Args>;
39
+ export declare class Follow__Args extends thrift.StructLike implements IFollow__Args {
40
+ activityType: string;
41
+ activityId: string;
42
+ readonly _annotations: thrift.IThriftAnnotations;
43
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
44
+ constructor(args: IFollow__ArgsArgs);
45
+ static read(input: thrift.TProtocol): Follow__Args;
46
+ static write(args: IFollow__ArgsArgs, output: thrift.TProtocol): void;
47
+ write(output: thrift.TProtocol): void;
48
+ }
49
+ export interface IUnfollow__Args {
50
+ activityType: string;
51
+ activityId: string;
52
+ }
53
+ export interface IUnfollow__ArgsArgs {
54
+ activityType: string;
55
+ activityId: string;
56
+ }
57
+ export declare const Unfollow__ArgsCodec: thrift.IStructCodec<IUnfollow__ArgsArgs, IUnfollow__Args>;
58
+ export declare class Unfollow__Args extends thrift.StructLike implements IUnfollow__Args {
59
+ activityType: string;
60
+ activityId: string;
61
+ readonly _annotations: thrift.IThriftAnnotations;
62
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
63
+ constructor(args: IUnfollow__ArgsArgs);
64
+ static read(input: thrift.TProtocol): Unfollow__Args;
65
+ static write(args: IUnfollow__ArgsArgs, output: thrift.TProtocol): void;
66
+ write(output: thrift.TProtocol): void;
67
+ }
68
+ export interface IIsFollowing__Args {
69
+ activityType: string;
70
+ activityId: string;
71
+ }
72
+ export interface IIsFollowing__ArgsArgs {
73
+ activityType: string;
74
+ activityId: string;
75
+ }
76
+ export declare const IsFollowing__ArgsCodec: thrift.IStructCodec<IIsFollowing__ArgsArgs, IIsFollowing__Args>;
77
+ export declare class IsFollowing__Args extends thrift.StructLike implements IIsFollowing__Args {
78
+ activityType: string;
79
+ activityId: string;
80
+ readonly _annotations: thrift.IThriftAnnotations;
81
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
82
+ constructor(args: IIsFollowing__ArgsArgs);
83
+ static read(input: thrift.TProtocol): IsFollowing__Args;
84
+ static write(args: IIsFollowing__ArgsArgs, output: thrift.TProtocol): void;
85
+ write(output: thrift.TProtocol): void;
86
+ }
87
+ export interface IIsAvailable__Result {
88
+ success?: boolean;
89
+ }
90
+ export interface IIsAvailable__ResultArgs {
91
+ success?: boolean;
92
+ }
93
+ export declare const IsAvailable__ResultCodec: thrift.IStructCodec<IIsAvailable__ResultArgs, IIsAvailable__Result>;
94
+ export declare class IsAvailable__Result extends thrift.StructLike implements IIsAvailable__Result {
95
+ success?: boolean;
96
+ readonly _annotations: thrift.IThriftAnnotations;
97
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
98
+ constructor(args?: IIsAvailable__ResultArgs);
99
+ static read(input: thrift.TProtocol): IsAvailable__Result;
100
+ static write(args: IIsAvailable__ResultArgs, output: thrift.TProtocol): void;
101
+ write(output: thrift.TProtocol): void;
102
+ }
103
+ export interface IFollow__Result {
104
+ success?: boolean;
105
+ }
106
+ export interface IFollow__ResultArgs {
107
+ success?: boolean;
108
+ }
109
+ export declare const Follow__ResultCodec: thrift.IStructCodec<IFollow__ResultArgs, IFollow__Result>;
110
+ export declare class Follow__Result extends thrift.StructLike implements IFollow__Result {
111
+ success?: boolean;
112
+ readonly _annotations: thrift.IThriftAnnotations;
113
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
114
+ constructor(args?: IFollow__ResultArgs);
115
+ static read(input: thrift.TProtocol): Follow__Result;
116
+ static write(args: IFollow__ResultArgs, output: thrift.TProtocol): void;
117
+ write(output: thrift.TProtocol): void;
118
+ }
119
+ export interface IUnfollow__Result {
120
+ success?: boolean;
121
+ }
122
+ export interface IUnfollow__ResultArgs {
123
+ success?: boolean;
124
+ }
125
+ export declare const Unfollow__ResultCodec: thrift.IStructCodec<IUnfollow__ResultArgs, IUnfollow__Result>;
126
+ export declare class Unfollow__Result extends thrift.StructLike implements IUnfollow__Result {
127
+ success?: boolean;
128
+ readonly _annotations: thrift.IThriftAnnotations;
129
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
130
+ constructor(args?: IUnfollow__ResultArgs);
131
+ static read(input: thrift.TProtocol): Unfollow__Result;
132
+ static write(args: IUnfollow__ResultArgs, output: thrift.TProtocol): void;
133
+ write(output: thrift.TProtocol): void;
134
+ }
135
+ export interface IIsFollowing__Result {
136
+ success?: boolean;
137
+ }
138
+ export interface IIsFollowing__ResultArgs {
139
+ success?: boolean;
140
+ }
141
+ export declare const IsFollowing__ResultCodec: thrift.IStructCodec<IIsFollowing__ResultArgs, IIsFollowing__Result>;
142
+ export declare class IsFollowing__Result extends thrift.StructLike implements IIsFollowing__Result {
143
+ success?: boolean;
144
+ readonly _annotations: thrift.IThriftAnnotations;
145
+ readonly _fieldAnnotations: thrift.IFieldAnnotations;
146
+ constructor(args?: IIsFollowing__ResultArgs);
147
+ static read(input: thrift.TProtocol): IsFollowing__Result;
148
+ static write(args: IIsFollowing__ResultArgs, output: thrift.TProtocol): void;
149
+ write(output: thrift.TProtocol): void;
150
+ }
151
+ export declare class Client<Context = any> extends thrift.ThriftClient<Context> {
152
+ static readonly serviceName: string;
153
+ static readonly annotations: thrift.IThriftAnnotations;
154
+ static readonly methodAnnotations: thrift.IMethodAnnotations;
155
+ static readonly methodNames: Array<string>;
156
+ readonly _serviceName: string;
157
+ readonly _annotations: thrift.IThriftAnnotations;
158
+ readonly _methodAnnotations: thrift.IMethodAnnotations;
159
+ readonly _methodNames: Array<string>;
160
+ readonly _methodParameters?: {
161
+ [methodName: string]: number;
162
+ };
163
+ isAvailable(activityType: string, activityId: string, context?: Context): Promise<boolean>;
164
+ follow(activityType: string, activityId: string, context?: Context): Promise<boolean>;
165
+ unfollow(activityType: string, activityId: string, context?: Context): Promise<boolean>;
166
+ isFollowing(activityType: string, activityId: string, context?: Context): Promise<boolean>;
167
+ }
168
+ export interface IHandler<Context = any> {
169
+ isAvailable(activityType: string, activityId: string, context?: Context): boolean | Promise<boolean>;
170
+ follow(activityType: string, activityId: string, context?: Context): boolean | Promise<boolean>;
171
+ unfollow(activityType: string, activityId: string, context?: Context): boolean | Promise<boolean>;
172
+ isFollowing(activityType: string, activityId: string, context?: Context): boolean | Promise<boolean>;
173
+ }
174
+ export declare class Processor<Context = any> extends thrift.ThriftProcessor<Context, IHandler<Context>> {
175
+ protected readonly _handler: IHandler<Context>;
176
+ static readonly serviceName: string;
177
+ static readonly annotations: thrift.IThriftAnnotations;
178
+ static readonly methodAnnotations: thrift.IMethodAnnotations;
179
+ static readonly methodNames: Array<string>;
180
+ readonly _serviceName: string;
181
+ readonly _annotations: thrift.IThriftAnnotations;
182
+ readonly _methodAnnotations: thrift.IMethodAnnotations;
183
+ readonly _methodNames: Array<string>;
184
+ constructor(handler: IHandler<Context>);
185
+ process(input: thrift.TProtocol, output: thrift.TProtocol, context: Context): Promise<Buffer>;
186
+ process_isAvailable(requestId: number, input: thrift.TProtocol, output: thrift.TProtocol, context: Context): Promise<Buffer>;
187
+ process_follow(requestId: number, input: thrift.TProtocol, output: thrift.TProtocol, context: Context): Promise<Buffer>;
188
+ process_unfollow(requestId: number, input: thrift.TProtocol, output: thrift.TProtocol, context: Context): Promise<Buffer>;
189
+ process_isFollowing(requestId: number, input: thrift.TProtocol, output: thrift.TProtocol, context: Context): Promise<Buffer>;
190
+ }